Реакция малых групп на инциденты

Реакция на инциденты для небольших групп, которые все еще нуждаются в четком владении.

Маленьким командам нужны те же основные ответы, что и крупным: что сломалось, кто им владеет, кто был уведомлен и что произошло дальше.

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

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

Бизнес-пример: оплата сломалась после закрытия офиса

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

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

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

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

Что измерять. Фиксируйте время от первого алерта, требующего реакции, до ACK, долю подтверждений в пределах внутренней цели и число ручных переназначений. Отдельно отслеживайте ошибки оплаты и время до возобновления успешных платежей в мониторинге магазина.

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

Четыре инженера, один биллинг и понятная цепочка ответственных

Допустим, четыре инженера поддерживают API биллинга. Начните с одной команды и основной ротации с еженедельной сменой. Укажите в маршруте сервис по умолчанию и один проверенный канал доставки. Явно назначьте резервного дежурного: общий чат не заменяет политику эскалации.

Объект Пример настройки в интерфейсе
Собственность Команда payments; сервис billing-api; ротация payments-primary с четырьмя активными участниками и покрытием 24/7.
Приём событий Источник webhook, сервис по умолчанию billing-api, эскалация по политике и подключённые каналы уведомлений.
Эскалация Правило 1: основная ротация, задержка 300 секунд. Правило 2: конкретный резервный пользователь, задержка 600 секунд. Для этого пилота задайте repeat_count=0.

Настройте каналы и контакты дежурных до отправки алерта. Откройте полную диагностику On-call Health: зелёный статус в таблице сам по себе не проверяет будущее покрытие и не доказывает доставку сообщения на телефон.

Отправьте сбой, затем восстановление

Отправьте эти JSON-тела по отдельности на POST /api/integrations/webhook с заголовками Content-Type: application/json и Authorization: Bearer ROUTE_TOKEN. Подставьте токен тестового маршрута из интерфейса; не сохраняйте его в репозиторий или общие логи. Это формат generic webhook, а не нормализованное событие Simulator.

{
  "status": "firing",
  "fingerprint": "billing-api:health:prod",
  "title": "Billing API health check failed",
  "severity": "critical",
  "labels": {
    "alertname": "BillingUnavailable",
    "environment": "production",
    "service": "billing-api"
  }
}
{
  "status": "resolved",
  "fingerprint": "billing-api:health:prod",
  "title": "Billing API health check failed",
  "severity": "critical",
  "labels": {
    "alertname": "BillingUnavailable",
    "environment": "production",
    "service": "billing-api"
  }
}

При восстановлении сохраните тот же маршрут, fingerprint и метки группировки. Fingerprint идентифицирует дочерний алерт; новое случайное значение при каждом запросе ломает дедупликацию. Восстановление без соответствующего алерта не создаёт новую группу.

Проверьте всю цепочку до первой настоящей ночной смены

  1. Дважды отправьте тело события firing. Ожидайте один дочерний алерт, нужный сервис и текущего основного дежурного; проверьте реальную доставку, а не только успешный HTTP-ответ.
  2. Оставьте отдельный тестовый алерт без подтверждения. Проверьте, что после задержки первого правила адресатом становится резервный дежурный. Период работы планировщика, очереди и доставка провайдером означают, что это не SLA доставки ровно за пять минут.
  3. Подтвердите другую тестовую группу и убедитесь, что ожидающие уведомления, предназначенные только для состояния firing, прекращаются. Отправьте восстановление и проверьте, что группа переходит в resolved, когда в ней не осталось активных дочерних алертов.
  4. Создайте временную подмену в ротации и повторите проверку. Убедитесь, что фактически назначен подменяющий дежурный, затем удалите тестовую настройку.

Знайте, когда цепочка остановится

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

ACK означает принятие ответственности, а не восстановление биллинга. IR не может починить приложение или заменить отсутствующего инженера. Оставьте внешний способ связаться с командой на случай недоступности IR или провайдера уведомлений и объясните его при вводе сотрудников в работу.