- FastAPI приложение для отправки мониторинговых алертов в мессенджеры - Поддержка Telegram и MAX/VK - Интеграция с Grafana, Zabbix, AlertManager - Автоматическое создание тикетов в Jira - Управление группами мессенджеров через API - Декораторы для авторизации и скрытия эндпоинтов - Подробная документация в папке docs/ Автор: Сергей Антропов Сайт: https://devops.org.ru
3.3 KiB
3.3 KiB
Отправка сообщений
Как работает отправка
-
Получение алерта:
- Система мониторинга (Grafana, Zabbix, AlertManager) отправляет webhook на эндпоинт Message Gateway
- Message Gateway валидирует данные алерта через Pydantic модели
- Увеличивается счетчик полученных сообщений
-
Обработка алерта:
- Проверяются стоп-слова (если алерт заблокирован, сообщение не отправляется)
- Загружается конфигурация группы из
config/groups.json - Определяется мессенджер (Telegram, MAX/VK) из конфигурации группы или параметра запроса
-
Формирование сообщения:
- Загружается шаблон сообщения из
templates/ - Шаблон рендерится с данными алерта через Jinja2
- Формируются кнопки для перехода к Grafana/Prometheus/Jira
- Загружается шаблон сообщения из
-
Создание Jira тикета (опционально):
- Если Jira включена и выполнены условия, создается тикет в Jira
- Загружается маппинг из
config/jira_mapping.json - Находится подходящий маппинг на основе условий алерта
- Создается тикет с описанием из шаблона
jira_common.tmpl - Добавляется кнопка для перехода к тикету в Jira
-
Отправка в мессенджер:
- Создается клиент мессенджера через
MessengerFactory - Проверяется поддержка тредов (для MAX/VK треды не поддерживаются)
- Сообщение отправляется в мессенджер через клиент
- Увеличивается счетчик отправленных сообщений
- Создается клиент мессенджера через
Поддержка мессенджеров
Telegram
- ✅ Полная поддержка текстовых сообщений
- ✅ Поддержка медиа (фото, видео, аудио, документы)
- ✅ Поддержка тредов (threads)
- ✅ Поддержка кнопок (InlineKeyboardMarkup)
- ✅ Поддержка HTML и Markdown форматирования
MAX/VK
- ✅ Поддержка текстовых сообщений
- ✅ Поддержка медиа (фото, видео, аудио, документы)
- ❌ Треды не поддерживаются (thread_id игнорируется)
- ✅ Поддержка кнопок (в формате VK API)
- ✅ Конвертация HTML в формат VK
Различия в отправке:
- Telegram использует Bot API, MAX/VK использует VK API
- Telegram поддерживает треды, MAX/VK - нет
- Формат кнопок различается (Telegram - InlineKeyboardMarkup, MAX/VK - JSON)
- HTML форматирование конвертируется в формат VK для MAX/VK