Initial commit: Message Gateway project
- FastAPI приложение для отправки мониторинговых алертов в мессенджеры - Поддержка Telegram и MAX/VK - Интеграция с Grafana, Zabbix, AlertManager - Автоматическое создание тикетов в Jira - Управление группами мессенджеров через API - Декораторы для авторизации и скрытия эндпоинтов - Подробная документация в папке docs/ Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
121
docs/monitoring/alertmanager.md
Normal file
121
docs/monitoring/alertmanager.md
Normal file
@@ -0,0 +1,121 @@
|
||||
# Настройка 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 игнорируется)
|
||||
|
||||
Reference in New Issue
Block a user