Без паники. Настройка системы уведомлений PANIC.
Никто не станет спорить, что в космосе аптайм первое дело. Сегодня рассмотрим настройку системы мониторинга и уведомлений Panic. В конечном итоге получим дивную систему уведомлений в телеграм о том что нода (космос) офлайн/пропускает блоки/ залетела в тюрьму и т.д.
Процедуру нельзя назвать сильно увлекательной, но в итоге мы получаем довольно мощный инструмент, так что оно стоит потраченного времени. Ставить можно куда угодно, хоть на домашний компьютер, но все-таки предпочтительней vps.
Шаг 0. Докер
После недавнего форка, и переезда проекта на докер никаких сложностей быть не должно. Проверяем наличие установленного докера:
docker --version docker compose --version
Если в ответ ничего то ставим докер, подробно расписывать смысла не вижу, приведу просто список команд:
sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ (lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
После чего опять смотрим версию докера ☝️
Шаг 1. Panic
# Clone the panic repository and navigate into it git clone https://github.com/SimplyVC/panic cd panic
Вся процедура настройки на этом этапе сводится к тому чтобы указать IP адрес с которого будет производиться дальнейшая настройка через web UI.
Смотрим свой IP, и записываем/запоминаем адрес (понадобится дальше, запомним его как IP)
curl ifconfig.me
после чего вносим изменения в файл .env
UI_ACCESS_IP=1.1.1.1 # здесь пишем свой IP полученный ранее
Шаг 2. Содаем telegram бота
Система предусматривает целый букет уведомлений, включая уведомления в telegram, slack, звонки на телефон через несколько различных сервисов. Остановимся на первом, при желании дальнейшие способы добавляйте сами.
Пожалуй, это самая мудреная часть всего процесса. Чтобы создать бота, добавьте @BotFather в телеграм, нажмите старт и следуйте инструкциям, а именно:
- Отправьте команду /newbot и укажите необходимые детали, включая название бота и имя пользователя, инструктируют достаточно подробно
- Запишите токен API который вам выдадут (выглядит как:
111111:AAA-AAA111111-aaaaa11111) - @BotFather выдаст ссылку на вашего бота вида
t.me/<username>, перейдите по ней и нажмите Start - Перейдите по ссылке
api.telegram.org/bot<token>/getUpdates, заменив<token>на токен полученный ранее. По ссылке обнаружится ваша переписка с ботом, которая будет состоять из одного сообщения/start, если вдруг там ничего не будет, напишите своему боту еще что-то и обновите страницу. - Из этого текста необходимо выудить
chat ID. Ищем значение"id"и записываем его.
Шаг 3. Запускаем
Логинимся на сервер на котором ставили Panic если вышли, переходим в каталог panic если не там и запускаем
docker compose up -d --build
Докер скачает все что надо и сбилдит. Просто наблюдаем и ничего не трогаем до тех пор пока не увидим что процесс завершен и контейнеры запущены. Проблем быть не должно, но если вдруг что-то пошло не по плану, останавливаем через Ctrl+C и перезапускаем процесс билда:
docker-compose kill docker system prune -a --volumes docker-compose up -d --build
В конечном итоге должно получиться что-то вроде
Теперь остается последнее, настроить параметры мониторинга.
Шаг 4. Конфигурация ноды
В этом месте, возможно, какие-то моменты покажутся непонятными. Не расстраиваемся, возвращаемся и вдумчиво перечитываем. Как я уже говорил раньше, самые простые вещи сложнее всего объяснять ). Итак.
Вспоминаем имя пользователя и пароль из файла .env + IP полученный на первом шаге (curl ifconfig.me) Переходим в браузере по адресу https://<ваш_ip>:8000 (вас предупредят о небезасности посещения таких мест и оно и понятно, сертификат подписан неизвестно кем, ищем как пройти все-таки по ссылке), и если все было сделано правильно то лицезреем такую картину
Логинимся с теми данными которые писали в .env и попадаем на страницу конфигурирования уведомлений
Опять же заполняем поля данными полученными в шаге 2, и выставляем типы уведомлений (Info, Warning, Critical, Error), после чего проверяем работоспособность кнопкой Test. Если все правильно, видим уведомление подтверждающее этот факт и добавляем конфигурацию кнопкой Add и продолжаем кнопкой Next внизу страницы.
Далее создаем новую конфигурацию космос ноды
Задаем понятное имя и видим страницу конфигурирования ноды, которую, собственно, будем мониторить
Здесь довольно сложно объяснить не скатившись в путаницу. Все уже должны знать это наизусть, но все-таки пройду по значениям портов, IP не обсуждаем (получили еще в шаге 1) :
- Cosmos Rest Server - по умолчанию порт 1317, смотрим конфиг
app.toml(строка 114) либоss -tulpn, заканчивается на 317 - Prometheus Endpoint - по умолчанию 26660, смотрим конфиг
config.toml(строка 419 ), либоss -tulpnзаканчивается на 660. Включается там же (416 строкаprometheus = true) - Node Exporter - у меня отсутствует, назначение неизвестно, можно поставить руками, значение тоже добываем сами
- Tendermint RPC - классический RPC порт, по умолчанию 26657, смотрим
config.toml(строка 91,ip = 0.0.0.0), либоss -tulpn,заканчивается на 657 - Operator Address - valoper адрес валидатора
Все переключатели включены, возле кажого поля кнопка Test, тестируем пока все значения не окажутся верными, иначе алерты не заработают. После того как все установлено, добавляем ноду кнопкой Add Node, включаем/выключаем Monitor Network (о назначении переключателя написано) и идем дальше
на следующей странице настройки монитора гитхаб, уведомения об изменения в произвольном репо (можно пропустить)
Докер хаб (аналогично, можно пропустить)
Выбираем бота в который будут уведомлять, если их несколько можно добавить несколько
Следующая страница с настройками таймингов самая нудная. Именно здесь настраиваются все параметры мониторинга: количество пропущенных блоков прежде начинается паника, через какой промежуток времени валидатор считается недоступным. Параметров довольно много, запаситесь терпением. Многие значения можно оставить по умолчанию, либо если вы понимаете о чем идет речь, настройте самые важные.
В конечном итоге, добираемся до заветной кнопки Done и на этом настройка завершена.
Для проверки работоспособности системы оставливаем ноду и начинаем получать WARN'ы в бота
Читаем уведомления и поздравляем себя с настройкой такого полезного инструмента 🕺💃
Всем спасибо, надеюсь пост не раз спасет вашу ноду от тюрьмы и прочих бед.
P.S. Текст написан за один заход, ошибки неизбежны, пишите мне в ТГ @ryssroad все исправим и разберемся.