С чего начать Первые шаги трек · 15 ступеней
Linux Labs
К статье

node_exporter: метрики машины для Prometheus

шпаргалка · Ubuntu 24.04 · node_exporter 1.7 https://lab.dimsanych.ru/ru/wiki/node-exporter/

Шпаргалка

  • sudo systemctl enable --now prometheus-node-exporter включить
  • systemctl status prometheus-node-exporter жива ли служба
  • ss -tlnp | grep 9100 где слушает
  • curl -s localhost:9100/metrics | less всё, что отдаёт
  • curl -s localhost:9100/metrics | grep -c '^node_' число значений
  • curl -s localhost:9100/metrics | grep MemAvailable одна метрика
  • curl -s localhost:9100/metrics | promtool check metrics формат
  • sudo systemctl restart prometheus-node-exporter после правки ARGS

Конфигурация

Ключи запуска

Настроек в файле у экспортёра нет — только ключи командной строки. Служба берёт их из переменной ARGS в /etc/default/prometheus-node-exporter; в пакете она пустая (ARGS=""), то есть всё по умолчанию:

bash
# /etc/default/prometheus-node-exporter
ARGS="--web.listen-address=127.0.0.1:9100 --no-collector.zfs"

После правки — sudo systemctl restart prometheus-node-exporter. reload здесь не годится: см. node-exporter. Все ключи с описаниями — prometheus-node-exporter --help.

Адрес и порт

По умолчанию экспортёр слушает порт 9100 на всех адресах машины:

text
$ ss -tlnp | grep 9100
LISTEN 0  4096  *:9100  *:*  users:(("prometheus-node",pid=1178,fd=3))

Адрес и порт задаёт ключ --web.listen-address. Его ставят в ARGS файла /etc/default/prometheus-node-exporter или в дополнении службы (sudo systemctl edit prometheus-node-exporter → файл /etc/systemd/system/prometheus-node-exporter.service.d/override.conf, где строка ExecStart= заменяет команду запуска). Где ключ задан на самом деле:

  • systemctl cat prometheus-node-exporter — юнит вместе с дополнениями, у каждого файла — строка # /путь;
  • systemctl status prometheus-node-exporter — в строке CGroup под номером процесса видна вся команда с ключами;
  • ss -tlnp | grep prometheus-node — какой порт слушает сейчас.

Пароля и шифрования нет: кто достучался до порта, тот видит метрики. --web.listen-address=127.0.0.1:9100 оставляет доступ только с самой машины — тогда Prometheus с другой машины получит connection refused. Если Prometheus живёт на другой машине, экспортёр слушает её внешний адрес, а порт в firewall открыт только для адреса Prometheus.

Метрики — только по пути /metrics. На любой другой путь экспортёр отвечает HTML-страницей с кодом 200, и Prometheus с неверным metrics_path пишет в lastError expected a valid start token, got "<" (prometheus).

Загрузка…