Алерты по z-score по метрикам часто бесполезны: они ловят календарь, а не проблемы.

Типичная картина: в понедельник всё “горит”, к вечеру “само проходит”, команда перестаёт реагировать. Цена — пропущенные реальные инциденты и выученная беспомощность: алёрты есть, доверия к ним нет.

Почему так происходит. z-score молча предполагает, что у метрики есть стабильные среднее и разброс, а отклонения редкие и симметричные. В продуктовых метриках почти всегда иначе: сезонность по дням недели и часам, праздники и релизы, автокорреляция, тяжёлые хвосты, всплески из-за одного сегмента, плюс эффект “много метрик и разрезов” — статистически что-то обязательно “вылетит”.

Практичный минимум, чтобы алёрты стали сигналом, а не шумом:

  1. Календарь и сезонность как базовый слой. Сравнивайте с “таким же временем” (день недели, час, праздничные дни), а не с вчерашним средним. Любая метрика без сезонной базовой линии будет фальшивить.

  2. Робастность вместо веры в нормальность. Используйте медианы, перцентили, обрезку хвостов, лог-преобразования там, где есть выбросы и перекос. Иначе один крупный клиент или бот нарисует “инцидент”.

  3. Контрольные метрики-инварианты. Держите рядом метрику, которая не должна меняться от фичи или трафика (например, технические счётчики, доли, соотношения). Если “сломалось всё сразу” — чаще проблема в данных, а не в продукте.

  4. Алёрты по разрезам, но с guardrails. Сегменты важны, но без правил они убьют вас ложными срабатываниями. Минимум: порог по объёму, стабильный состав сегмента, и приоритет ограниченного набора критичных срезов.

  5. Ясные правила эскалации. Что проверяем сначала: пайплайн, трекинг, задержки, дубли, смену схемы. Когда зовём инженера, когда продукт. Когда алёрт “наблюдаем”, а когда “инцидент”. Без этого z-score превращается в генератор тревоги.

В правильной практике алёрт — это не “отклонение от среднего”, а короткий сценарий диагностики: что могло сломаться и как быстро отличить продуктовый эффект от проблем данных. z-score можно оставить как один из простых сигналов, но только после сезонной базовой линии и рядом с контрольными метриками. Обычно спорят про “сложность”, но на деле дороже всего шум, а не настройка.