October 16, 2022

Система оповещения на базе TenderDuty v2

Tenderduty - это система оповещений и мониторинга сетей Tendermint.

Для проектов, в основе которых, блокчейном первого уровня используется Cosmos аптайм является одной из самых главных ролей для успешной работы и возможности избежать попадания в Jail. Согласны?)

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

В данном гайде будем использовать установку через Docker.

В гайде буду устанавливать систему оповещений на отдельный сервер, для большей безопасности, при этом нам потребуется открывать RPC порты(файл конфиг) у самой ноды для их взаимодействия.

Часть 1. Подготовка сервера

Обновляем репозитории и устанавливаем необходимые утилиты

sudo apt update && sudo apt upgrade -y
sudo apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y

Часть 2. Установка Docker

Устанавливаем одной командой

apt update && \
apt install apt-transport-https ca-certificates curl software-properties-common -y && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" && \
apt update && \
apt-cache policy docker-ce && \
sudo apt install docker-ce -y && \
docker --version
После установки должны увидеть следующее

Часть 3. Установка tenderduty

tmux new-session -s tenderduty
mkdir tenderduty && cd tenderduty
docker run --rm ghcr.io/blockpane/tenderduty:latest -example-config >config.yml
Снизу командной строки появилась такая зеленая полоса. Это нормально.
  • Скачиваем конфиг на русском языке и редактируем его(любезно позаимствовал у уважаемого Лесника)

При не отображении его в консоли, такое бывает при ошибке в nano. Открываем его через Mobaxtern Editor.

Выглядеть это будет следующим образом

Далее нам надо ввести данные своей сети и своего валидатора, а также конечной точки RPC. В данном примере, буду приводить к ноде HAQQ после обновления от 14.10.2022

  • имя сети: HAQQ
  • chain-id: haqq_54211-3
  • valoper address:<взять свой адрес валидатора>
  • Url: <адрес конечной точки PRC>, на 16 октября актуально http://142.132.202.50:11601/. Но вы можете создать свою или попросить рабочую в сообществе того проекта который ставите.

Итак, приступаем к редактированию файла конфига

Со строчки 51 приступаем, к замене данных на вышеприведенные, <валопер адрес> берем свой из ноды, на которую хотите поставить оповещение.

скрин со строчки 51

Переходим на строчку 110 и вбиваем туда свой адрес url конечной точки PRC

скрин со строчки 110

Важно, после проделанной работы заходим в файл config.toml вашей ноды и открываем порты в разделе RPC Server Configuration Options

laddr = "tcp://0.0.0.0:<ваш порт>

После настройки файла конфига производим запуск Tenderduty

docker run -d --name tenderduty -p "8888:8888" -p "28686:28686" --restart unless-stopped -v $(pwd)/config.yml:/var/lib/tenderduty/config.yml ghcr.io/blockpane/tenderduty:latest

Проверяем логи

docker logs -f --tail 20 tenderduty

Проверяем информацию в браузере

echo -e "\033[0;32mhttp://$(wget -qO- eth0.me):8888/\033[0m"

После этой команды вам высветится ваш адрес в формате <xxx.xxx.xxx.xxx:8888>, где все ххх будет адрес вашего сервера установки.

После всех проделанных процедур, вставляем данный адрес в браузерную строку. Вуаля!

Часть 4. Полезные команды

посмотреть запущенные контейнеры

docker ps

остановить контейнер

docker stop tenderduty

перезапустить контейнер

docker restart tenderduty

Спасибо за внимание!