Матрица эскалации - оповещение других
Цель: Настроить матрицу эскалации, которая по истечении определённого времени нерешённого инцидента (сбоя) отправляет уведомление другим ответственным лицам или в другой канал.
Когда применять эскалацию
Типичный сценарий: ваш сервис падает ночью, основной дежурный не реагирует в течение 15 минут - система должна автоматически уведомить начальника смены, а ещё через час и руководителя. Эскалация не даёт сбою остаться незамеченным.
Шаг 1: Создайте политику эскалации
- Перейдите в Dashboard → Эскалация (или по адресу
/dashboard/escalation). - Укажите название (например, "Ночное дежурство") и нажмите + Новая политика.
Шаг 2: Добавьте шаги
Политика - это последовательность шагов. Каждый шаг содержит:
- Задержка (мин) - через сколько минут от начала инцидента должен сработать шаг.
0означает немедленно. - Канал -
E-mailилиWebhook(Slack, Discord, собственный целевой endpoint). - Получатели - адреса e-mail, разделённые запятой, или адрес webhook.
- Примечание - необязательно, что должен сделать получатель.
Пример 3-уровневой политики:
- Шаг 1: 0 мин, e-mail основному дежурному.
- Шаг 2: 15 мин, e-mail начальнику смены.
- Шаг 3: 60 мин, Slack webhook в канал #ops-emergency.
Шаг 3: Назначьте политику мониторам
Политику можно назначить:
- Глобально - кнопкой "Установить по умолчанию" она применяется ко всем вашим мониторам, у которых нет собственной.
- Для конкретного монитора - при создании или редактировании монитора выберите конкретную политику.
Подтверждение инцидента (ACK)
Каждое уведомление об эскалации содержит ссылку ACK (acknowledge, то есть "я увидел и занимаюсь этим"). Достаточно нажать на неё, и:
- Дальнейшие шаги эскалации останавливаются.
- В системе сохраняется, кто и когда подтвердил инцидент.
- Остальным на том же шаге больше не приходят дальнейшие сообщения об эскалации по этому инциденту.
Ссылка ACK не требует входа в систему - она подписана уникальным токеном (одноразовой строкой), поэтому ею не сможет воспользоваться кто-то другой. После устранения инцидента (монитор возвращается в состояние UP) эскалация также автоматически завершается.
Формат webhook
Для Slack, Discord, Microsoft Teams и собственного endpoint мы отправляем запрос методом POST. Для Slack, Discord и Teams мы форматируем payload нативно (Block Kit / Embed / Adaptive Card). Для остальных адресов (собственный endpoint) мы отправляем универсальный JSON:
{
"event": "incident_escalation",
"monitor": {
"name": "Продакшен-сайт",
"target": "https://example.com",
"url": "https://epulz.io/dashboard/monitor/42"
},
"message": "ESCALATION step 2 (delay 15 min): e-mail начальнику смены",
"timestamp": "2026-05-31T14:33:45+00:00",
"source": "epulzio"
}
Поле event при эскалации имеет значение incident_escalation. В поле message находится текстовое описание шага (порядок шага, задержка и описание действия). Других полей (incident_id, step_order, ack_url) на верхнем уровне нет - ссылка ACK является частью отформатированного сообщения в Slack/Discord/Teams. Для Slack достаточно адреса Incoming webhook. Для адреса Discord параметр ?wait=true не нужен.
Часто задаваемые вопросы
Что произойдёт, если инцидент длится дольше, чем последний шаг?
Дальнейшие эскалации больше не отправляются. Для повторных напоминаний добавьте ещё один шаг с большей задержкой (например, 240 мин).
Работает ли эскалация во время тихого режима (Quiet hours)?
Да. Эскалация идёт по своему собственному каналу (e-mail, webhook), и тихий режим на неё не распространяется - он предназначен только для основных уведомлений.
Можно ли протестировать политику, не дожидаясь реального сбоя?
Проще всего: создайте тестовый монитор с адресом https://test-bad-domain.invalid, назначьте ему политику с короткой задержкой (1 мин) и следите за письмами.