Алёрты по z-score — красный флаг: чаще вы ловите календарь, а не инцидент.

Типичная картина: метрика “просела”, алёрт горит, чат оживает, команда дёргается. Через пару часов выясняется: выходной, рассылка, платёжный цикл, смена трафика, релиз без эффекта. Цена этого шума простая: вы перестаёте верить алёртам, пропускаете реальные поломки и тратите политический капитал на ложные тревоги.

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

Практичный минимум, который делает алёрты взрослыми:

  1. Календарь и сезонность как базовая поправка: день недели, праздники, конец месяца, маркетинговые активности. Сравнивайте с “похожими” днями, а не со вчерашним средним.
  2. Робастная статистика: медиана и MAD, винзоризация, лог-скейл для тяжёлых хвостов, процентильные метрики вместо средних там, где есть выбросы. Если метрика легко ломается единичными событиями, алёрт будет лгать.
  3. Контрольные метрики-инварианты: то, что не должно меняться от фичи. Например, технические счётчики, доли без влияния на продуктовый смысл, sanity-метрики пайплайна. Если “падает всё”, сначала подозревайте данные.
  4. Алёрты по разрезам: общий график часто маскирует проблему. Минимум — платформы, страны, источники трафика, новые/возвратные. Но правило такое: разрезы должны быть заранее ограничены, иначе вы построите фабрику случайных находок.
  5. Правила эскалации: один алёрт не равен инциденту. Эскалируем, когда одновременно нарушены продуктовая метрика и контрольная/техническая, и есть согласованный “радиус поражения” по разрезам, и эффект держится дольше короткого окна шума.

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