Files
MessageGateway/docs/messaging.md
Sergey Antropov b90def35ed Initial commit: Message Gateway project
- FastAPI приложение для отправки мониторинговых алертов в мессенджеры
- Поддержка Telegram и MAX/VK
- Интеграция с Grafana, Zabbix, AlertManager
- Автоматическое создание тикетов в Jira
- Управление группами мессенджеров через API
- Декораторы для авторизации и скрытия эндпоинтов
- Подробная документация в папке docs/

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-11-12 20:25:11 +03:00

3.3 KiB
Raw Permalink Blame History

Отправка сообщений

Как работает отправка

  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