1
0
Fork 0
mirror of https://github.com/EDeev/alertbot.git synced 2026-10-07 20:49:56 +03:00
alertbot/README.md
Egor Deev 6296fe9123 README на русском и английском, docs/deploy.md с примером nginx
Описание и имя репозитория приведены к содержимому (бот мониторинга, а не будильник).
2026-10-02 19:26:40 +00:00

5.6 KiB
Raw Permalink Blame History

AlertBot

Русский · English

CI Docker Release License

Telegram-бот для мониторинга парка серверов поверх Prometheus и Alertmanager: присылает алерты «проблема / в норме» и по команде показывает состояние серверов, сервисов и TLS-сертификатов.

Статус: личный проект, работает · следит за пятью серверами автора

Серверы

SPB
CPU 7% · RAM 41% · диск 38% · swap 0%
load 0.21 · аптайм 12д 4ч

DORM · ⚠ диск
CPU 18% · RAM 63% · диск 87% · swap 2% · temp 52°C
load 1.40 · аптайм 3д 9ч

Пример ответа на /servers (значения условные).

Стек: Python 3.10+ · aiogram 3 · aiohttp · SQLite · Prometheus HTTP API · Alertmanager API v2 · Docker

Возможности

  • Алерты: раз в N секунд опрашивает Alertmanager, дедуплицирует по fingerprint и сразу пишет «Проблема · …» и «В норме · …» подписчикам. Своих правил нет — всё, что настроено в Alertmanager
  • Сторож: если сам Alertmanager перестал отвечать, бот один раз сообщает об этом и ещё раз — когда мониторинг вернулся
  • /servers — CPU, RAM, диск, swap, load, аптайм и температура по узлам, ⚠ при превышении порогов
  • /services — какие цели Prometheus не отвечают
  • /certs — дни до истечения TLS-сертификатов, предупреждение меньше чем за 14 дней
  • /alerts — активные алерты; /alerts on|off — подписка
  • Доступ — только для Telegram ID из списка, остальные молча игнорируются

Быстрый старт

git clone https://github.com/EDeev/alertbot.git && cd alertbot
cp .env.example .env      # токен бота, ID, адреса и токены Prometheus/Alertmanager
docker compose up -d

Готовый образ: docker pull ghcr.io/edeev/alertbot или docker pull dcr.deev.su/edeev/alertbot.

Установка без Docker

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python bot.py

Конфигурация

Переменная Назначение
BOT_TOKEN токен бота от @BotFather
ALLOWED_IDS Telegram ID через запятую, кому можно пользоваться ботом
AM_ALERTS_URL, PROM_QUERY_URL Alertmanager /api/v2/alerts и Prometheus /api/v1/query
AM_TOKEN, PROM_TOKEN токены, бот передаёт их в заголовке Authorization: Bearer
SERVERS_ORDER имена узлов через запятую, как в лейбле server метрик
ALERT_POLL_SECONDS, ALERT_HTTP_TIMEOUT период опроса и таймаут запросов
ALERT_WATCHDOG_FAILURES после скольких неудачных опросов подряд сообщать о недоступности (по умолчанию 4)
ALERTBOT_DB, ALERTBOT_LOG_FILE файл SQLite и файл лога (пусто — только stdout)

Important

Не открывайте Prometheus и Alertmanager в интернет без авторизации. Бот рассчитан на обратный прокси, который проверяет токен из заголовка Authorization: Bearer …, — пример для nginx в docs/deploy.md.

Развёртывание

Бот работает на отдельном VPS как systemd-юнит. Prometheus и Alertmanager стоят на другом сервере за nginx, который пускает бота только с токеном. Docker-образ собирает GitHub Actions на каждый тег v* и публикует в GitHub Packages и в реестр dcr.deev.su.

Разработка

pip install -r requirements-dev.txt
ruff check . && pytest

Тесты работают без сети: Telegram и Prometheus подменяются. Проверяются дедупликация алертов, сообщения о возврате в норму, сторож и тексты сводок.

Лицензия

MIT — см. LICENSE.

Автор

Деев Егор Викторович — GitHub · Telegram · egor@deev.space


⭐ Если проект оказался полезным, поставьте звёздочку на GitHub!

Сделано с ❤️ — deev.space