Как разобрать инцидент после восстановления: хронология, причины и проверяемые действия

Сервис восстановлен, алерты завершились, и нужно понять, что изменить до следующего сбоя. В чате остались десятки сообщений, часть команд повторялась, а первое объяснение уже кажется очевидным. Если сразу написать «причина — неудачный релиз», можно потерять важные условия: почему проверка его пропустила и почему возврат занял так долго.

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

Соберём события с источниками

Возьмём учебный сценарий: после изменения конфигурации приложение стало превышать лимит подключений к базе. Это вымышленный пример структуры разбора, а не отчёт о реальной аварии. Время ниже приведено в UTC, чтобы журналы разных компонентов можно было сопоставить.

ВремяНаблюдениеИсточник
10:02Началось применение конфигурацииЖурнал pipeline
10:04Растут ошибки чтения заказовМетрики клиентского маршрута
10:06Отправлено уведомлениеЖурнал получателя алерта
10:09Начат возврат конфигурацииЖурнал изменения
10:12Проверка операции успешна, ошибки снизилисьТестовый запрос и метрики

Для каждого события сохраните ссылку на исходник, идентификатор релиза или запрос метрик. Если точное начало отказа неизвестно, укажите диапазон между последней подтверждённой успешной операцией и первым плохим наблюдением. Не превращайте время первого алерта в начало воздействия автоматически.

Разделим действие и его эффект

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

Также различайте время вычисления алерта, отправки и получения человеком. Задержка может находиться в выдержке for, группировке, доставке или реакции. Если записать только «мониторинг сработал поздно», действие по улучшению останется неопределённым.

Проверим причинное объяснение

Совпадение релиза и ошибок — сильная подсказка, но объяснение требует механизма. Сравните изменённое значение пула, количество экземпляров и лимит базы. Уточните, применился ли параметр ко всем процессам и какие соединения учитывает сервер базы. Число из конфигурации одного экземпляра нельзя напрямую сравнивать с общим лимитом без числа реплик.

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

Сделаем действия проверяемыми

«Улучшить тесты» не задаёт завершённого состояния. Более точное действие: добавить проверку, которая отклоняет конфигурацию, если число реплик, умноженное на максимум пула, превышает согласованный бюджет соединений с учётом резерва для других клиентов. У действия должны быть владелец, срок, приоритет и тест, который падает на конфигурации инцидента.

Отдельное действие может сократить восстановление: сохранить предыдущую конфигурацию как неизменяемый артефакт и проверить возврат на стенде. Ещё одно — улучшить обнаружение по пользовательской ошибке. Эти изменения решают разные задачи: предотвратить повтор, быстрее обнаружить и уменьшить последствия.

Проверим, что разбор изменил систему

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

Обсуждение должно объяснять доступную человеку информацию в тот момент. Формулировка «инженер был невнимателен» не помогает изменить путь релиза. Полезный вопрос — какое устройство системы позволило обычному действию вызвать такой масштаб воздействия и какая проверяемая граница теперь это остановит.

Ещё по теме

Продолжить изучение

Хотите глубже разобраться в надёжности сервисов и работе с инцидентами? Посмотрите программу «DevOps Engineer PRO: от Junior до Middle».

Продолжить на практике

  • DevOps Engineer PRO: от Junior до Middle ↗

    Перейдите от запуска отдельных инструментов к проектированию надёжной инфраструктуры. Kubernetes, IaC, безопасные релизы, SLO и восстановление после сбоев — на едином проекте с несколькими окружениями.