Все дашборды горели зелёным. «Все системы работают штатно». И всё это время мониторинг тихо мне врал.
Настоящую картину показывала очередь в поддержке. Клиенты жаловались на ошибки. Страницы еле грузились. Транзакции отваливались по таймауту. В метриках не было ничего из этого, потому что зелёные дашборды прятали реальные сбои за стеной цифр, которые выглядели убедительно и не значили ровным счётом ничего. Именно этот разрыв — между тем, что мы измеряли, и тем, что чувствовали пользователи — в итоге заставил меня снести всё и перестроить мониторинг с нуля.
Мы мерили то, что легко, а не то, что важно
Это была не диверсия, а путь наименьшего сопротивления. Мы мерили то, что легко измерить: CPU, память, место на диске. Инфраструктурные метрики. Всё то, что любой дефолтный экспортер Prometheus отдаёт бесплатно.
А вот то, что действительно важно, мы не мерили никогда: успешность транзакций, end-to-end latency, долю ошибок по сегментам клиентов. Пользовательский опыт. В итоге серверы могли спокойно работать на 30% CPU, пока чекаут молча сыпал 500-ми, а каждая панель на стене оставалась ровным, уверенным зелёным.
Prometheus и Grafana — классический пример. Ставят все. Правильно настраивает почти никто. И бардак я нахожу всегда один и тот же:
- Prometheus скрапит всё подряд и не алертит ни о чём полезном.
- Дашборды в Grafana собрали на неделе запуска и больше не открывали.
- Нет retention-политики, поэтому диск забивается и мониторинг тихо умирает — монитору нужен свой монитор.
- Один-единственный инстанс Prometheus, который падает вместе с тем самым приложением, за которым должен следить.
47 дашбордов, 200 алертов, ноль доверия
По цифрам всё выглядело серьёзно. 47 дашбордов. Больше 200 алертов. Похоже на команду, которой не всё равно.
В 44 из этих дашбордов не заглядывал никто. На алерты никто не реагировал: их было слишком много, а контекста в каждом — слишком мало. Это и есть alert fatigue: когда пейджит всё, не пейджит ничто. Зелёный перестал означать «всё хорошо». Он означал «надеюсь, всё хорошо».
Самое неприятное открытие случилось, когда я реально проверил, что вообще репортит. Большая часть парка не слала данные вовсе. Хосты просто молчали, а молчание рисовалось зелёным. Дашборд, который горит зелёным, пока половина инфраструктуры невидима, хуже, чем его отсутствие: без него ты хотя бы знаешь, что ослеп.
Снести и построить заново
Так что я всё переделал — и начал не с инструментов, а с философии.
- Prometheus в HA-режиме с федерацией. Не один инстанс на удачу, а реплицированный сбор с понятным владельцем на каждую команду-сервис.
- Дашборды Grafana, описанные как код. Больше никаких рукотворных шедевров, которые исчезают, стоит кому-то нажать «удалить».
- Сначала пользовательские метрики, инфраструктура — потом.
Число дашбордов упало с 47 до 5. Каждый из пяти рассказывает историю, а не вываливает графики. Если дашборд не отвечал на вопрос, который реально задают во время инцидента, он не выживал.
Алертинг, который уважает дежурного
Алертов стало 12 вместо двух с лишним сотен. Каждый живёт по одному правилу: если по нему никто не действует — удаляем. Я разбил их на тиры с честными определениями:
- Critical: прямо сейчас кто-то теряет деньги.
- Warning: к утру сломается, если проигнорировать.
- Info: уходит на дашборд и не будит никого и никогда.
И у каждого алерта есть ссылка на runbook. Поднять человека в три ночи и не сказать, что делать дальше, — это не мониторинг, это издевательство. Алертить надо на симптомы, которые чувствует пользователь, а не на причины, которые могут ничего не значить.
Самый тяжёлый разговор
Самое сложное было не техническим. Самым сложным было прийти к руководству и сказать: «Наша метрика аптайма 99,9% формально верна и полностью вводит в заблуждение».
Сервер был жив. Приложение — сломано. Это две очень разные вещи, а наша главная метрика их не различала. Никому не в радость слышать, что цифра, которую они называли клиентам, — это удобная выдумка. Но метрика, от которой всем хорошо, пока продукт разваливается, — это не метрика, которую стоит хранить.
Мониторинг — это продукт
Сдвиг в мышлении, благодаря которому всё это прижилось: мониторинг — это продукт, и у него есть пользователи. Его пользователи — дежурные инженеры в три часа ночи. Они заслуживают той же заботы, что и платящий клиент: понятные истории, минимум шума, очевидный следующий шаг.
Если ты меришь всё — ты не меришь ничего. Меряй то, что важно, и показывай реальную картину, даже когда эта картина кому-то неудобна.
Так что вот неудобный вопрос. Если твой дашборд прямо сейчас зелёный, а пользователи жалуются — он тебя не успокаивает. Он тебе врёт.