Создание
Пошаговый разбор формы новой политики — область действия, условия, действия, порядок.
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: matcherenv!=productionсовпадёт и сenv=staging, и с алертом без меткиenv. Соответственно=(equals) с пустым значением совпадёт ровно с теми, где метка отсутствует или пуста. -
Severity —
critical,warningили оба. Алерт подходит, если его важность входит в выбранные. -
Time window — окно по времени суток: поля From и To в формате
HH:MMи набор дней недели (Days). Алерт подходит, если попадает в окно. Время вводится в вашем поясе отображения (организации или пользователя) и хранится в UTC. Окно может переходить через полночь: если From позже To — это ночное окно, например22:00–06: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:00–18:00 Пн–Пт в Suppress заглушит
дневные алерты, а в Hold outside window — наоборот придержит ночные и
выходные. Для сценария «получать алерты только в рабочее время» нужно именно
Hold outside window (см. пример ниже).
При необходимости включите продолжение цепочки
Флаг Continue evaluating next policies (по умолчанию выключен) управляет тем,
что произойдёт после применения политики. По умолчанию совпадение с
не-терминальной политикой останавливает проверку ниже-приоритетных. С включённым
флагом алерт после применения этой политики продолжает идти по цепочке к
следующей подходящей. Терминальные действия (drop, suppress, delay_until, а
также Hold outside window, когда алерт пришёл вне окна) останавливают
цепочку всегда, независимо от флага.
Сохраните
Новая политика занимает позицию среди политик команды. Порядок этих позиций и определяет, в какой последовательности они проверяются: сверху вниз, применяется первая совпавшая. Порядок можно менять позже в списке политик команды.
Примеры
Ниже — несколько готовых сценариев с конкретными настройками формы.
Тише ночью
Откладывать ночные warning до утра, чтобы не будить по некритичному.
- When: Severity =
warning; Time window22:00–06:00, все дни недели. - Then: Delay until
06:00.
Время задаётся в вашем поясе отображения. Алерт warning, пришедший ночью,
откладывается до утра; critical под это правило не попадает и идёт дальше сразу.
Получать алерты только в рабочее время
Команда дежурит в будни с 09:00 до 18:00 и не хочет, чтобы её будили ночью и в выходные. Всё, что пришло вне этого окна, копится и приходит к началу ближайшего рабочего окна — одной политикой, включая перенос через выходные.
- When: пусто (под все алерты). Или Severity =
warning, еслиcriticalдолжен будить всегда. - Then: Hold outside window, From
09:00, To18: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 severity →
critical; включить Continue evaluating next policies.
Override severity — не терминальное действие, поэтому без флага продолжения
алерт остановился бы на этой политике. Флаг Continue evaluating next
policies пускает уже поднятый до critical алерт дальше по цепочке — к
эскалации, где critical поднимает всю цепочку автоматически (см.
Как работает эскалация).