Самостоятельная маршрутизация предупреждения

Маршрут оповещения по ярлыкам, источнику, команде и сервису.

IncidentRelay получает оповещения о мониторинге, нормализует их ярлыки и отправляет их через маршрутизаторы, службы, расписания и каналы.

Практические примеры для IncidentRelay v2.3.1, проверены . Имена, идентификаторы и интервалы ниже приведены для иллюстрации; проверьте их на тестовом развёртывании до использования production-учётных данных.

Бизнес-пример · Настройка · Практический пример · Приёмочные проверки · Ограничения и отказы

Бизнес-пример: три клиентские системы и один шумный чат поддержки

Это модельная ситуация, а не история реального клиента. Метрики ниже предложены для вашего пилота: это не подтверждённая экономия и не утверждение, что все нужные отчёты встроены в IR.

Ситуация и риск. Сервис-провайдер поддерживает трёх клиентов, у каждого есть алерты приложений и инфраструктуры. Всё приходит в один чат. Инженеры пересылают сообщения другим командам, а повторы скрывают первоначальный сигнал. Бизнес-риск — задержка назначения ответственного и лишняя работа поддержки, даже если мониторинг обнаружил сбой вовремя.

Процесс с IR. Сопоставьте каждый клиентский сервис с ответственной командой и используйте нужный токен маршрута для каждого отправителя. Проверяйте метки окружения и сервиса, выбирайте дежурного и группируйте повторы только в нужных границах ответственности. Прежде чем расширять схему, проведите пилот на production-биллинге одного клиента с matcher из примера ниже.

Какую пользу проверить. Замените рутинную пересылку сообщений явной маршрутизацией. Первой должна реагировать команда, которая может действовать; при этом сообщения нескольких хостов об одной проблеме сохраняются как отдельные дочерние алерты.

Что измерять. Для каждого клиента считайте алерты, переназначенные после первого решения маршрутизации, группы без ответственного и число уведомлений на одну исходную проблему. Проверяйте также отклонённые и не совпавшие с правилами тестовые события: меньше уведомлений — не успех, если авария клиента стала невидимой.

Ограничения. Совпадение меток не обеспечивает изоляцию клиентских данных. Отдельно проверьте права доступа, учётные данные и границы развёртываний. Несогласованные метки или слишком широкая группировка по-прежнему могут направить задачу не той команде или объединить несвязанные симптомы; проверьте эти ситуации до подключения следующего клиента.

Разделите приём событий, ответственность и доставку

Production-сервис биллинга и его staging-копия не должны случайно будить одних и тех же людей. Для первого пилота создайте Webhook-маршрут команды production-биллинга, выберите сервис по умолчанию, ротацию или политику и подключите каналы. Входящий токен определяет маршрут; сами по себе совпадающие метки не аутентифицируют отправителя и не выбирают произвольный маршрут.

Точный matcher маршрута и явный ключ группировки

Вставьте этот объект в редактор matcher маршрута. Это объект условий, а не тело входящего webhook. Все условия соединены логическим AND. Обязательные метки production и сервиса не пропустят в этот маршрут staging и события без нужных меток.

{
  "source": "webhook",
  "labels": {
    "environment": "production",
    "service": "billing-api"
  }
}

В этом примере задайте полю group_by маршрута значение:

["alertname", "severity", "labels.cluster"]

Тогда два хоста с одинаковым алертом в одном кластере могут попасть в одну AlertGroup, сохранив отдельные дочерние идентификаторы. Для generic webhook используйте стабильные fingerprint, например billing:node-1:health и billing:node-2:health. Передавайте ожидаемые метки и при сбое, и при восстановлении; никогда не используйте новую временную метку как идентификатор каждого повтора.

Дедупликация и группировка решают разные задачи: одинаковый fingerprint обновляет дочерний алерт, а разные fingerprint с одним ключом группы создают в ней отдельные дочерние алерты. Маршрут, команда, источник и сервис также ограничивают область группировки. Добавляйте instance в поля группировки, только если каждому хосту нужна отдельная группа.

Когда один отправитель действительно обслуживает несколько команд

Используйте глобальную оркестрацию, когда ответственных нужно выбирать по содержимому события. В Builder начните с условий labels.environment equals production и labels.service equals billing-api, затем выберите совместимые объекты команды, маршрута и сервиса из одной группы. Не переносите числовые ID объектов между инсталляциями.

Проверьте конфигурацию и смоделируйте как совпадения, так и несовпадения, опубликуйте её, затем используйте shadow с совместимостью hybrid. Изучите реальные выполнения перед переходом в active. Shadow записывает решения, не меняя поведение production; Simulator не доказывает сквозную доставку.

Составьте небольшую матрицу проверок маршрутизации

Входные данные Ожидаемый результат в этом примере
Событие production-биллинга Matcher совпадает; выбранные сервис, ответственный и каналы соответствуют запланированной схеме ответственности.
Staging или отсутствующая метка сервиса Matcher не совпадает. Проверьте предусмотренный альтернативный путь отправителя; этот пример не создаёт маршрут для всех остальных событий.
Повторный fingerprint Обновляется тот же дочерний алерт. Другой fingerprint хоста создаёт второй дочерний алерт в той же группе, если метки группировки совпадают.
Восстановление только одного из двух дочерних алертов Этот дочерний алерт разрешается; группа остаётся активной, пока не восстановятся все активные дочерние алерты. Восстановление без соответствующего алерта не создаёт новую группу.

Избегайте правил, которые незаметно скрывают происходящее

Пустой matcher совпадает со всем. Метка severity не обязательно является тем же полем, что и нормализованная важность события; используйте путь из документации и проверяйте реальное нормализованное событие. Не требуйте status=firing на входящем пути, который должен принимать и восстановление.

В режиме active + legacy решения оркестрации не применяются. В hybrid некорректные сочетания объектов могут привести к возврату на прежний путь обработки; в авторитетном режиме orchestration ошибка вычисления или проверки объектов, напротив, блокирует обработку. Выбирайте поведение при сбоях осознанно.

Начните без широких правил drop и suppress. Подавление и группировка могут сократить число уведомлений, но не сделают плохой сигнал мониторинга полезным. Сохраните проверенную предыдущую версию и разберите неожиданные несовпадения перед расширением внедрения.