IncidentGarden

Создание

Пошаговый разбор формы новой политики — область действия, условия, действия, порядок.

Policies (Политики) живут на странице команды. Откройте нужную команду, перейдите на вкладку Policies и нажмите Add Policy — откроется диалог New Policy. Управлять ими может администратор команды или организации.

Что такое политика и где она стоит в обработке — см. Обзор.

Задайте область

Форма открывается пустой — политика собирается с нуля. Готовые рецепты под частые задачи (что задать в When и Then) собраны в Типовых сценариях — берите их как образец.

Первое поле — Scope, выпадающий список, который определяет область действия:

  • All team integrations (incl. future) — первый пункт списка; политика применяется ко всем интеграциям команды, включая те, что будут добавлены позже;
  • конкретная интеграция — выберите одну из списка команды; политика применяется только к ней.

Выбрать несколько конкретных интеграций нельзя — либо одна, либо все.

Опишите условия в блоке When

Секция When задаёт, на какие алерты сработает политика. Все включённые условия должны совпасть одновременно (логическое И). Если не включать ни одного условия — политика подойдёт под любой алерт.

  • Label matchers — условия по меткам алерта. Каждая строка — это ключ метки, оператор и (для части операторов) значение. Несколько строк объединяются по И — должны совпасть все. Доступны четыре оператора:

    ОператорЗначениеСовпадает, когда
    = (equals)нужнометка равна указанному значению
    != (not equals)нужнометка не равна указанному значению
    existsне нужнометка присутствует (с любым значением)
    absentне нужнометка отсутствует

    Шаблоны и регулярные выражения не используются.

    Отсутствующая метка считается пустой строкой. Поэтому != (not equals) срабатывает и на алерты, у которых такой метки вообще нет. Это нужно, например, чтобы отбросить всё, что не из production: matcher env != production совпадёт и с env=staging, и с алертом без метки env. Соответственно = (equals) с пустым значением совпадёт ровно с теми, где метка отсутствует или пуста.

  • Severitycritical, warning или оба. Алерт подходит, если его важность входит в выбранные.

  • Time window — окно по времени суток: поля From и To в формате HH:MM и набор дней недели (Days). Алерт подходит, если попадает в окно. Время вводится в вашем поясе отображения (организации или пользователя) и хранится в UTC. Окно может переходить через полночь: если From позже To — это ночное окно, например 22:0006:00.

Условия по Label matchers и Severity опираются на метки от источника, и это тем важнее для операторов != / exists / absent. AlertManager и Grafana присылают метки автоматически; Zabbix и обобщённый webhook — только если источник настроен слать поле labels (для webhook ещё укажите source_field для важности). Если источник меток не присылает, все метки для такого алерта считаются отсутствующими: matcher = / exists не совпадёт, а matcher != / absent совпадёт со всеми такими алертами (см. правило «отсутствующая метка = пусто» выше) — проверьте, что это именно то, что вам нужно. Особенно осторожно с действием Drop: matcher != вместе с Drop молча отбросит и важные алерты от источника, который забыл прислать эту метку! Чтобы отбрасывать только по реально присутствующей метке, добавьте перед != ещё matcher exists на тот же ключ — например env exists вместе с env != production; тогда алерты без метки env под Drop не попадут. Важность в отсутствие меток станет critical — не знаем важность, будим. См. Подключение Zabbix, Подключение через webhook и Настройку важности.

Задайте действия в блоке Then

Секция Then задаёт, что сделать с подходящим алертом. Действия применяются по порядку; терминальное действие останавливает обработку.

  • Drop — отбросить алерт. Терминальное.
  • Suppress — заглушить алерт до конца окна. Терминальное; требует заданного Time window в блоке When.
  • Delay until — отложить алерт до времени HH:MM. Терминальное. Если это время сегодня уже прошло, алерт откладывается до него на следующий день.
  • Hold outside window — задержать алерт, пришедший вне рабочего окна, до старта ближайшего следующего окна. Окно задаётся внутри самого действия: поля From и To в формате HH:MM и набор дней недели (Days). Если алерт пришёл внутри окна — задержки нет, он идёт дальше сразу. Условно терминальное: вне окна — задерживает и останавливает цепочку, внутри окна — пропускает дальше.
  • Override severity — сменить важность на critical или warning. Не терминальное.
  • Add labels — добавить метки к алерту (слияние с уже имеющимися). Не терминальное. Учтите: добавленные метки видит не только следующая политика в цепочке, но и сайленсы — они проверяются позже и работают уже с обогащённым набором (см. Обзор сайленсов).

Suppress, Delay until и Hold outside window не выбрасывают алерт, а откладывают его: заглушённый и отложенный «проснутся» в назначенный момент и тогда пойдут в эскалацию. Безвозвратно убирает алерт только Drop.

Не путайте Suppress и Hold outside window — у них противоположная полярность. Suppress глушит алерты, попавшие внутрь окна (его Time window в блоке When) — это окно тишины. Hold outside window наоборот: задерживает алерты, пришедшие вне окна, и пропускает те, что внутри — это рабочее окно. Один и тот же интервал 09:0018:00 Пн–Пт в Suppress заглушит дневные алерты, а в Hold outside window — наоборот придержит ночные и выходные. Для сценария «получать алерты только в рабочее время» нужно именно Hold outside window (см. пример ниже).

При необходимости включите продолжение цепочки

Флаг Continue evaluating next policies (по умолчанию выключен) управляет тем, что произойдёт после применения политики. По умолчанию совпадение с не-терминальной политикой останавливает проверку ниже-приоритетных. С включённым флагом алерт после применения этой политики продолжает идти по цепочке к следующей подходящей. Терминальные действия (drop, suppress, delay_until, а также Hold outside window, когда алерт пришёл вне окна) останавливают цепочку всегда, независимо от флага.

Сохраните

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

Примеры

Ниже — несколько готовых сценариев с конкретными настройками формы.

Тише ночью

Откладывать ночные warning до утра, чтобы не будить по некритичному.

  • When: Severity = warning; Time window 22:0006:00, все дни недели.
  • Then: Delay until 06:00.

Время задаётся в вашем поясе отображения. Алерт warning, пришедший ночью, откладывается до утра; critical под это правило не попадает и идёт дальше сразу.

Получать алерты только в рабочее время

Команда дежурит в будни с 09:00 до 18:00 и не хочет, чтобы её будили ночью и в выходные. Всё, что пришло вне этого окна, копится и приходит к началу ближайшего рабочего окна — одной политикой, включая перенос через выходные.

  • When: пусто (под все алерты). Или Severity = warning, если critical должен будить всегда.
  • Then: Hold outside window, From 09:00, To 18:00, Days — Пн, Вт, Ср, Чт, Пт.

Время задаётся в вашем поясе отображения. Что получится:

Когда пришёл алертВнутри окна?Результат
Вторник 14:00дане задерживается → идёт сразу в эскалацию
Пятница 19:00нетзадержан до понедельника 09:00
Суббота 10:00нетзадержан до понедельника 09:00
Вторник 07:00нет (рано)задержан до вторника 09:00

Пока алерт ждёт, повторные сигналы той же проблемы накапливаются в него же и не сбрасывают срок ожидания. В начале окна алерт просыпается и уходит в эскалацию.

Это рабочее окно — обратная полярность Suppress (окно тишины): убедитесь, что выбрали именно Hold outside window, а не Suppress с тем же интервалом.

Отсечь известный шум

Служебный алерт, который не нужно эскалировать, отбрасывать по метке.

  • When: Label matchers — alertname = Watchdog.
  • Then: Drop.

Алерты с такой меткой отбрасываются; всё остальное проходит дальше без изменений.

Отбросить всё, что не из production

Слать дальше только боевые алерты, а из тестовых сред — отбрасывать.

  • When: Label matchers — env != production.
  • Then: Drop.

!= (not equals) совпадает и с другими значениями (staging, dev), и с алертами, у которых метки env вообще нет (отсутствующая метка = пусто). Если в такой setup попадают источники без меток, чьи алерты вы НЕ хотите потерять, — сначала убедитесь, что они присылают env (см. предупреждение про метки выше).

Поднять важность для критичного сервиса

Сделать warning от важной команды/сервиса полноценным critical.

  • When: Label matchers team = payments; Severity = warning.
  • Then: Override severitycritical; включить Continue evaluating next policies.

Override severity — не терминальное действие, поэтому без флага продолжения алерт остановился бы на этой политике. Флаг Continue evaluating next policies пускает уже поднятый до critical алерт дальше по цепочке — к эскалации, где critical поднимает всю цепочку автоматически (см. Как работает эскалация).