← Назад к вопросам

Как сделать перенаправление алертов в конкретные каналы в Alertmanager Prometheus

2.2 Middle🔥 251 комментариев
#Мониторинг и логирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Настройка перенаправления алертов в Alertmanager

Alertmanager Prometheus является ключевым компонентом для управления и маршрутизации алертов. Для перенаправления алертов в конкретные каналы (например, Slack, Email, Telegram, PagerDuty) необходимо правильно настроить конфигурационный файл Alertmanager, который определяет правила маршрутизации (routes), группировки и обработки.

Основные компоненты конфигурации

Конфигурация Alertmanager (alertmanager.yml) состоит из следующих секций:

  • global: глобальные настройки (SMTP, API URL для Slack и др.).
  • route: дерево маршрутизации алертов.
  • receivers: определения приемников алертов (каналов).
  • inhibit_rules: правила ингибирования (подавления) алертов.

Практический пример конфигурации

Рассмотрим пример перенаправления алертов в Slack и Email на основе меток алертов.

global:
  smtp_smarthost: 'smtp.gmail.com:587'
  smtp_from: 'alertmanager@company.com'
  smtp_auth_username: 'user'
  smtp_auth_password: 'password'
  slack_api_url: 'https://slack.com/api/chat.postMessage'

route:
  group_by: ['alertname', 'cluster']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'default-receiver'
  routes:
    - match:
        severity: critical
      receiver: 'slack-critical-team'
      continue: false
    - match_re:
        service: ^(web|api).*
      receiver: 'email-web-team'

receivers:
  - name: 'default-receiver'
    email_configs:
      - to: 'alerts@company.com'
        from: 'alertmanager@company.com'
        smarthost: 'smtp.gmail.com:587'
        auth_username: 'user'
        auth_password: 'password'

  - name: 'slack-critical-team'
    slack_configs:
      - channel: '#alerts-critical'
        api_url: 'https://slack.com/api/chat.postMessage'
        title: '{{ template "slack.title" . }}'
        text: '{{ template "slack.message" . }}'

  - name: 'email-web-team'
    email_configs:
      - to: 'web-team@company.com'
        send_resolved: true

Ключевые механизмы маршрутизации

  1. Матчинг по меткам (match): Алерт направляется в приемник, если все указанные метки совпадают. В примере алерты с меткой severity: critical направляются в Slack.
  2. Регулярные выражения (match_re): Алерт направляется в приемник, если метка соответствует регулярному выражению. В примере алерты от служб web или api направляются на Email.
  3. continue: Если false (как в примере для slack-critical-team), алерт не продолжает движение по дереву маршрутизации после обработки в этом узле. Если true — алерт может быть отправлен в несколько приемников.
  4. Группировка (group_by): Алерты группируются по указанным меткам, что позволяет избежать флуда однотипных алертов.

Создание и использование шаблонов

Для кастомизации сообщений в каналах используются шаблоны. Например, шаблон для Slack:

# В файле шаблонов (например, slack_template.tmpl)
{{ define "slack.title" }}[{{ .Status | toUpper }}] {{ .GroupLabels.alertname }}{{ end }}
{{ define "slack.message" }}*Alert:* {{ .GroupLabels.alertname }}
*Summary:* {{ .CommonAnnotations.summary }}
*Details:* {{ .CommonAnnotations.description }}
{{ end }}

И подключение шаблонов в конфигурации Alertmanager:

# В alertmanager.yml (добавляется секция templates)
templates:
  - '/etc/alertmanager/templates/*.tmpl'

Расширенная маршрутизация: использование под-маршрутов

Для сложных сценариев можно создавать вложенные маршруты (routes внутри routes):

route:
  receiver: 'default'
  routes:
    - match:
        department: infrastructure
      receiver: 'infra-team'
      routes:
        - match:
            component: database
          receiver: 'dba-team'
        - match:
            component: network
          receiver: 'network-team'

Практические рекомендации

  • Тестирование конфигурации: Используйте amtool для проверки правильности конфигурации и маршрутизации.
  • Приоритизация: Устанавливайте continue: false для критичных алертов, чтобы они не "забивались" менее важными.
  • Мониторинг Alertmanager: Настройте алерты на состояние самого Alertmanager (например, через prometheus/alertmanager метрики).
  • Версионирование конфигурации: Храните alertmanager.yml в системе контроля версий (Git) и используйте CI/CD для его deployment.

Таким образом, перенаправление алертов в конкретные каналы осуществляется через детальную настройку дерева маршрутизации в конфигурации Alertmanager, где ключевыми элементами являются match/match_re условия, receivers и правильно настроенные шаблоны для форматирования сообщений.

Как сделать перенаправление алертов в конкретные каналы в Alertmanager Prometheus | PrepBro