Мониторинг Ноды HydraDX

https://commonwealth.im/hydradx/proposal/discussion/1230-treasury-tip-request-lenox-noderunnerscom
Если Вам помогли мои своевременные переводы по проекту HydraDX, поддержите пожалуйста мою заявку на получение наград лайком и комментарием. Спасибо!

В этой главе мы проведем вас через настройку локального мониторинга для вашей Ноды валидатора.

Предпосылки

У вас должна быть запущена Нода валидатора.
Это руководство было протестировано на версии Ubuntu 20.04 LTS.

Установка Prometheus

На первом этапе мы настроим сервер Prometheus.

Пользователь и каталоги

Мы создаем пользователя только для целей мониторинга, у которого нет домашнего каталога и который не может использоваться для входа в систему.

sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus

Затем мы создаем каталоги для исполняемого файла и файла конфигурации.

sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus

Измените владельца каталогов, чтобы разрешить доступ к ним нашему новому пользователю мониторинга.

sudo chown -R prometheus:prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /var/lib/prometheus

Установим Prometheus

Проверьте номер последней версии Prometheus на странице проекта в GitHub.
На момент написания данной стать актуальная версия v2.25.2. Вставьте ссылку с последней версией в следующие команды.

скачайте prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.25.2/prometheus-2.25.2.linux-amd64.tar.gz

распакуйте архив с бинарными файлами
tar xfz prometheus-*.tar.gz

войдите в распакованную директорию
cd prometheus-2.25.2.linux-amd64

Теперь скопируйте двоичные файлы в локальную папку.

sudo cp ./prometheus /usr/local/bin/
sudo cp ./promtool /usr/local/bin/

Теперь нам нужно назначить эти двоичные файлы нашему только что созданному пользователю.

sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool

Далее мы скопируем веб-интерфейс и предустановки конфигурации.

sudo cp -r ./consoles /etc/prometheus
sudo cp -r ./console_libraries /etc/prometheus

Возможно, вы уже догадались, но мы также меняем владельца этих каталогов.

sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries

Теперь у нас есть все, что нам нужно из загруженного архива, поэтому мы вернемся на шаг назад и проведем некоторую чистку.

cd .. && rm -rf prometheus*

Давайте создадим файл конфигурации YAML для Prometheus с помощью редактора по вашему выбору (nano / vim / pico).

sudo nano /etc/prometheus/prometheus.yml

Наш конфигурационный файл разделен на три раздела:

  • global: устанавливает значения по умолчанию для scrape_interval и интервала выполнения правила с evaluation_interval
  • rule_files: указывает файлы правил, которые должен загружать сервер Prometheus
  • scrape_configs: здесь вы устанавливаете ресурсы для мониторинга

Он будет у нас очень простым и в итоге получим что-то вроде этого:

global:
    scrape_interval: 15s
    evaluation_interval: 15s

rule_files:
    # - "weHaveNo.rules"

scrape_configs:
    - job_name: "prometheus"
    scrape_interval: 5s
    static_configs:
        - targets: ["localhost:9090"]
    - job_name: "substrate_node"
    scrape_interval: 5s
    static_configs:
        - targets: ["localhost:9615"]

Первое задание по очистке экспортирует данные самого Prometheus, второе - метрики узла HydraDX. Мы скорректировали scrape_interval обоих заданий, чтобы получить более подробную статистику. Это переопределит глобальные значения. Параметр targets в static_configs устанавливает, на каком порту запускаются экспортеры, здесь мы придерживаемся значений по умолчанию.

После сохранения конфигурации мы снова сменим владельца.

sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml

Запуск Prometheus

Чтобы Prometheus запускался автоматически и работал в фоновом режиме, мы будем использовать systemd. Создайте новую конфигурацию (опять же с выбранным вами редактором):

sudo nano /etc/systemd/system/prometheus.service

Вставьте следующую конфигурацию и сохраните файл.

[Unit]
  Description=Prometheus Monitoring
  Wants=network-online.target
  After=network-online.target

[Service]
  User=prometheus
  Group=prometheus
  Type=simple
  ExecStart=/usr/local/bin/prometheus \
  --config.file /etc/prometheus/prometheus.yml \
  --storage.tsdb.path /var/lib/prometheus/ \
  --web.console.templates=/etc/prometheus/consoles \
  --web.console.libraries=/etc/prometheus/console_libraries
  ExecReload=/bin/kill -HUP $MAINPID

[Install]
  WantedBy=multi-user.target

Далее мы выполним следующие три шага: systemctl deamon-reload загружает новые конфигурации и обновляет существующие systemctl enable активирует нашу новую службу systemctl start запускает выполнение службы.

Вы можете выполнить описанные выше шаги одной командой, выполнив:

sudo systemctl daemon-reload && systemctl enable prometheus && systemctl start prometheus

Теперь у вас должен быть доступ к веб-интерфейсу Prometheus по адресу http://localhost:9090/.

Node Exporter

Мы установим Node Exporter для очистки метрик сервера, которые будут использоваться в панели инструментов.
Пожалуйста, проверьте номер версии последнего выпуска здесь и обновите команду.
На момент написания последней версии была 1.1.2.

Установка Node Exporter

Загрузите последнюю версию.

wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz

Распакуйте только что скачанный архив. Это создаст папку с именем node_exporter-1.1.2.linux-amd64.

tar xvf node_exporter-1.1.2.linux-amd64.tar.gz

Затем мы копируем двоичный файл в наш локальный каталог приложения и назначаем его нашему пользователю мониторинга.

# копируем двоичный файл
cp node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin

# назначем для него пользователя и группу
sudo chown prometheus:prometheus /usr/local/bin/node_exporter

Теперь мы можем выполнить некоторую очистку и удалить загруженный и распакованный пакет.

rm -rf node_exporter*

Создание службы Systemd

Как и в случае с prometheus, мы хотим, чтобы Node Exporter работал в качестве службы.
Создайте службу systemd с помощью выбранного вами редактора.

sudo nano /etc/systemd/system/node_exporter.service

И вставьте в него следующую конфигурацию.

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

Теперь мы активируем и запустим службу командой в одну строку.

sudo systemctl daemon-reload && systemctl enable node_exporter && systemctl start node_exporter

Добавление задания очистки для Node Exporter

Теперь Node Exporter запущен и работает, но нам нужно сказать Prometheus, чтобы он очистил свои данные.
Мы снова откроем файл конфигурации с помощью выбранного редактора.

sudo nano /etc/prometheus/prometheus.yml

А в самом низу файла мы добавим еще один конфиг для очистки.
Вставьте следующее содержимое и сохраните файл.

- job_name: 'node_exporter'
  scrape_interval: 5s
  static_configs:
    - targets: ['localhost:9100']

Для применения конфигурации изменений требуется перезапуск службы Prometheus.

sudo systemctl restart prometheus.service 

Метрики вашего сервера теперь очищены и могут быть найдены в веб-интерфейсе Prometheus.
Они нам понадобятся позже для нашей панели.

Установка Grafana

Мы можем видеть наши метрики в веб-интерфейсе, но не так, как мы хотим их отслеживать.
Мы хотим, чтобы это было красиво и лаконично. Вот где в игру вступает Grafana.

Установим Grafana

Пожалуйста, проверьте последнюю версию Grafana по этой ссылке.
Вы можете изменить номер версии в следующих командах или скопировать команды установки прямо из ссылки.
На момент написания последней версии была 7.5.1.

sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_7.5.1_amd64.deb
sudo dpkg -i grafana_7.5.1_amd64.deb

Пакет поставляется со встроенной службой systemd, которую мы настроим и запустим так же, как службу Prometheus.

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

Доступ к веб-интерфейсу Grafana

Мы сможем открыть веб-интерфейс Grafana по адресу http://localhost:3000/.
Логин Grafana по умолчанию:
Пользователь: admin
Пароль: admin

Настройка источника данных

Пожалуйста, нажмите на значок настроек в меню и выберите источники данных.
В следующем окне вы нажимаете «Добавить источник данных» и выбираете «Прометей».

В следующей форме вам не нужно ничего менять, кроме URL-адреса.
Установите http://localhost:9090/ и нажмите «Save and Test».

Импорт панели инструментов

Нажмите кнопку "Плюс" на главной панели навигации и выберите «import».

Мы будем использовать панель управления HydraDX, и для ее загрузки вы просто вводите идентификатор 14158 и нажимаете кнопку «Load».

Здесь вам не нужно много настраивать, просто убедитесь, что Prometheus используется в качестве источника данных.
Теперь вы можете завершить импорт.

Теперь вы должны сразу увидеть свою панель управления.
Если некоторые панели пусты, убедитесь, что ваш выбор над панелями выглядит следующим образом:

  • Chain Metrics: Substrate
  • Chain Instance: localhost:9615
  • Server Job: node_exporter
  • Server Host: localhost:9100

перевод сделан с оригинальной статьи

PS

Я участвую в проекте в качестве валидатора (держу Ноду), а также помогаю команде и проекту переводя официальную документацию https://docs.hydradx.io/ на русский язык. Я публикую ее на форуме в удобном формате, а также мой перевод добавляют в русскую ветку официальной документации https://docs.hydradx.io/ru/. Переводы постоянно поддерживаются в актуальном состоянии.

Если перевод помогает Вам лучше понять проект и освоить его тонкости, значит работа проделана не зря!

Если вы являетесь держателем токенов HDX и хотите их номинировать, то в качестве одной из Нод Валидаторов могу предложить свою - LENOX | NODERUNNERS.COM

7J9hiaAK51cyDFZkUon4aPSfPGgUPuT1KDBWANeCF4j5avz2

Обязательно проверяйте заполненность Валидаторов перед номинированием (не более 64 номинаторов. Если будет больше - то приоритет будет у тех у кого больше стейк), а также не забывайте номинировать в несколько Валидаторов одновременно (до 16 штук)

1 симпатия