Для чего нужен node_exporter
node_exporter - это сервис, для экспорта данных о состоянии сервера в систему мониторинга Prometheus.
К Prometheus можно подключить Grafana, чтобы построить наглядные графики и собрать их в удобные дешборды.
Вы так же можете настроить оповещения при возникновении критичных событий: с помощью alertmanager или самой Grafana.
На текущий момент связка node_exporter + Prometheus + Grafana - одно из наиболее популярных решений для мониторинга инфраструктуры.
Установка
Скачайте и распакуйте дистрибутив
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar xvzf node_exporter-1.3.1.linux-amd64.tar.gz
mkdir -p /opt/node_exporter/
mv node_exporter-1.3.1.linux-amd64 /opt/node_exporter/
chown root:root -R /opt/node_exporter/
Скачайте конфигурационные файлы и настройте скрипты запуска
Добавьте скрипт настройки правил фаервола, чтобы разрешить доступ на порт node_exporter
#!/bin/bash if [ "$1" = "/etc/init.d/firewall" -a "$2" = start ]; then # Порт node_exporter while iptables -D INPUT -i eth0 -p tcp -s 0.0.0.0/0 --dport 9100 -m state --state NEW -j ACCEPT 2>/dev/null; do :; done iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 9100 -m state --state NEW -j ACCEPT fi exit 0
Скачайте скрипт запуска node_exporter и файл с параметрами запуска:
wget wget
Сделайте скрипт запуска исполняемым:
chmode a+x /etc/init.d/node_exporter
Настройте автозапуск сервиса при загрузке системы и запустите его
chkconfig node_exporter on --level 235 service node_exporter start
Проверьте, что node_exporter отдаёт метрики
Метрики отдаются по протоколу http, Достаточно запросить страничку "metrics". Это можно сделать утилитой curl:
curl -sS localhost:9100/metrics
Вывод будет примерно следующий:
[root@cb5sr185-127 tmp]# curl -sS localhost:9100/metrics | grep node_cpu # HELP node_cpu_guest_seconds_total Seconds the CPUs spent in guests (VMs) for each mode. # TYPE node_cpu_guest_seconds_total counter node_cpu_guest_seconds_total{cpu="0",mode="nice"} 0 node_cpu_guest_seconds_total{cpu="0",mode="user"} 0 node_cpu_guest_seconds_total{cpu="1",mode="nice"} 0 node_cpu_guest_seconds_total{cpu="1",mode="user"} 0 # HELP node_cpu_seconds_total Seconds the CPUs spent in each mode. # TYPE node_cpu_seconds_total counter node_cpu_seconds_total{cpu="0",mode="idle"} 147329.18 node_cpu_seconds_total{cpu="0",mode="iowait"} 4354.51 node_cpu_seconds_total{cpu="0",mode="irq"} 27.21 node_cpu_seconds_total{cpu="0",mode="nice"} 149.38 node_cpu_seconds_total{cpu="0",mode="softirq"} 1764.22 node_cpu_seconds_total{cpu="0",mode="steal"} 54.95 node_cpu_seconds_total{cpu="0",mode="system"} 27773.5 node_cpu_seconds_total{cpu="0",mode="user"} 175396.76 node_cpu_seconds_total{cpu="1",mode="idle"} 147674.88 node_cpu_seconds_total{cpu="1",mode="iowait"} 1637.77 node_cpu_seconds_total{cpu="1",mode="irq"} 0 node_cpu_seconds_total{cpu="1",mode="nice"} 152.2 node_cpu_seconds_total{cpu="1",mode="softirq"} 1721.42 node_cpu_seconds_total{cpu="1",mode="steal"} 52.67 node_cpu_seconds_total{cpu="1",mode="system"} 28116.68 node_cpu_seconds_total{cpu="1",mode="user"} 177633.25