- FastAPI приложение для отправки мониторинговых алертов в мессенджеры - Поддержка Telegram и MAX/VK - Интеграция с Grafana, Zabbix, AlertManager - Автоматическое создание тикетов в Jira - Управление группами мессенджеров через API - Декораторы для авторизации и скрытия эндпоинтов - Подробная документация в папке docs/ Автор: Сергей Антропов Сайт: https://devops.org.ru
92 lines
3.4 KiB
Markdown
92 lines
3.4 KiB
Markdown
# Настройка 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 игнорируется)
|
||
|