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

3.9 KiB
Raw Permalink Blame History

Настройка AlertManager

Создание конфигурации AlertManager

  1. Открытие конфигурации:
    • Откройте файл конфигурации AlertManager (обычно alertmanager.yml)
    • Добавьте webhook receiver:
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'
  1. Настройка 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'
  1. Применение конфигурации:
    • Сохраните файл конфигурации
    • Перезапустите 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.json
  • 0 - 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 игнорируется)