Мониторинг состояния валидатора с помощью Zabbix в блокчейне HAQQ IslamicCoin ISLM.
Наше криптосообщество принимает участие в конкурсе витнессов блокчейна HAQQ, для которого мы написали подробную статью-руководство. Пожалуйста, поддержите эту статью, поставьте лайк, сделайте репост, прокомментируйте и отправьте своим друзьям и партнерам.
Поддержите нашего витнесса Buraq!
Мы запустили тестовую сеть witness в сети IslamicCoin ISLM. Бурак - таинственное животное из Священного Корана. Голосуйте за нашего витнесса, делегируйте токены, и давайте сделаем его главным сетевым валидатором!
https://testnet.manticore.team/haqq/staking/haqqvaloper1cnwjx9r4q6d06jnudhzx9eadx4g8sq8hhw0jk7
Общая информация
Zabbix (https://zabbix.com)- это программное обеспечение с открытым исходным кодом для построения систем мониторинга ИТ-инфраструктуры. Встроенные инструменты с возможностями гибкой настройки позволяют создать набор необходимых параметров, отслеживать их динамику и генерировать оповещения в случае превышения критических границ.
Для простоты понимания работы, будем считать, что у вас уже есть сервер Zabbix и zabbix-agent установлен на сервере узла. Если он еще не доступен, инструкции по установке и настройке можно найти на официальном сайте: https://www.zabbix.com/download.
В этом руководстве используется Zabbix версии 5.2.2. Для других версий Zabbix действия аналогичны.
Статус ноды (узла)
Статус рабочего узла может быть получен с помощью команды:
curl localhost:26657/status
Результатом выполнения команды является блок json:
В полученной информации значения “latest_block_height”, “latest_block_time” и “catching_up” важны для мониторинга. Основная задача - следить за тем, чтобы узел не пропускал блоки и не отставал от сети. Отставание более чем на 50 блоков приводит к попаданию в тюрьму.
Вы можете проверить этап на основе данных, полученных из RPC explorer: https://haqq-t.rpc.manticore.team/status
Настройка zabbix-агента
Настройка синтаксического анализа json с помощью Zabbix будет состоять из следующих шагов:
1. Передаем всю строку json в ее исходном виде элементу в Zabbix.
2. С помощью зависимого элемента получаем отдельные элементы с необходимыми значениями.
3. Используем полученные значения по прямому назначению.
Давайте создадим скрипт для получения статуса узла /etc/zabbix/scripts/valoperstatus.sh с содержанием:
#!/bin/bash curl localhost:26657/status -s -H "Accept: application/json"
здесь команда curl дополняется параметрами, чтобы ее выходные данные не содержали лишних строк и могли быть проанализированы на сервере Zabbix.
Получение данных в Zabbix строится с использованием указателя пользовательского параметра.
Создаем файл /etc/zabbix/zabbix_agentd.d/haqq.conf со следующим содержимым:
UserParameter=valoperstatus,/etc/zabbix/scripts/valoperstatus.sh
не забудьте присвоить статус исполняемому файлу
chmod +x /etc/zabbix/scripts/valoperstatus.sh
Сохраните и перезапустите zabbix-agent:
systemctl restart zabbix-agent
Проверяем, что json правильно передается в нужной форме, без ошибок и других проблем:
zabbix_agentd -t valoperstatus
На выходе должен быть тот же json. На этом настройка zabbix-agent завершена, теперь мы настроим сервер Zabbix.
Настройка сервера Zabbix
На сервере мы создаем шаблон Haqq Veloper и добавляем к нему элемент Variopedatus с ключом состояния valu operer:
Этот элемент запросит zabbix-agent и получит блок json. Вы можете проверить работу в разделе последние данные:
Записи в форме должны отображаться следующим образом:
Далее нам нужно проанализировать этот блок json, чтобы получить из него нужные нам значения. Создание нового элемента данных с типом “Dependent” (Зависимый элемент) и вызов его latest_block_height:
На вкладке Предварительная обработка создайте правило синтаксического анализа. Выберите JSONPath и параметр
$.result.sync_info.latest_block_height
Проверяем, что начали поступать данные о значении latest_block_height:
Аналогично, мы создаем элемент данных для параметра catching_up:
Проверяем, что теперь сервер Zabbix получает все необходимые параметры от нашего узла:
Следующий шаг - настроить получение значения latest_block_height из RPC explorer. Для этого создается элемент haqq-t.rpc.manticore.team с типом HTTP-агента и URL-адресом https://haqq-t.rpc.manticore.team/status . Установите тип полученных данных в текстовом виде.
Затем, по аналогии, мы создаем зависимый элемент rpc.latest_block_height с предварительной обработкой:
Теперь сервер получает значения latest_block_height как от нашего сервера, так и от RPC explorer. Осталось создать триггеры для уведомления о невыполненной работе и изменении статуса параметра catching_up.
Создайте триггер delta_latest_block_height и введите выражение в разделе "Выражение":
{Haqq Valoper:rpc.latest_block_height.last()}-{Haqq Valoper:latest_block_height.last()}>10
в этой формуле сравниваются значения latest_block_height на сервере и в RPC explorer. Если оно превышает 10, генерируется предупреждение администратора.
Другой триггер проверит изменение статуса catching_up. Давайте вызовем триггер catching_up и зададим формулу:
{Haqq Valoper:catching_up.last()}=”true”
Скриншот триггера catching_up:
На этом создание мониторинга узла завершается с использованием ключей latest_block_height и catching_up. В случае изменения этих параметров администратор получит уведомление и своевременно отреагирует.
Все самое интересное и полезное на тему блокчейна, криптовалют, исламских финансов и халяльных инвестиций в нашем Телеграм-чате.