Оповещения · Эскалация

Матрица эскалации и шум оповещений: кого будить и когда

Две жалобы руководителей ИТ звучат как разные проблемы. Первая: «дежурную смену заваливает оповещениями, инженер смотрит в экран и уже ничего не видит». Вторая: «о падении ключевого сервиса я узнал от разгневанного клиента, а не от своих». На деле это одна проблема с двух концов. Пока поток сигналов мониторинга не разделён на те, по которым кто-то должен действовать, и все остальные, схема эскалации остаётся бумагой: она говорит, кого поднимать, но не говорит, по какому сигналу.

Ниже - как шум устроен, чем его измерить и как сократить, а затем как из очищенного потока построить матрицу эскалации, которая работает и в три часа ночи, а не только на совещании. Опора - практики ITIL 4 «мониторинг и управление событиями» и «управление инцидентами», а также принципы дежурства SRE Google.

  1. Откуда берётся шум
  2. Чем измерить шум
  3. Три класса событий и правило одного адресата
  4. Семь шагов сокращения потока
  5. Приоритет: влияние и срочность
  6. Матрица эскалации: кто, когда, за сколько
  7. Когда будить руководителя
  8. Что видно в данных

1. Откуда берётся шум

Шум не появляется сразу. Он копится годами, и почти каждый его источник в своё время был разумным решением. Поэтому чистить поток трудно: спорить приходится не с ошибкой, а с чьим-то прошлым здравым смыслом.

  • Пороги. После крупной аварии порог срабатывания снижают с запасом. Таких аварий больше не случается, а сигналы остаются. Через год никто не помнит, почему загрузка диска в 70% считается поводом для звонка, но и отключить страшно.
  • Наблюдение за железом, а не за услугой. Мониторинг заводят по списку оборудования: каждый сервер, порт, диск. Отказ одного коммутатора превращается в десятки сообщений о недоступности всего, что за ним стоит, вместо одного - о причине.
  • Нет тишины на время работ. Плановое обслуживание и перезагрузки после обновлений порождают поток «аварийных» сообщений. Команда привыкает их не замечать - и однажды не замечает настоящий сбой, совпавший по времени с работами.
  • Мерцание. Канал или служба пропадает и возвращается несколько раз за минуту (flapping). Каждый переход - пара сообщений. Инцидента может не быть вовсе, а десяток строк в ленте уже есть.
  • Сигналы без адресата. Сообщение уходит в общий чат на полсотни человек, где за него отвечает «никто». Такой сигнал не обрабатывают - его только читают.
  • Наследство ушедших систем и людей. Проверки под сервис, которого больше нет; правила инженера, уволившегося три года назад. Отключить страшно: никто не знает, что сломается.

Итог у всех причин один, и он не технический, а человеческий: усталость от оповещений (alert fatigue). Когда сигналов слишком много, люди начинают пробегать их глазами и игнорировать, пропуская настоящий сбой, скрытый в шуме. Дежурный перестаёт читать ленту и выхватывает знакомые картинки. Это работает до первого важного сообщения в незнакомой форме. Так шум превращается из неудобства в риск для бизнеса.

2. Чем измерить шум

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

ПоказательКак считаетсяОриентирО чём говорит
Доля сигналов без действия Сигналы, закрытые без единого действия, делённые на все сигналы Для тех, что будят человека, - стремится к нулю: по принципу SRE каждое такое оповещение должно требовать действия Главный показатель шума. Если он высокий, остальные можно пока не считать: сначала чистить
Сигналов на один инцидент Число сигналов за период, делённое на число инцидентов Единицы, а не десятки (наш ориентир) Десятки означают, что нет объединения повторов и связанных событий, а не что инфраструктура «активная»
Доля мерцаний Сигналы, исчезнувшие сами раньше, чем дежурный успел среагировать Заметная доля - повод ввести выдержку времени Сигнал сработал на случайный всплеск, а не на устойчивое состояние
Ночные пробуждения без инцидента Ночные сигналы, не приведшие к инциденту, делённые на все ночные Каждое такое - кандидат на удаление из ночного маршрута Цена в людях: разбуженный зря инженер хуже работает весь следующий день
Инцидентов за смену Инциденты, доставшиеся одному дежурному, в среднем за смену По ориентиру Google - не больше двух за 12 часов: разбор одного с исправлением и записью занимает около 6 часов Больше - дежурный только тушит пожары и не успевает устранять причины
Сигналы без адресата Правила, которые уходят в общий канал, а не на роль или дежурство Ноль Сигнал без ответственного не обрабатывается - его только читают

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

3. Три класса событий и правило одного адресата

ITIL делит события на три класса. Информационное: факт зафиксирован, действий не нужно (резервная копия сделана, пользователь вошёл). Предупреждение: показатель приближается к границе, действие понадобится, но не сейчас (диск заполнен на 80%). Исключение: нарушение, действовать нужно немедленно (сервис недоступен).

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

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

4. Семь шагов сокращения потока

Порядок не случаен. Первые три шага дают видимый результат за несколько дней и почти ничего не стоят - с них легко получить согласие команды. Последние требуют работы с данными и разговора с владельцами услуг.

  1. Объединение повторов. Повторное сообщение о том же состоянии обновляет открытое событие, а не создаёт новое (дедупликация). Один отказ - одна строка со счётчиком повторов.
  2. Тишина на время работ. Подавление оповещений на время обслуживания, привязанное к календарю изменений. Побочный эффект ценнее основного: без точного календаря подавление не настроить, и календарь появляется.
  3. Выдержка времени. Состояние должно продержаться заданное время, прежде чем станет сигналом. Убирает мерцание, не трогая пороги.
  4. Удаление сигналов без действия. Берём правила, отсортированные по числу срабатываний, и по каждому из верхних задаём один вопрос: что человек делает, получив это? Ответа нет - правило уходит в журнал. Не отключается, а перестаёт будить.
  5. Пороги по данным, а не по круглым числам. Порог ставится по фактическому поведению показателя за несколько месяцев. «90% диска» - круглое число. «Уровень, выше которого показатель был 2% времени, и каждый раз это кончалось сбоем» - порог.
  6. Связывание по зависимостям. Если известно, что за коммутатором стоят двадцать серверов, его отказ даёт одно событие о причине, а не двадцать одно (корреляция). Нужна хотя бы грубая карта зависимостей - это самый долгий шаг из семи.
  7. Регулярный пересмотр. Раз в квартал - полчаса на самые шумные правила и на правила, которые не сработали ни разу. Первые шумят, вторые, скорее всего, сломаны и молчат не потому, что всё хорошо. Google SRE советует разбирать статистику оповещений с руководством так же - раз в квартал.

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

5. Приоритет: влияние и срочность

Матрица эскалации начинается не с людей, а с приоритета. По ITIL приоритет инцидента складывается из двух независимых вещей: влияния (сколько пользователей и услуг задето и каких) и срочности (как быстро последствия станут серьёзными). Их часто путают: сбой у одного человека может быть срочным - например, у кассы в час пик, - а массовое мелкое неудобство - несрочным. Уровней обычно четыре или пять; ниже типичный вариант из четырёх.

ПриоритетТипичное содержаниеКто узнаёт сразуОриентир по срокам
P1 · критический Ключевая услуга недоступна полностью или для значимой части клиентов; обходного пути нет Дежурный, старший смены, руководитель эксплуатации, владелец услуги Реакция - минуты. Первое сообщение клиентам - в первый час. Дальше - обновления через равные промежутки
P2 · высокий Услуга работает хуже обычного или потерян резерв: следующий отказ станет критическим Дежурный, старший смены; руководитель - сводкой Реакция - в течение смены. Восстановление - в тот же день
P3 · средний Частичный отказ, есть обходной путь, работа продолжается Ответственная группа, в рабочее время Плановая очередь. Ночью никого не будит
P4 · низкий Неудобство, внешний вид, единичный запрос Очередь группы По мере сил команды

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

Правило, которое экономит много ночных споров (наша практика): потеря резерва - это P2, а не P3. Услуга работает, клиент ничего не замечает, и хочется отложить до утра. Но любой следующий отказ теперь критический: запас прочности, ради которого ставили резерв, уже израсходован.

6. Матрица эскалации: кто, когда, за сколько

В ITIL эскалация бывает двух видов, и смешивать их не стоит. Функциональная: задача переходит к тому, у кого больше знаний или прав - от дежурного к инженеру по направлению, дальше к производителю или подрядчику. Её уровни принято называть линиями поддержки: L1, L2, L3. Иерархическая: вопрос поднимается по управленческой линии, когда нужны решения, деньги, приоритеты или общение с внешним миром. Первая ускоряет починку, вторая снимает препятствия; один инцидент может требовать обеих. Обозначения M1 и M2 в таблице - наши, для краткости.

УровеньКтоЧто делаетКогда включается
L1функциональная Дежурный смены, служба поддержки Принимает сигнал, ставит приоритет, выполняет известное обходное решение по инструкции, ведёт запись Сразу, по любому событию класса «исключение»
L2функциональная Инженер по направлению: сеть, серверы, приложение, база данных Диагностика за пределами инструкции, изменение настроек, поиск причины Инструкции нет или она не помогла; истёк контрольный срок L1 для этого приоритета
L3функциональная Архитектор, разработчики, производитель оборудования или программ, подрядчик Разбор дефекта, исправление, обращение в поддержку поставщика Причина внутри продукта или требует изменить архитектуру
M1иерархическая Руководитель эксплуатации, владелец услуги Расставляет приоритеты между инцидентами, разрешает нештатные действия, сообщает бизнесу о ходе работ P1 - с первой минуты; P2 - по истечении контрольного срока
M2иерархическая ИТ-директор, руководство компании Общение с клиентами и прессой, решения с деньгами и рисками, переговоры с поставщиком на своём уровне По правилам пробуждения - раздел 7

Три признака отличают работающую матрицу от нарисованной. По таймеру, а не по самочувствию. Истёк контрольный срок - следующий уровень подключается сам, без внутренней борьбы «звонить или ещё подождать». Эскалация - не наказание. Если за подъём вопроса наверх спрашивают «почему не справился», инженер будет тянуть до последнего. В SRE для этого есть понятие разбора без поиска виноватых (blameless): разбирают события и правила, а не людей. У каждой роли есть замена. Роль без второго контакта - это конкретный человек, и в его отпуске уровень эскалации исчезает.

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

7. Когда будить руководителя

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

  • Затронуты клиенты или деньги. Услуга, которой пользуются снаружи, недоступна или искажает данные. Не «может быть затронута», а есть признак, что уже затронута.
  • Нужно решение сверх прав дежурного. Отключить часть функций, откатить обновление, переключить площадку, потратить деньги, привлечь подрядчика вне договора.
  • Нужно говорить с внешним миром. Клиенты, регулятор, пресса, крупный партнёр. Молчание в этот момент обходится дороже самой аварии, а говорить от лица компании дежурный не должен.
  • Прогноз хуже факта. Сейчас всё работает, но события ведут к критическому: заканчивается место, растёт очередь, отказал резерв, авария у поставщика расширяется. Разбудить сейчас дешевле, чем через два часа.

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

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

8. Что видно в данных

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

  • Сломанная эскалация: большой разрыв между началом сбоя и началом работ. Если инцидент длится два часа, а сама починка заняла пятнадцать минут, значит, чинят быстро, но долго ищут, кто должен чинить. В DevOps эту часть измеряют средним временем подтверждения (MTTA). Это дефект маршрутизации, а не квалификации.
  • Шум: соотношение сигналов и инцидентов и доля сигналов, закрытых без единого действия. Обе величины считаются механически.
  • Формальные приоритеты: если почти все инциденты в базе имеют один и тот же приоритет, приоритизации нет - есть поле в форме.
  • Ночная нагрузка: суточный профиль и доля ночных пробуждений, закончившихся реальным инцидентом. Это цена текущих правил, выраженная в разбуженных людях.
  • Повторы: один и тот же сбой возвращается неделями. Значит, эскалация каждый раз заново тушит то, что уже тушили. Это вопрос уже не к матрице, а к управлению проблемами - практике ITIL, которая ищет и устраняет причины.

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

Если хотите прикинуть, где ваша служба сейчас, есть два способа. Быстрый, словами - тест зрелости в нашем боте: 12 вопросов, несколько минут, в конце уровень и несколько советов. Точный, по данным - прислать выгрузку инцидентов: вернём разбор: где концентрируется простой, как быстро чинят и в какие часы копятся сбои.

Разбираете это внутри команды и хотите обсудить результат с инженером-эксплуатационником - .