Initial commit: Message Gateway project

- FastAPI приложение для отправки мониторинговых алертов в мессенджеры
- Поддержка Telegram и MAX/VK
- Интеграция с Grafana, Zabbix, AlertManager
- Автоматическое создание тикетов в Jira
- Управление группами мессенджеров через API
- Декораторы для авторизации и скрытия эндпоинтов
- Подробная документация в папке docs/

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-11-12 20:25:11 +03:00
commit b90def35ed
72 changed files with 10609 additions and 0 deletions

107
docs/monitoring/zabbix.md Normal file
View File

@@ -0,0 +1,107 @@
# Настройка Zabbix
## Создание Media Type
1. **Открытие настроек:**
- Откройте Zabbix и перейдите в раздел "Administration" → "Media types"
- Нажмите "Create media type"
2. **Настройка Media Type:**
- Заполните форму:
- **Name:** Message Gateway
- **Type:** Webhook
- **Script name:** message-gateway
- **Script parameters:**
```
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
```
- Сохраните настройки
3. **Создание Action:**
- Перейдите в раздел "Configuration" → "Actions" → "Trigger actions"
- Нажмите "Create action"
- Заполните форму:
- **Name:** Send to Message Gateway
- **Conditions:** выберите условия (например, "Trigger severity" = "High")
- **Operations:** добавьте операцию "Send to Message Gateway"
- **Recovery operations:** добавьте операцию "Send to Message Gateway"
- Сохраните настройки
4. **Настройка User Media:**
- Откройте пользователя в Zabbix
- В разделе "Media" добавьте новый media:
- **Type:** Message Gateway
- **Send to:** `monitoring/0` (формат: `{group_name}/{thread_id}`)
- **When active:** 1-7,00:00-24:00
- Сохраните настройки
## Пример конфигурации
**Media Type в Zabbix:**
- **Name:** Message Gateway
- **Type:** Webhook
- **Script name:** message-gateway
- **Script parameters:**
```
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
```
**Action:**
- **Name:** Send to Message Gateway
- **Conditions:** Trigger severity = High
- **Operations:** Send to Message Gateway
- **Recovery operations:** Send to Message Gateway
**User Media:**
- **Type:** Message Gateway
- **Send to:** `monitoring/0`
- **When active:** 1-7,00:00-24:00
## Формат данных
Zabbix отправляет данные в следующем формате:
```json
{
"link": "https://zabbix.example.com/tr_events.php?triggerid=42667&eventid=8819711",
"status": "PROBLEM",
"action-id": "7",
"alert-subject": "Problem: High CPU utilization (over 90% for 5m)",
"alert-message": "Problem started at 16:48:44 on 2024.02.08",
"event-id": "8819711",
"event-name": "High CPU utilization (over 90% for 5m)",
"event-nseverity": "2",
"event-opdata": "Current utilization: 95.2 %",
"event-severity": "Warning",
"host-name": "pnode28",
"host-ip": "10.14.253.38",
"host-port": "10050"
}
```
## Поддерживаемые статусы
- `PROBLEM` - проблема обнаружена
- `OK` - проблема разрешена
## Уровни серьезности
- `Disaster` - катастрофа
- `High` - высокая
- `Warning` - предупреждение
- `Average` - средняя
- `Information` - информация
## Примечания
- Не требует авторизации (API ключ не нужен)
- Если Jira включена, будет автоматически создан тикет в Jira (внутренний процесс)
- В сообщении будет добавлена кнопка для перехода к тикету в Jira (если поддерживается мессенджером)
- Ссылка на событие Zabbix будет добавлена в сообщение
- Thread ID поддерживается только для Telegram (для MAX/VK игнорируется)
- Можно настроить фильтрацию по серьезности события