Шаблон инженерного постмортема (без обвинений, с конкретными действиями)

Почему постмортемы превращаются в поиск виноватых

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

Исправление структурно: постройте таймлайн инцидента вместе в начале постмортема, прежде чем кто-либо назовёт корневую причину. Как только весь зал посмотрел на последовательность событий — что́ изменилось и когда, кто что видел и в какое время, — причину куда легче обсуждать и куда меньше вероятность, что она свалится в обвинения. Это та ошибка в порядке, которую совершает большинство шаблонов: они ставят корневую причину перед таймлайном, потому что шаблон и создан ради корневой причины. Но именно таймлайн делает разбор корневой причины честным.

Повестка (копируйте и вставляйте)

Длительность: 60 минут для простого инцидента; 90 минут для сложных многосистемных отказов
Формат: с ведущим; присутствуют все, кто реагировал, и дежурный инженер; готовьтесь асинхронно с предварительным документом


Раздел 1 — Сводка по инциденту (5 мин)

  • Даты и длительность инцидента
  • Классификация серьёзности и затронутые системы
  • Кто его обнаружил и как (обращение клиента, алерт, инженер, мониторинг)
  • Этот раздел только фактический; никакого анализа пока

Раздел 2 — Таймлайн (20 мин)

  • Стройте таймлайн совместно на экране — не заранее написанный документ
  • Последовательность: что изменилось, что наблюдалось, кто действовал, что решили
  • Каждая временна́я метка должна иметь источник (строка лога, PagerDuty, сообщение в Slack)
  • Когда таймлайн готов, спросите: все согласны, что произошло именно это? Разрешите разногласия, прежде чем идти дальше

Раздел 3 — Сводка последствий (5 мин)

  • Влияние на клиентов: кого затронуло, на сколько, каким образом
  • Влияние на бизнес: выручка, SLA, репутация
  • Внутреннее влияние: часы дежурства, срыв работы команды
  • Держите фактическим; это закрепляет вопрос «насколько всё было плохо» без публицистики

Раздел 4 — Корневая причина и способствующие факторы (20 мин)

  • Корневая причина: наиболее непосредственное изменение или условие, сделавшее инцидент возможным
  • Способствующие факторы: условия, которые сделали его хуже, труднее обнаружимым или медленнее устранимым
  • Наиболее полезные постмортемы выявляют 3–5 способствующих факторов наряду с корневой причиной; исправление одной лишь корневой причины часто упускает системные условия
  • По каждому фактору спрашивайте: принимал ли какой-то человек или команда решение, казавшееся разумным при доступной тогда информации? Если да, фактор системный, а не персональный

Раздел 5 — Что прошло хорошо (5 мин)

  • Что в обнаружении или реагировании сработало лучше ожидаемого?
  • Какой существующий процесс или инструмент ограничил радиус поражения?
  • Это практики, достойные формализации — если раннбук сэкономил 20 минут, отметьте это, чтобы раннбук поддерживали

Раздел 6 — Задачи (15 мин)

  • Каждая задача адресует корневую причину или способствующий фактор — не общее улучшение
  • Один ответственный на пункт; срок поставки, отражающий срочность
  • Классифицируйте: обнаруживать раньше / восстанавливаться быстрее / предотвращать повторение
  • Ограничьтесь действиями, которые команда реально успеет завершить до следующего инцидента, а не всеобъемлющей дорожной картой надёжности

Что заставляет шаблоны постмортема проваливаться

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

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

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

Почему фиксировать постмортем особенно трудно

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

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

О ритме постмортемов

Проводите постмортем в течение 48 часов после устранения инцидента, пока детали свежи. Чем дольше вы ждёте, тем сильнее реконструкция таймлайна зависит от памяти, а не от логов, а память под стрессом ненадёжна. Для инцидентов высокой серьёзности лучше 24 часа. Для мелких инцидентов асинхронные постмортемы — общий документ со структурированными вопросами, просмотренный синхронно, — могут быть эффективнее полноценной встречи. Формат встречи наиболее ценен, когда инцидент был достаточно неоднозначным или высокоставочным, чтобы общая интерпретация имела значение.

Шаблон инженерного постмортема (без обвинений, с конкретными действиями) | Pavleur