Эскалации

Эскалация — это лесенка ступеней уведомления: чем дольше инцидент остаётся открытым и неподтверждённым, тем шире круг каналов, куда уходит уведомление. Раздел настраивает две независимые лесенки — «Критично» и «Предупреждение» — и работает для всех шести источников инцидентов: хостов, метрик, регрессий транзакций, регрессий профилей, SLO и аптайма. Открывается пунктом «Оповещения → Доставка → Эскалации» в левой рельсе — /projects/{id}/escalations. Алерты по проблемам (новый issue, регрессия, всплеск) лесенку не проходят: они уходят сразу во все включённые каналы проекта одним уведомлением, без ступеней и задержек — см. Оповещения.

Как устроена лесенка

Важность (severity) инцидента определяет, какая из двух лесенок сработает. Внутри лесенки — до пяти ступеней, пронумерованных подряд с первой (дыра в нумерации, например занятая ступень 1 и пустая 2, отклоняется при сохранении). У каждой ступени — задержка в минутах от момента открытия инцидента (0 — сразу) и набор отмеченных каналов; последующие ступени обычно расширяют круг получателей. Задержка на первой ступени откладывает и самое первое уведомление — это осознанный выбор: не будить дежурного из-за проблемы, которая разрешится сама за пару минут. Ступень без отмеченного ни одного канала считается неиспользуемой; чтобы убрать ступень целиком, достаточно снять на ней все каналы.

Канал, ставший недоставляемым уже после того, как его выбрали в ступень (оператор выключил канал, либо сломался секрет вебхука/бота), не пропадает из формы молча — он остаётся в списке, отмеченным бейджем причины («выключен» / «сломан секрет»), и переживает повторное сохранение формы «как есть». Добавить в новую ступень можно только канал, который доставляем прямо сейчас.

Обе лесенки сохраняются отдельными формами; у каждой — свой предпросмотр под формой.

Если лесенка не настроена

Пустая лесенка — не ошибка, а «политика ещё не настраивалась»: тогда действует поведение по умолчанию, то же, что было в продукте до появления эскалаций — все включённые каналы проекта, сразу. Дефолт применяется отдельно на каждую severity: можно настроить лесенку только для «Критично», оставив «Предупреждение» на дефолте.

Предпросмотр (dry-run)

Под формой каждой лесенки — расчёт без побочных эффектов: что фактически разошлёт лесенка, действующая прямо сейчас (сохранённая, либо дефолт- fallback, если не настроена) — по каждой ступени: «сразу» или «через N мин» и список каналов. Раздел ниже поясняет, что уведомление о восстановлении уходит во все каналы, получившие хотя бы одну ступень этой лесенки за время жизни инцидента — не обязательно во все каналы проекта. Это верно для пяти источников из шести (хосты, метрики, регрессии транзакций, регрессии профилей, SLO). У аптайма восстановление устроено иначе: оно уходит во все каналы, доставляемые монитору прямо сейчас (собственные каналы монитора, если они заданы, иначе — все включённые каналы проекта), а не только в те, что реально получили ступень эскалации этого инцидента.

Как остановить эскалацию: подтверждение (ack)

На карточке открытого инцидента (лента инцидентов, список хостов, аптайм и т. д.) у оператора есть кнопка «Подтвердить». Подтверждение останавливает дальнейшую эскалацию — новые ступени лесенки не отправляются, — но не закрывает инцидент: он остаётся открытым до тех пор, пока проблема не разрешится сама (сработает автоматическое закрытие своего источника). Кто и когда подтвердил инцидент — видно на карточке.

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

Особый случай: аптайм

Аптайм эскалируется так же, как остальные пять источников, с одним отличием: самое первое уведомление «сайт недоступен» уходит сразу же (либо по истечении грейса схлопывания гонки, если у монитора задекларирован родитель — см. Подавление шторма) и задержку первой ступени игнорирует. По расписанию настроенной лесенки идут только ступень 2 и далее.

Взаимодействие с окнами обслуживания и зависимостями

Решение «эскалировать или нет» принимается заново на каждой отправке ступени, а не замораживается в момент открытия инцидента: если окно обслуживания проекта началось уже после того, как инцидент открылся, очередная ступень всё равно не уйдёт, пока окно активно (см. Окна обслуживания). Точно так же инцидент, чей узел зависит от уже упавшего родителя (см. Подавление шторма), не продвигается по лесенке, пока подавлен.

Переменные окружения

ПеременнаяПо умолчаниюОписание
GOTCHA_ESCALATION_INTERVAL_SECONDS60Как часто (в секундах) централизованный планировщик проходит по всем открытым неподтверждённым инцидентам шести источников и продвигает лесенку на очередную ступень, если её задержка от открытия настала. Минимум — 1 секунда.

Как и у оценщиков метрик/хостов/SLO, сам планировщик эскалаций запускается только в режимах uptime/all, либо при явном включении GOTCHA_EVALUATORS_ENABLED — см. Конфигурацию. Лог доставленных ступеней (incident_escalations) хранится тем же сроком, что и сами инциденты, — GOTCHA_INCIDENT_RETENTION_DAYS.

Смотрите также

  • Оповещения — каналы доставки, которыми пользуется каждая ступень лесенки.
  • Подавление шторма — грейс схлопывания гонки и подавление алертов зависимых узлов.
  • Группы инцидентов — как эскалация и подтверждение отражаются на ленте, когда инциденты сворачиваются в одну карточку.
  • Хосты — один из шести источников инцидентов, эскалируемых по этим лесенкам.
  • SLO — ещё один источник: инциденты сжигания бюджета.