Routing
Тема дорожной карты · Prometheus
Маршрутизация в Alertmanager определяет, как входящие оповещения сопоставляются и направляются соответствующему получателю. Конфигурация маршрутизации в alertmanager.yml формирует дерево маршрутов, где каждый маршрут может сопоставлять оповещения по матчерам меток — таким как alertname, severity или пользовательским меткам — и затем отправлять их именованному получателю. Дочерние маршруты наследуют настройки от родительского, и первый совпавший маршрут побеждает, если только не установлен continue: true для обработки одного оповещения несколькими маршрутами. Дерево маршрутизации также управляет поведением группировки через group_by, а также временными параметрами group_wait, group_interval и repeat_interval. Хорошо спроектированная маршрутизация Alertmanager обеспечивает правильную эскалацию оповещений и своевременное получение инженерами практически значимых уведомлений от Prometheus. Маршрутизация играет ключевую роль в обеспечении эффективной работы систем мониторинга и уведомлений.
Как это работает
Routing: alerting rules в rule_files: периодически оценивают PromQL-выражения; при возврате результатов алерт срабатывает. Alertmanager (отдельный компонент) принимает алерты, дедуплицирует, группирует, роутит к получателям (PagerDuty, Slack, email, Telegram, webhooks). Концепции: alert rules (for: 5m — требует устойчивого условия), routing tree (по labels), silences (mute при maintenance), inhibition (подавление шумных алертов при сбое).
Когда применять
Алертите на симптомы (latency, error rate, SLO burn), не на причины (CPU usage, RAM). for: 5m (или длиннее) — против алертов на всплески. Severity labels (severity: page / severity: ticket) для разного роутинга. Каждый алерт с annotation runbook_url — в 3:00 что делать важнее, чем что сработало. Маршрутизация особенно полезна для обеспечения того, чтобы оповещения были направлены к соответствующим получателям в зависимости от их важности и типа.
Типичные ошибки
Ловушки Routing: alert fatigue (слишком много low-priority pages → реальные игнорируются); алерты без runbooks (просто "X плохо" без действия); flapping-алерты (нет for:-порога, условие осциллирует); нет Alertmanager-избыточности (single point of failure для paging). Неправильная настройка маршрутизации может привести к тому, что инженеры будут получать слишком много или слишком мало уведомлений, что затрудняет их работу.