December 19, 2024

Мониторинг нод

Телеграм канал о нодах и тестнетах: 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

Запускаем службу Grafana:

sudo systemctl daemon-reload && sudo systemctl enable grafana-server && sudo systemctl restart grafana-server

Проверим логи на отсутствие ошибок:

sudo journalctl -fu grafana-server

Что нужно сделать в самой Grafana

Вход в личный кабинет

Переходим в браузере по следующему URL-адресу, там находится сама Grafana:

http://<айпи_ведущего_сервера>:3000

При логине имя пользователя и пароль по умолчанию следующие:

Имя пользователя: admin

Пароль: admin

После входа не забываем поменять пароль.


Добавление Prometheus в качестве источника данных

На главной странице нажимаем “Add your first data source”

Выбираем Prometheus. Далее открывается конфиг, где в поле URL нужно указать адрес, по которому работает Prometheus:

http://<айпи_ведущего_сервера>:9090

Здесь нужно указать 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.

Нажимаем на Import.

Есть желание сделать свой?

Кнопка Create, флаг в руки, изучаем документацию, и поехали.

По ссылке находится json-конфиг подготовленного нами дашборда, вставляем его и импортируем.

В это поле нужно вставить json

Краткая навигация по дашборду:

На картине ниже слева - количество серверов: рабочие, упавшие и общее количество. В таблице показаны характеристики сервера и потребление ресурсов.

Далее идут графики потребления ресурсов - CPU, Ram и место на диске соответственно.

На следующих двух панелях показано общее состояние серверов. На зелёной - рабочие сервера, на красной - упавшие. Если на красной панели показан "0" - все сервера работают.

Есть ещё один дашборд, который мы используем.

https://raw.githubusercontent.com/rfmoz/grafana-dashboards/refs/heads/master/prometheus/node-exporter-full.json

Предназначен он для наиподробнейшего мониторинга одного сервера.

На картинке ниже показано, где выбирается сервер для мониторинга:

Заключение

Ведущий и ведомые сервера настроены. Теперь по адресу http://айпи_вашего_сервера:3000 вы можете мониторить работу всех своих серверов.

Сказать спасибо:

0x4C3EB159d7155f5f4B1d70E42BCD690a91a5cf4B

KopeykaDAO | KopeykaDAO chat