Мониторинг Ноды
В этой главе мы проведем вас через настройку локального мониторинга для вашей Ноды валидатора.
Предпосылки
У вас должна быть запущена Нода колатора. Это руководство было протестировано на версии 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
: указывает файлы правил, которые должен загружать сервер Prometheusscrape_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
Затем мы копируем двоичный файл в наш локальный каталог приложения и назначаем его нашему пользователю мониторинга.
# copy binary
$ cp node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin
# set ownership
$ 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

Configuring the Datasource
Пожалуйста, нажмите на значок настроек в меню и выберите источники данных. В следующем окне вы нажимаете "Add Datasource" и выбираете "Prometheus".
В следующей форме вам не нужно ничего менять, кроме URL-адреса.
Установите http://localhost:9090/
и нажмите Save and Test
.

Настройка источника данных
Нажмите кнопку Plus
на главной панели навигации и выберите import
.

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

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

Теперь вы должны сразу увидеть свою панель управления. Если некоторые панели пусты, убедитесь, что ваш выбор над панелями выглядит следующим образом:
Chain Metrics
: SubstrateChain Instance
: localhost:9615Server Job
: node_exporterServer Host
: localhost:9100