Rain Lag

Кабинет теней: как обнаружить сбои, которых ваши метрики не замечают

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

Кабинет теней: как обнаружить сбои, которых ваши метрики не замечают

У каждой команды, отвечающей за надёжность, он есть.

Не дашборд. Не документ с постмортемом. Что‑то потише.

Общая память о «почти» инцидентах.

  • Деплой, который на 90 секунд взлетел по ошибкам, а потом «сам собой» восстановился.
  • Переключение базы данных, которое длилось ровно столько, чтобы всех напугать, но так и не привело к простоям.
  • Ошибка во фича‑флаге, которая должна была сломать прод, но не сломала — из‑за странного распределения трафика.

Никаких обращений от клиентов. Никакой катастрофы в дежурстве. Никакого официального пост‑инцидентного разбора.

И почти всегда: нет метрик, которые по‑настоящему рассказывают эту историю.

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

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


Почти инциденты: о чём система шепчет, но не кричит

В сферах с критическими требованиями к безопасности — авиация, промышленная безопасность — есть сильная идея: near misses (почти инциденты, «чуть не случилось»).

Почти инцидент — это незапланированное событие, которое могло привести к вреду или сбою, но не привело.

OSHA и другие дисциплины безопасности относятся к таким событиям как к золоту:

  • Никто не пострадал.
  • Ничего не взорвалось.
  • Операции продолжаются.

И всё равно событие фиксируется, разбирается и часто приводит к корректирующим действиям.

Почему? Потому что почти инциденты говорят простую и страшную вещь:

Система хрупка так, что это пока не ударило по вам — но ещё ударит.

В программной инфраструктуре — те же паттерны:

  • Неверно настроенная security group, которая не отрезала критичный сервис только потому, что нагрузка была низкой.
  • Узел кэша, который почти упёрся в максимум памяти прямо перед автоматическим обновлением.
  • Раздел Kafka, который был в секундах от необратимого отставания.

Никакого официального сбоя. Никакого красного статуса на статус‑странице. Но система подняла руку.


Почему дашборды не видят ваши почти инциденты

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

Мы проектируем SLO и дашборды вокруг:

  • ошибок (error rate)
  • процентилей задержки (latency percentiles)
  • показателей насыщения ресурсов (saturation)
  • доступности и аптайма

Это необходимо — но недостаточно.

В результате:

  • Если всплеск ошибок сам ушёл — это «глюк».
  • Если задержка остаётся внутри SLO — «всё нормально».
  • Если клиенты не жалуются — «ничего не произошло».

Иными словами, мы считаем, что «нет ущерба, нет сбоя» означает «несобытие».

В дисциплинах безопасности и надёжности это перевёрнуто с ног на голову.

То, что не ломает вас сегодня, часто даёт самые ясные данные о том, что сломает вас завтра.

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

Так и появляется ваш кабинет теней:

  • Истории, живущие в тредах Slack, спонтанных созвонах в Zoom и разговорах у кулера.
  • «Помнишь, как тогда очередь почти взорвалась?»
  • «Нам тогда просто повезло, это вообще‑то надо бы починить… когда‑нибудь».

Если это не в метрике, не в тикете и не в постмортеме — оно исчезает в тени.


От дашбордов к осциллографам: как увидеть тонкие сигналы

В электронике, если сигнал ведёт себя странно, но явно не «мертв», вы не смотрите на одиночное значение напряжения. Вы берёте инструменты:

  • Осциллограф — чтобы видеть временные сигналы с высоким разрешением.
  • Векторскоп — чтобы визуализировать сложные цветовые сигналы, например SMPTE color bars.

Почему? Потому что сложные системы проявляют тонкие, паттерновые аномалии, которые одной цифрой не описать.

Возьмём SMPTE color bars на векторскопе:

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

Именно такого взгляда нам часто не хватает в инфраструктуре:

  • Мы видим «латентность ниже 200 мс» и говорим «ок».
  • Мы не видим, что отдельные пути, тенанты или регионы систематически смещены.
  • Мы пропускаем паттерны почти инцидентов, потому что у нас нет «векторскопа для систем».

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

  • Коррелированные трейсы, которые показывают «почти» исчерпание ресурсов.
  • Высокое временное разрешение во время деплоев, фейловеров и сдвигов нагрузки.
  • Визуализации аномалий, выделяющие маленькие, но устойчивые отклонения.

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


Картируем кабинет теней: относитесь к почти инцидентам как к полноценным инцидентам

Чтобы вытащить теневые инциденты на свет, нужны и процессы, и инструменты.

1. Объявите почти инциденты реальными инцидентами

Создайте явную категорию:

  • Severity N (Near Miss) — событие, которое могло привести к клиентскому или бизнес‑ущербу, но на этот раз не привело.

Запускайте лёгкое расследование, когда вы видите:

  • Нетипичные, но самовосстанавливающиеся пики ошибок/латентности.
  • Насыщение ресурсов, где авто‑масштабирование сработало «в последний момент».
  • Ручные вмешательства, которые «спасли» систему от каскадного отказа.

Цель не в том, чтобы забюрократизировать каждый рывок графика. Цель — сформировать культуру, в которой можно сказать:

«Нам повезло. Давайте поймём почему.»

2. Фиксируйте историю, а не только цифры

Почти инциденты редко убедительны, если вы сохраняете только метрики. Нужна нарративная часть:

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

Эти истории:

  • Выявляют скрытые зависимости, которых нет на схемах.
  • Поднимают на поверхность неявные знания («все знают, что этот сервис не рестартят в 9 утра»).
  • Подсвечивают организационную хрупкость (героизм одного человека, неясные runbook’и).

Иными словами, сама история и есть данные.


Генеративный ИИ как интерпретатор сигналов в историях инцидентов

По мере того как генеративный ИИ входит в инженерные процессы, он становится не только чат‑ботом для примеров кода. Это ещё и распознаватель паттернов в нарративах.

Ваша организация уже производит:

  • Треды в Slack и Teams во время «острых» деплоев
  • Спонтанные документы по инцидентам
  • Заметки в PagerDuty / он‑колл системах
  • Комментарии к PR и сообщения в коммитах

Большинство из этого содержит истории почти инцидентов — но они неструктурированы и не анализируются.

Генеративный ИИ может помочь вам:

1. Вытащить скрытые почти инциденты

Используя переписку и документы (с соблюдением приватности и прав доступа), ИИ может:

  • Кластеризовать похожие события: «деплои сервиса X, потребовавшие ручного отката».
  • Подсвечивать повторяющиеся фразы: «чуть не», «повезло, что…», «хорошо, что мы…», «могло быть намного хуже».
  • Предлагать кандидатов в почти инциденты, которые никогда формально не регистрировались.

2. Интерпретировать и переформулировать истории инцидентов

ИИ может прочитать ваши разборы инцидентов и:

  • Выделить общие способствующие факторы (например, «несобственникованная зависимость», «ручной фейловер», «отсутствующая алерта»).
  • Спроецировать их на современные теоретические модели сложных систем и безопасности (drift into failure, local rationality, динамика «острый конец / тупой конец» и т.п.).
  • Предложить альтернативные рамки осмысления:
    • Вместо «мы накосячили» — «система упростила путь к неправильному действию».
    • Вместо «счастливое спасение» — «повторяющийся паттерн едва избежанного отказа».

Речь не о замене человеческого суждения; это со‑аналитик, который:

  • Не устаёт читать 200 сообщений в Slack.
  • Может связать разрозненные факты за месяцы операционной истории.

3. Проектировать лучшие представления тонких аномалий

Так же как осциллографы и векторскопы дали инженерам новую визуальную грамматику для понимания сигналов, ИИ может помочь спроектировать лучшие визуализации паттернов почти инцидентов:

  • Накладывать друг на друга таймлайны деплоев, конфиг‑изменений и насыщения ресурсов.
  • Подсвечивать «зоны риска», где одновременно сходятся несколько слабых сигналов.
  • Прототипировать дашборды, сфокусированные на индикаторах хрупкости, а не только на KPI‑здоровье.

Практика: как вывести тени на свет

Полноценная AI‑платформа для старта не нужна. Начать картировать ваш кабинет теней можно по шагам:

  1. Дайте имя и учёт почти инцидентам.

    • Добавьте метку или уровень «Near Miss».
    • Поощряйте инженеров кратко описывать события, даже если «никакого влияния не было».
  2. Собирайте истории.

    • Сохраняйте инцидентные каналы в Slack и заметки с созвонов в поископригодном виде.
    • После каждого «острого» события задавайте один вопрос: «Если бы всё было на 10% хуже, что бы произошло?»
  3. Экспериментируйте с анализом при помощи ИИ.

    • Используйте генеративный ИИ, чтобы сводить недели операционного шума в повторяющиеся темы.
    • Спросите его: «Какие паттерны почти инцидентов вы видите в этих событиях?»
  4. Постройте свой «векторскоп».

    • Выберите несколько сигналов, которые коррелируют с почти инцидентами: частота деплоев, частичные отказы, ручные оверрайды.
    • Визуализируйте их вместе в известные сложные периоды (крупные релизы, бэкфилы, миграции).
  5. Замыкайте цикл.

    • Для каждого значимого почти инцидента ведите след до дизайна, процесса или культуры:
      • Можем ли мы изменить дефолты так, чтобы «неправильное» действие стало сложнее?
      • Можем ли мы сделать опасность более видимой раньше?
      • Можем ли мы упростить сообщение «нам повезло» без страха и поиска виноватых?

Заключение: слушать то, чего «не произошло»

Аварии громкие. Почти инциденты — тихие.

Дашборды отлично сообщают, когда вы уже проиграли. Но гораздо хуже — насколько близко вы были к поражению, и как часто это случается.

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

Хрупкость нельзя уменьшить, просто пристальнее глядя на график аптайма. Её уменьшают, внимательно слушая инциденты, которые так и не произошли — и действуя так, как будто произошли.

Тени уже полны историй. Вопрос лишь в том, прочтёте ли вы их до того, как очередная история выйдет на свет.

Кабинет теней: как обнаружить сбои, которых ваши метрики не замечают | Rain Lag