- FastAPI приложение для отправки мониторинговых алертов в мессенджеры - Поддержка Telegram и MAX/VK - Интеграция с Grafana, Zabbix, AlertManager - Автоматическое создание тикетов в Jira - Управление группами мессенджеров через API - Декораторы для авторизации и скрытия эндпоинтов - Подробная документация в папке docs/ Автор: Сергей Антропов Сайт: https://devops.org.ru
122 lines
3.9 KiB
Markdown
122 lines
3.9 KiB
Markdown
# Настройка AlertManager
|
||
|
||
## Создание конфигурации AlertManager
|
||
|
||
1. **Открытие конфигурации:**
|
||
- Откройте файл конфигурации AlertManager (обычно `alertmanager.yml`)
|
||
- Добавьте webhook receiver:
|
||
|
||
```yaml
|
||
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'
|
||
```
|
||
|
||
2. **Настройка Route:**
|
||
- В конфигурации AlertManager добавьте route:
|
||
|
||
```yaml
|
||
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'
|
||
```
|
||
|
||
3. **Применение конфигурации:**
|
||
- Сохраните файл конфигурации
|
||
- Перезапустите AlertManager или перезагрузите конфигурацию:
|
||
```bash
|
||
curl -X POST http://alertmanager:9093/-/reload
|
||
```
|
||
|
||
## Пример конфигурации
|
||
|
||
**Полный пример `alertmanager.yml`:**
|
||
```yaml
|
||
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.json`
|
||
- `0` - ID треда (0 для основной группы, поддерживается только для Telegram)
|
||
|
||
## Формат данных
|
||
|
||
AlertManager отправляет данные в следующем формате:
|
||
|
||
```json
|
||
{
|
||
"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 игнорируется)
|
||
|