- FastAPI приложение для отправки мониторинговых алертов в мессенджеры - Поддержка Telegram и MAX/VK - Интеграция с Grafana, Zabbix, AlertManager - Автоматическое создание тикетов в Jira - Управление группами мессенджеров через API - Декораторы для авторизации и скрытия эндпоинтов - Подробная документация в папке docs/ Автор: Сергей Антропов Сайт: https://devops.org.ru
3.9 KiB
3.9 KiB
Настройка AlertManager
Создание конфигурации AlertManager
- Открытие конфигурации:
- Откройте файл конфигурации AlertManager (обычно
alertmanager.yml) - Добавьте webhook receiver:
- Откройте файл конфигурации AlertManager (обычно
receivers:
- name: 'message-gateway'
webhook_configs:
- url: 'http://your-gateway-url/api/v1/alertmanager/{k8s_cluster}/{group_name}/{thread_id}'
send_resolved: true
http_config:
bearer_token: 'optional-bearer-token'
- Настройка Route:
- В конфигурации AlertManager добавьте route:
route:
group_by: ['alertname', 'cluster', 'service']
group_wait: 10s
group_interval: 10s
repeat_interval: 12h
receiver: 'message-gateway'
routes:
- match:
severity: critical
receiver: 'message-gateway'
continue: true
- match:
severity: warning
receiver: 'message-gateway'
- Применение конфигурации:
- Сохраните файл конфигурации
- Перезапустите AlertManager или перезагрузите конфигурацию:
curl -X POST http://alertmanager:9093/-/reload
Пример конфигурации
Полный пример alertmanager.yml:
global:
resolve_timeout: 5m
route:
group_by: ['alertname', 'cluster', 'service']
group_wait: 10s
group_interval: 10s
repeat_interval: 12h
receiver: 'message-gateway'
routes:
- match:
severity: critical
receiver: 'message-gateway'
continue: true
- match:
severity: warning
receiver: 'message-gateway'
receivers:
- name: 'message-gateway'
webhook_configs:
- url: 'http://message-gateway.example.com/api/v1/alertmanager/production/monitoring/0'
send_resolved: true
Пример URL для webhook:
http://message-gateway.example.com/api/v1/alertmanager/production/monitoring/0
Где:
production- имя Kubernetes кластера (используется для формирования URL к Grafana/Prometheus)monitoring- имя группы изconfig/groups.json0- ID треда (0 для основной группы, поддерживается только для Telegram)
Формат данных
AlertManager отправляет данные в следующем формате:
{
"status": "firing",
"externalURL": "http://alertmanager.example.com",
"commonLabels": {
"alertname": "HighCPUUsage",
"severity": "critical",
"namespace": "production",
"pod": "app-deployment-7d8f9b4c5-abc123",
"container": "app-container"
},
"commonAnnotations": {
"summary": "High CPU usage detected in production namespace",
"description": "CPU usage is above 90% for 5 minutes on pod app-deployment-7d8f9b4c5-abc123",
"runbook_url": "https://wiki.example.com/runbooks/high-cpu-usage"
}
}
Поддерживаемые статусы
firing- алерт сработалresolved- алерт разрешен
Примечания
- Не требует авторизации (API ключ не нужен)
- Если Jira включена, будет автоматически создан тикет в Jira (внутренний процесс)
- В сообщении будет добавлена кнопка для перехода к тикету в Jira (если поддерживается мессенджером)
- Алерты могут быть заблокированы стоп-словами (настройка в config/stop_words.txt)
- URL к Grafana/Prometheus/AlertManager формируется на основе имени кластера
- Thread ID поддерживается только для Telegram (для MAX/VK игнорируется)