Files
MessageGateway/docs/monitoring/alertmanager.md
Sergey Antropov b90def35ed Initial commit: Message Gateway project
- FastAPI приложение для отправки мониторинговых алертов в мессенджеры
- Поддержка Telegram и MAX/VK
- Интеграция с Grafana, Zabbix, AlertManager
- Автоматическое создание тикетов в Jira
- Управление группами мессенджеров через API
- Декораторы для авторизации и скрытия эндпоинтов
- Подробная документация в папке docs/

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-11-12 20:25:11 +03:00

122 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Настройка 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 игнорируется)