Перейти к содержимому
ServerDeskОставить заявку
// инциденты

Как подтвердить отказ, прежде чем будить человека

Одна неудачная проверка — ещё не авария. Мог моргнуть канал связи, мог перезапуститься балансировщик, могла сломаться сеть самого мониторинга. Если будить человека на каждый такой случай, оповещения быстро перестанут читать. Разбираем, какие фильтры стоят в Pulse между первым отказом и пейджем и как настроить их под свой сервис.

6 мин чтения

// путь отказа до пейджа
до цикла
канарейка: в порядке ли сеть самого Pulse
проверка
код ответа, дополнительные адреса, время ответа, ключевое слово
цикл
предохранитель массовых падений, кворум точек
запись
порог отказов подряд, перепроверка через 30 секунд
инцидент
оповещения по правилам флаппинга и эскалации

Сначала — проверить себя

Перед каждым циклом проверок Pulse опрашивает несколько публичных узлов. Это «канарейка»: если большинство узлов не отвечает, проблема скорее в сети самого мониторинга, чем у ваших сайтов. Тогда цикл признаётся неубедительным: мониторы не берутся в работу, результаты не записываются, инциденты не открываются.

Молча такой сбой не проходит. Эндпоинт готовности /api/ready в этот момент сообщает о сбое; он же отвечает 503, если недоступна база или планировщик проверок давно не запускался. Такой адрес и нужно наблюдать снаружи: мониторинг не может сам сообщить о том, что не работает.

Предохранитель от массового падения

Вторая защита нужна, когда сеть вроде бы работает, но ведёт себя странно. Если за один цикл больше половины мониторов должны перейти из «работает» в «недоступен» — при условии, что мониторов в цикле не меньше десяти, — Pulse такой результат не принимает. Успешные проверки записываются, а отказы ставятся на перепроверку через 30 секунд.

Логика простая: одновременное падение многих несвязанных сервисов вероятнее объясняется сбоем на стороне мониторинга, чем совпадением. Перепроверка через полминуты отделит одно от другого.

Порог отказов и быстрая перепроверка

У каждого монитора есть порог — сколько отказов подряд нужно, чтобы открыть инцидент. Пока отказов меньше порога, Pulse не ждёт следующего планового интервала, а назначает перепроверку через 30 секунд. Поэтому при пятиминутном интервале и пороге в два отказа инцидент откроется на перепроверке примерно через полминуты, а не через пять минут.

Порог — компромисс между скоростью и тишиной. Чем он выше, тем реже вас будят зря и тем позже вы узнаёте о настоящей аварии. Для сервиса, который изредка отвечает ошибкой и тут же приходит в себя, порог стоит поднять. Там, где важна каждая минута, его лучше держать минимальным.

Что считать отказом

Часть ложных тревог рождается не в сети, а в настройках: монитор ждёт ровно 200, а сайт отвечает редиректом, или тяжёлая страница иногда отвечает дольше обычного. В Pulse для этого есть:

  • Допустимые коды ответа — диапазоном: 2xx или 200-299, 301. Пустое поле означает ровно ожидаемый код.
  • Редиректы можно не проходить — тогда ответ 301 или 307 сам становится результатом проверки.
  • Лимит времени ответа. Ответ медленнее лимита — это «деградация»: предупреждение, а не отказ и не инцидент.
  • Ключевое слово, заголовок или путь в JSON — чтобы убедиться, что отвечает именно ваше приложение, а не страница-заглушка.
  • До четырёх дополнительных адресов в одном мониторе. Они проверяются параллельно с основным; монитор считается работающим, только если ответили все, а текст ошибки называет адрес, который не ответил.

Кворум: отказ должны увидеть несколько точек

Центральная проверка идёт с сервера Pulse в России. Одна точка наблюдения — это одна сеть: если сломался маршрут между нами и вашим сайтом, сайт может быть доступен всем, кроме нас. Против этого работает кворум.

Точкой проверки может стать ваш сервер с агентом Pulse: вы сами разрешаете ему проверять сайты своей организации. Другой вид точек — проберы, отдельные процессы на других площадках, которые проверяют те же мониторы тем же кодом.

В настройках монитора есть «Подтверждение отказа точками» — сколько точек должны увидеть отказ. По умолчанию это одна, то есть решает центральная проверка. Если поставить больше, центральный отказ HTTP-монитора идёт на голосование:

  • голосуют только свежие результаты — не старше двух интервалов точки;
  • молчащая точка не голосует, и кворум уменьшается до числа живых точек: иначе падение самой точки превращало бы работающий сайт в аварию;
  • неподтверждённый отказ записывается как неудачная проверка, но монитор остаётся работающим с пометкой «деградация», и инцидент не открывается;
  • восстановление по-прежнему определяет центральная проверка.

Секреты на точки не уезжают. Агент получает только HTTP-мониторы без логина в адресе и без проверки содержимого, и только запросы GET или HEAD. Адреса с параметрами вроде ?token= остаются за центральной проверкой, а агент вдобавок отказывается соединяться с непубличным адресом — и после своего DNS-запроса, и на каждом редиректе. Сервер, включённый в группу мониторов, проверяет только сайты своей группы.

На странице монитора видно, как он выглядит из разных мест, — например, «1 из 2 недоступно». Статус-страница показывает, из скольких локаций сервис недоступен.

Восстановление и флаппинг

Закрыть инцидент так же важно, как открыть. Автоматический инцидент закрывается только после серии успешных проверок подряд, и до этого монитор для всех остаётся недоступным. Инцидент, открытый вручную, сам не закрывается.

Сложнее всего с сервисом, который мигает: упал, поднялся, снова упал. Каждое падение честное, но череда пейджей за полчаса не помогает никому. Поэтому у оповещений свои правила:

  • после закрытия инцидента, о котором уже оповестили, пейджи по этому монитору молчат 10 минут;
  • если монитор открыл инцидент четыре раза за 30 минут, уходит одно сообщение «нестабилен», и оповещения молчат час; это сообщение получает и текущий дежурный, а за ним — и «восстановлен»;
  • у SMS есть дневной лимит по тарифу организации.

Глушатся только оповещения. Инциденты, хронология и эскалация работают как обычно: история остаётся полной, и отчёт за месяц ничего не теряет.

При этом — никогда не молчать

Фильтры не должны превращаться в тишину. Поэтому у доставки свои гарантии:

  • каждое оповещение — строка в журнале доставки: канал, замаскированный адрес, статус и попытки; журнал виден на странице инцидента;
  • неудачную отправку Pulse повторяет три раза с интервалом в две минуты — но не после восстановления и не после «Подтвердить»: устаревший «недоступен» никого не будит;
  • если все каналы уровня эскалации на паузе, удалены или ждут подтверждения получателем, уровень уходит во все рабочие каналы организации, а у каждого молчащего канала в журнале записана причина;
  • если не доставлено ничего, оповещение уходит на резервный e‑mail оператора, если он задан.

Плановые работы оформляйте окном обслуживания: пока оно идёт, новые инциденты по затронутым мониторам не открываются. Уже открытый инцидент окно не закрывает.

Короткий чек-лист

  1. Укажите допустимые коды ответа, если сайт отвечает редиректом.
  2. Задайте лимит времени ответа: медленный ответ станет предупреждением, а не инцидентом.
  3. Связанные адреса одного сервиса добавьте в монитор как дополнительные — ошибка назовёт тот, что не ответил.
  4. Если у вас несколько серверов с агентом, разрешите им проверять ваши сайты и включите подтверждение отказа двумя точками.
  5. Плановые работы проводите в окне обслуживания.
  6. Загляните в журнал доставки последнего инцидента: там видно, куда и когда дошло каждое оповещение.

Как устроены дежурства по людям и эскалация — в статье «Дежурство без хаоса». Что видно изнутри сервера — в статье «Агент на сервере».

serverdesk // pulseбесплатный тариф без карты
Попробуйте на своём проекте

Pulse — бесплатно, без карты и без срока. Если нужны ещё и инженеры, на абонементе ServerDesk проверки настраивает наша смена, она же реагирует на инциденты по SLA.

// read next

Читайте также

// дежурства

Дежурство без хаоса: ротация по людям, подмены и подтверждение из Telegram

Как в Pulse устроены дежурства: кто может дежурить, куда приходит пейдж, лестница эскалации, подмены, напоминание о смене и кнопка «Подтвердить» в Telegram.

6 мин чтения

// агент

Агент на сервере: что видно изнутри

Что агент Pulse видит на сервере Linux или Windows: нагрузка, диски и службы, прогноз заполнения диска, норма нагрузки по дню недели и часу, процессы — только с согласия.

6 мин чтения

// кейс

Как мы держим собственный общий сервер под Pulse

Восемь проектов на одном сервере: мониторы и агент Pulse, канарейка обновлений, пересчёт копий и места на диске, тревоги в Telegram — и что ещё впереди.

5 мин чтения