Стратегии перепроверки: подтверждение статуса перед оповещением
Перепроверка - это второе мнение, которое система мониторинга запрашивает перед тем, как поверить смене статуса: повторяет провалившуюся или только что успешную проверку из других локаций, чтобы одна неудачная точка обзора не могла в одиночку открыть инцидент. HostTracker проверяет сайт по расписанию, заданному в настройках мониторинга, и только что обнаруженный статус UP или DOWN считается кандидатом, пока перепроверка его не подтвердит.
Почему одна провалившаяся проверка - еще не сбой
Результат проверки описывает один запрос, из одного места, в один момент. Любой из этих трех факторов может ошибаться насчет сайта в целом. Сеть между одной конкретной точкой проверки и вашим сервером может быть сломана, пока любой другой маршрут в порядке. DNS-запись может еще распространяться в одном регионе и уже быть верной в соседнем. Собственное окружение точки проверки может быть несовместимо с чем-то, что делает ваш сервер.
Если бы система мониторинга действовала по первому же результату, она вызывала бы вас по любому из этих случаев, а заодно портила бы вашу статистику аптайма, поскольку зафиксированный сбой для ваших пользователей на самом деле никогда не происходил. Поэтому обнаруженный статус, UP или DOWN, держится неподтвержденным, пока не будет подтвержден, и только тогда происходит что-либо дальше: уходит оповещение, открывается эпизод, сдвигается число аптайма.
Что ловит перепроверка
Перепроверка из других локаций - это как раз то, что отделяет настоящее, общесайтовое изменение от локального артефакта. Случаи, которые она чаще всего отфильтровывает:
- Короткий простой во время нового деплоя, когда сайт возвращается в строй еще до второй проверки
- Недоступность DNS, пока распространяется изменение конфигурации, - одни резолверы уже отвечают верно, другие пока нет
- Локальный блеклист сайта или адреса точки проверки, видимый только из одной сети
- Проверяющий агент, чье окружение несовместимо с технологиями, которые использует сервер
- Проблемы маршрутизации или пиринга на пути между одной конкретной точкой проверки и сервером
Подтверждающие проверки берутся из гео-региона, настроенного для задачи мониторинга, так что второе мнение приходит из той же части света, где находятся ваши пользователи, а не откуда попало.
Три стратегии перепроверки
HostTracker поддерживает три способа решить, реален ли новый статус.
1. Голосование большинством. Когда проверка возвращает новый статус, система выделяет до 7 новых локаций из гео-региона задачи мониторинга, чтобы его подтвердить. Полученные результаты группируются по статусу, и побеждает более крупная группа. Допустим, проверка из Майами сообщает DOWN, а перепроверки из Нью-Йорка, Бостона и Чикаго возвращаются UP, DOWN, UP. DOWN не подтвержден и отбрасывается, а Майами штрафуется: его больше не будут использовать для проверок этого сайта. Прогоните тот же пример в обратную сторону, когда Майами сообщает UP после DOWN, а Нью-Йорк и Чикаго подтверждают UP, - переход DOWN-UP регистрируется.
2. Заданное число локаций, подтверждающих DOWN. Здесь вы настраиваете минимальное число перепроверок, нужных для подтверждения DOWN, тогда как для UP по-прежнему требуется голосование большинством. При этом числе, установленном в 1, в том же примере достаточно, чтобы только Бостон вернул DOWN, чтобы подтвердить DOWN Майами, даже если Нью-Йорк и Чикаго не согласились.
3. Без перепроверки. Новый статус всегда подтверждается сразу же, как только обнаружен. Это предполагает полное доверие и к серверу, и к окружениям локаций мониторинга. Подходит для нескольких специфических задач мониторинга, и выбирать этот вариант стоит осторожно, потому что любая кратковременная сетевая проблема в одной точке проверки превращается в ложное оповещение и вмятину на показателе аптайма.
Как выбрать стратегию
- Начните с голосования большинством. Это сбалансированный вариант по умолчанию: он стоит нескольких секунд дополнительного времени на подтверждение и убирает почти весь шум от одной точки проверки.
- Понижайте порог подтверждения DOWN, когда быстрое оповещение стоит больше, чем спокойный почтовый ящик. Региональный сбой, который видят только две локации, все равно до вас дойдет - ценой большего числа ложных срабатываний.
- Держите голосование большинством для переходов в UP, как бы вы ни настроили DOWN. Преждевременный UP закрывает еще идущий инцидент и прячет хвост сбоя из вашей статистики.
- Резервируйте вариант без перепроверки для целей, которые вы контролируете от начала до конца, где вы предпочтете разобраться с ложным оповещением, а не ждать подтверждения.
Какую бы стратегию вы ни выбрали, вы можете сами воспроизвести расхождение из двух разных сетей и сравнить, что видит каждая из них:
curl -sS -o /dev/null -w '%{http_code} %{time_total}s\n' https://example.com/
503 из одной сети и 200 из другой - это тот самый паттерн, для решения которого и придумана перепроверка. Если провалившийся статус - это 5xx, а не таймаут, значит сервер ответил, а это уже другая проблема: см. 503 Service Unavailable.
Что дает подтверждение
Именно перепроверки позволяют системе мониторинга часто проверять из множества мест, не превращая эту чувствительность в шум. HostTracker проверяет из 300+ точек в 158 городах, так что независимые локации для второго мнения всегда под рукой, и оповещение по email, SMS, голосовым звонком, в Slack, Telegram и другими способами запускает только подтвержденный переход. Стратегии выше - не исчерпывающий список; поддержка может рассмотреть новую для будущего релиза, если у вашего мониторинга есть потребность, которую ни одна из них не покрывает. О том, как используется сеть точек проверки, смотрите распределенный мониторинг доступности, а соседние термины - в остальном разделе о понятиях мониторинга.