Защита от ложных срабатываний
Ложное срабатывание (false positive) — это когда мониторинг прислал «DOWN!», а сайт на самом деле работает. Один такой ложный алерт в 3 ночи — и доверие к мониторингу подорвано. Мы делаем три уровня защиты от false-positive.
Уровень 1. Многорегиональные проверки
Section titled “Уровень 1. Многорегиональные проверки”Каждую проверку выполняют одновременно три агента: Москва, Амстердам, США. Решение о статусе принимается по согласию:
- UP — хотя бы один агент видит OK
- DOWN — все ответившие агенты согласны что сайт упал
Если только один регион видит проблему — это проблема у проверяющего, а не у вашего сайта. Мы не шлём алерт.
Подробнее в статье Проверки из 3 регионов.
Уровень 2. Ретраи при сетевых ошибках
Section titled “Уровень 2. Ретраи при сетевых ошибках”Если агент не может подключиться (таймаут, отказ соединения) — он повторяет проверку через 1 секунду. Всего две попытки.
Это защищает от мгновенных сетевых глюков: пакет потерялся, маршрут моргнул, TCP не успел установиться. Если на второй попытке сайт открылся — считаем что всё хорошо, ничего не было.
Таймауты для проверок:
- Подключение — 10 секунд
- Полная проверка — 15 секунд
Если сайт открывается медленнее 15 секунд — это уже считается падением. Так и есть: для пользователя сайт который грузится 20+ секунд по факту мёртв.
Уровень 3. Двойная проверка через curl
Section titled “Уровень 3. Двойная проверка через curl”Это самый интересный уровень. Когда наша асинхронная HTTP-проверка (через библиотеку httpx) сказала «DOWN» — мы не сразу шлём алерт. Сначала перепроверяем через стандартный curl.
Зачем это нужно:
httpxиcurl— разные клиенты. У них немного отличается работа с TLS, парсингом заголовков, обработкой 100-Continue. Иногдаhttpxпадает там, гдеcurlнет.- Имитация настоящего пользователя.
curl— самый «обычный» HTTP-клиент, его поведение ближе всего к браузеру.
Если curl говорит UP — мы заменяем результат на UP, алерт не идёт. Это спасает от ложных алертов из-за нюансов TLS-handshake или особенностей конкретного сервера.
Если оба согласны DOWN — значит, действительно DOWN, отправляем уведомление.
Fast-recovery: быстрое UP
Section titled “Fast-recovery: быстрое UP”После того как сайт упал — у нас включается режим fast-recovery: специальный мини-цикл, который проверяет упавшие сайты каждые 5 секунд (вместо обычной минуты).
Это нужно чтобы:
- Узнать о восстановлении сайта быстро, а не ждать минуту
- Отправить UP-алерт в течение секунд после фактического восстановления
Fast-recovery работает только для тех сайтов которые сейчас DOWN и упали не более 24 часов назад. После 24 часов простоя мы переключаемся обратно на обычный минутный интервал — раз сайт лежит давно, нет смысла дёргать его каждые 5 секунд.
Что считаем DOWN
Section titled “Что считаем DOWN”Мониторинг шлёт DOWN-уведомление если выполнены все условия:
- Все ответившие агенты вернули ошибку
- Это не однократная сетевая ошибка (ретрай не помог)
curlтоже подтвердил падение- Сайт не на паузе
Если хотя бы одно условие нарушено — алерт не идёт.
Что считаем UP-после-DOWN
Section titled “Что считаем UP-после-DOWN”UP-уведомление приходит когда:
- Сайт ранее был в статусе DOWN
- Хотя бы один агент видит OK
- Этот OK подтверждается следующей проверкой (защита от моргания «UP-DOWN-UP»)
Если ложный DOWN всё-таки случился
Section titled “Если ложный DOWN всё-таки случился”Бывает. Никакая защита не даёт 100%. Если получили ложный алерт:
- Не паникуйте — проверьте сайт сами, через браузер
- Если сайт работает — посмотрите в кабинете историю проверок: что увидели агенты в момент алерта
- Если проблема системная (например, наш агент косячит) — напишите в поддержку, разберёмся и поправим