Мониторим за нодами с использованием Panic Bot
Сегодня я научу вас, как установить простенького бота для мониторинга своих нод (работоспособность ноды, активного валидатора и состояния сервера)
Panic Бот! Не использует много ресурсов, поэтому можно установить на самый простой сервер, например: Hetzner - CPX11
Подготовка сервера
sudo apt update && sudo apt upgrade -y
Проверяем наличие Python3 на вашем сервере. В большинстве дистрибутивов Python предустановлен изначально
python3 --version
Устанавливаем PIP Package Manager и Redis Database Server
sudo apt-get install python3-pip redis-server -y
Устанавливаем Pipenv Packaging Tool
sudo pip3 install pipenv sudo systemctl enable redis-server.service
Установка Panic!
mkdir /opt/panic
Переходим в папку и клонируем репозиторий
cd /opt/panic/ git clone https://github.com/SimplyVC/panic_cosmos.git cd panic_cosmos git checkout master
Обновляем пакеты и запускаем настройку Panic!
pipenv update pipenv run python run_setup.py
Придумываем любое название и нажимаем Enter.
Настройка телеграм бота
Настраиваем оповещения в телеграм, нажав Y
Далее нам необходимо ввести API token. Для его получения выполняем следующие действия:
- Заходим в телеграм
- В поиске вводим @BotFather, переходим в бота и нажимаем Start
- Используем команду /newbot для создания бота, вводим название бота и юзернейм. Юзернейм должен заканчиваться на bot (например haqq_bot). После этого BotFather отправит сообщение с ссылкой на нашего бота и API токеном. Копируем API токен и сохраняем в блокнот
- Переходим по ссылке в чат своего бота и нажимаем Start
- Переходим по ссылке api.telegram.org/bot<token>/getUpdates, заменяя <token> на API токен вашего бота из предыдущего шага. Копируем ваш id и сохраняем в блокнот
Теперь, когда у нас есть бот, API токен и чат ID, возвращаемся в терминал и продолжаем настройку Panic!
Далее Panic! cпросит необходимы ли другие оповещения (e-mail, телефонные звонки или периодические оповещения). Так как мы настраиваем только телеграм бота, на три запроса отвечаем n
Настраиваем команды для телеграм бота:
Настройка Redis
Для настройки Redis будем использовать значения по умолчанию:
Нажимаем Y и три раза Enter, оставляя все 3 строчки пустыми.
Тестируем работу Redis, нажимая Y
Подключение ноды к мониторингу
Переходим на сервер с нодой, которую хотим подключить к боту и вносим изменения в конфиг файл. Для примера буду использовать ноду Haqq. Для подключения к другим нодам используйте свой путь к конфиг файлу (обычно - $HOME/.название_проекта/config/config.toml)
nano ~/.haqqd/config/config.toml
Но можно и ручками конечно же)
В блоке RPC Server Configuration Options есть параметр: laddr, меняем его на:
laddr = "tcp://0.0.0.0:26657"
Сохраняем изменения сочетанием клавиш: Ctrl + X > Y > Enter
sudo systemctl restart haqq
Вносим данные изменения в конфиг файлы всех нод, которые хотим мониторить.
Возвращаемся на сервер с Panic!
Вводим название ноды и RPC url в формате http://NODE_IP:26657, подтверждаем, что нода является валидатором. Также, можно сразу добавить другие ноды, но мы сделаем это позже.
Также, пропускаем настройку Github обновлений. Сделаем это чуть позже.
Запуск Panic!
printf "[Unit] Description=P.A.N.I.C. After=network.target StartLimitIntervalSec=0 [Service] Type=simple Restart=always User=$USER TimeoutStopSec=90s WorkingDirectory=/opt/panic/panic_cosmos ExecStart=/usr/local/bin/pipenv run python /opt/panic/panic_cosmos/run_alerter.py [Install] WantedBy=multi-user.target" > /etc/systemd/system/panic.service
Запускаем сервис и проверяем логи:
sudo systemctl daemon-reload && sudo systemctl enable panic && sudo systemctl start panic && sudo journalctl -u panic -f
Добавление нод для мониторинга
На сервере с нодой, которую хотим подключить к боту вносим изменения в конфиг файл.
В блоке RPC Server Configuration Options есть параметр: laddr, меняем его на:
laddr = "tcp://0.0.0.0:26657"
Сохраняем изменения сочетанием клавиш: Ctrl + X > Y > Enter
sudo systemctl restart name.service
Name.service меняем на ваш сервис с запуском ноды.
Возвращаемся на сервер с Panic! Редактируем файл user_config_nodes.ini
nano /opt/panic/panic_cosmos/config/user_config_nodes.ini
Копируем все имеющиеся строки и вставляем ниже. Изменяем номер, имя и url. Сохраняем изменения.
sudo systemctl restart panic sudo journalctl -u panic -f
Смотрим, чтобы в логах появилась вторая нода
Повторяем процедуру для всех остальных нод, которые держите
Для дополнительной проверки можете выключить на пару секунд ноду.
Изменение настроек
Для изменения настроек бота (API токен, пароль Redis и пр.), а также включения оповещений на e-mail, редактируем файл: user_config_main.ini
nano /opt/panic/panic_cosmos/config/user_config_main.ini
Для настройки оповещений об изменении github репозиториев, редактируем файл: user_config_repos.in
nano /opt/panic/panic_cosmos/config/user_config_repos.in
И на этом все ребята, настроить мониторинг бота оказалось намного проще, чем это кажется на первый взгляд.