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