Мониторинг нод
Телеграм канал о нодах и тестнетах: Kopeyka DAO
Мониторинг - неотъемлемая часть рабочего времени каждого нодраннера и не только. Сбои могут возникать не только у нод, но и у серверов - этот гайд как раз позволит сэкономить ваше время на мониторинге.
Использоваться будет связка технологий node_exporter + Prometheus + Grafana.
Как это работает
node_exporter - утилита, необходимая для сбора основных метрик о сервере и передаче их в базу данных Prometheus.
Prometheus - база данных для сбора метрик, в которую делает запросы Grafana.
Grafana - инструмент, предоставляющий очень гибкие возможности для визуализации собираемых метрик из различных баз данных.
Работает всё по такой схеме: есть некоторое количество ведомых серверов, на которых установлен node_exporter. Он в свою очередь отдаёт метрики по порту 9100 в Prometheus, который установлен на нашем ведущем сервере. Grafana, которая установлена так же на ведущем сервере, собирает данные из Prometheus и визуализирует их.
Настройка ведущего сервера
Установка Prometheus
Устанавливаем базу данных для сбора метрик на ведущий сервер.
wget https://github.com/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.linux-amd64.tar.gz && \tar xvf prometheus-2.28.1.linux-amd64.tar.gz && \rm prometheus-2.28.1.linux-amd64.tar.gz && \mv prometheus-2.28.1.linux-amd64 prometheus
Редактируем конфиг Prometheus, записываем все сервера, которые хотим мониторить.
sudo vim /etc/prometheus/prometheus.yml
Конфиг должен выглядеть следующим образом:
global: scrape_interval: 15s scrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] - job_name: "псевдоним_сервера" static_configs: - targets: ["айпи_сервера:9100"] - job_name: "псевдоним_сервера" static_configs: - targets: ["айпи_сервера:9100"]
Табуляцию соблюдаем обязательно!
Сохраняем файл и выходим из vim следующим образом:
Нажимаем esc, пишем :wq и нажимаем Enter
Выдаём права на исполнение файла Prometheus:
chmod +x /usr/bin/prometheus
sudo tee /etc/systemd/system/prometheus.service > /dev/null <<EOF [Unit] Description=Prometheus Server After=network.target [Service] User=prometheus Group=prometheus Type=simple Restart=on-failure ExecStart=/usr/bin/prometheus \\ --config.file=/etc/prometheus/prometheus.yml \\ --storage.tsdb.path=/etc/prometheus/data [Install] WantedBy=multi-user.target EOF
sudo systemctl daemon-reload && sudo systemctl enable prometheus && sudo systemctl restart prometheus
Важно! После каждого редактирования конфига Prometheus необходимо проводить перезапуск сервиса.
sudo systemctl restart prometheus
Установка Grafana
Grafana - утилита, предоставляющая очень гибкие возможности для визуализации собираемых метрик. Притом метрики Grafana может собирать с самых разных баз данных.
sudo apt-get install -y adduser libfontconfig1 && wget <https://dl.grafana.com/oss/release/grafana_8.0.6_amd64.deb> && sudo dpkg -i grafana_8.0.6_amd64.deb
sudo systemctl daemon-reload && sudo systemctl enable grafana-server && sudo systemctl restart grafana-server
Проверим логи на отсутствие ошибок:
sudo journalctl -fu grafana-server
Что нужно сделать в самой Grafana
Переходим в браузере по следующему URL-адресу, там находится сама Grafana:
При логине имя пользователя и пароль по умолчанию следующие:
После входа не забываем поменять пароль.
Добавление Prometheus в качестве источника данных
Выбираем Prometheus. Далее открывается конфиг, где в поле URL нужно указать адрес, по которому работает Prometheus:
Настройка ведомого сервера
На ведомый сервер устанавливается одна лишь утилита - node_exporter - утилита, необходимая для сбора основных метрик о сервере и передаче их в базу данных Prometheus.
wget -q -O node_exporter.sh https://raw.githubusercontent.com/KopeykaDAO/Nodes/refs/heads/main/monitoring/node_exporter.sh && sudo chmod +x node_exporter.sh && ./node_exporter.sh
После установки желательно проверить логи, дабы убедиться, что метрики действительно передаются:
sudo journalctl -u node_exporter.service -f
Настройка дашборда для визуализации метрик в Grafana
Во вкладке Dashboards нажимаем кнопку New.
Кнопка Create, флаг в руки, изучаем документацию, и поехали.
По ссылке находится json-конфиг подготовленного нами дашборда, вставляем его и импортируем.
Краткая навигация по дашборду:
На картине ниже слева - количество серверов: рабочие, упавшие и общее количество. В таблице показаны характеристики сервера и потребление ресурсов.
Далее идут графики потребления ресурсов - CPU, Ram и место на диске соответственно.
На следующих двух панелях показано общее состояние серверов. На зелёной - рабочие сервера, на красной - упавшие. Если на красной панели показан "0" - все сервера работают.
Есть ещё один дашборд, который мы используем.
https://raw.githubusercontent.com/rfmoz/grafana-dashboards/refs/heads/master/prometheus/node-exporter-full.json
Предназначен он для наиподробнейшего мониторинга одного сервера.
На картинке ниже показано, где выбирается сервер для мониторинга:
Заключение
Ведущий и ведомые сервера настроены. Теперь по адресу http://айпи_вашего_сервера:3000
вы можете мониторить работу всех своих серверов.
0x4C3EB159d7155f5f4B1d70E42BCD690a91a5cf4B