- FastAPI приложение для отправки мониторинговых алертов в мессенджеры - Поддержка Telegram и MAX/VK - Интеграция с Grafana, Zabbix, AlertManager - Автоматическое создание тикетов в Jira - Управление группами мессенджеров через API - Декораторы для авторизации и скрытия эндпоинтов - Подробная документация в папке docs/ Автор: Сергей Антропов Сайт: https://devops.org.ru
55 lines
3.3 KiB
Markdown
55 lines
3.3 KiB
Markdown
# Отправка сообщений
|
||
|
||
## Как работает отправка
|
||
|
||
1. **Получение алерта:**
|
||
- Система мониторинга (Grafana, Zabbix, AlertManager) отправляет webhook на эндпоинт Message Gateway
|
||
- Message Gateway валидирует данные алерта через Pydantic модели
|
||
- Увеличивается счетчик полученных сообщений
|
||
|
||
2. **Обработка алерта:**
|
||
- Проверяются стоп-слова (если алерт заблокирован, сообщение не отправляется)
|
||
- Загружается конфигурация группы из `config/groups.json`
|
||
- Определяется мессенджер (Telegram, MAX/VK) из конфигурации группы или параметра запроса
|
||
|
||
3. **Формирование сообщения:**
|
||
- Загружается шаблон сообщения из `templates/`
|
||
- Шаблон рендерится с данными алерта через Jinja2
|
||
- Формируются кнопки для перехода к Grafana/Prometheus/Jira
|
||
|
||
4. **Создание Jira тикета (опционально):**
|
||
- Если Jira включена и выполнены условия, создается тикет в Jira
|
||
- Загружается маппинг из `config/jira_mapping.json`
|
||
- Находится подходящий маппинг на основе условий алерта
|
||
- Создается тикет с описанием из шаблона `jira_common.tmpl`
|
||
- Добавляется кнопка для перехода к тикету в Jira
|
||
|
||
5. **Отправка в мессенджер:**
|
||
- Создается клиент мессенджера через `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
|
||
|