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

View File

@@ -0,0 +1,91 @@
# Настройка Grafana
## Создание Webhook Notification Channel
1. **Открытие настроек:**
- Откройте Grafana и перейдите в раздел "Alerting" → "Notification channels"
- Нажмите "New channel"
2. **Настройка webhook:**
- Выберите тип "Webhook"
- Заполните форму:
- **Name:** Message Gateway
- **Type:** webhook
- **URL:** `http://your-gateway-url/api/v1/grafana/{group_name}/{thread_id}`
- Где `{group_name}` - имя группы из `config/groups.json` (например, "monitoring")
- Где `{thread_id}` - ID треда (0 для основной группы, поддерживается только для Telegram)
- **HTTP Method:** POST
- **Send on all alerts:** включено
- **Include image:** опционально
- Сохраните настройки
3. **Настройка Alert Rule:**
- Создайте или откройте существующее правило алерта
- В разделе "Notifications" выберите созданный канал "Message Gateway"
- Сохраните правило
4. **Тестирование:**
- Создайте тестовый алерт в Grafana
- Проверьте, что сообщение пришло в Telegram/MAX
**Пример URL для webhook:**
```
http://message-gateway.example.com/api/v1/grafana/monitoring/0
```
## Пример конфигурации
**Notification Channel в Grafana:**
- **Name:** Message Gateway
- **Type:** Webhook
- **URL:** `http://message-gateway.example.com/api/v1/grafana/monitoring/0`
- **HTTP Method:** POST
- **Send on all alerts:** Yes
- **Include image:** No
**Alert Rule:**
- В разделе "Notifications" выберите "Message Gateway"
- Сохраните правило
## Формат данных
Grafana отправляет данные в следующем формате:
```json
{
"title": "[Alerting] High CPU Usage",
"ruleId": 674180201771804383,
"ruleName": "High CPU Usage Alert",
"state": "alerting",
"evalMatches": [
{
"value": 95.5,
"metric": "cpu_usage_percent",
"tags": {"host": "server01", "instance": "production"}
}
],
"orgId": 1,
"dashboardId": 123,
"panelId": 456,
"tags": {"severity": "critical", "environment": "production"},
"ruleUrl": "http://grafana.cism-ms.ru/alerting/list",
"message": "CPU usage is above 90% threshold for more than 5 minutes"
}
```
## Поддерживаемые состояния
- `alerting` - алерт сработал
- `ok` - алерт разрешен
- `paused` - алерт приостановлен
- `pending` - алерт в ожидании
- `no_data` - нет данных
## Примечания
- Не требует авторизации (API ключ не нужен)
- Если Jira включена, будет автоматически создан тикет в Jira (внутренний процесс)
- В сообщении будет добавлена кнопка для перехода к тикету в Jira (если поддерживается мессенджером)
- URL правила алерта будет добавлен в сообщение
- Thread ID поддерживается только для Telegram (для MAX/VK игнорируется)