Сайт недоступен несколько минут, а мониторинг показывает норму

Доступность · события · диагностика
Сайт не работает. Мониторинг спокоен

Как обнаружить короткий отказ, сохранить его следы и установить причину по проверкам, журналам и действиям посетителя.

Интервалы проверок
Журналы событий
Контроль результата



от жалобы к подтверждённой причине


Зелёный индикатор мониторинга над исправным обходным путём и разрыв на пути посетителя.

С чего начать

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

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

Разберём, как найти пропущенный эпизод, какие сведения сохранять заранее и чем подтвердить исправление. Этот порядок подходит для корпоративного сайта, интернет-магазина и сервиса с личным кабинетом.

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

Сначала разделите три ситуации: проверка не встретила неисправность; проверка встретила её, но система не признала инцидент; инцидент возник, но сообщение не дошло. У каждой ситуации свои доказательства и способ исправления.

01

Отказ прошёл между проверками

Если запросы выполняются в 12:00 и 12:05, недоступность с 12:01 до 12:03 может полностью остаться между ними. В истории будут два успешных ответа. Из них нельзя заключить, что сайт непрерывно работал все пять минут.

Посмотрите фактическое время начала проверок. Интервал в настройках иногда означает паузу после завершения запроса. Тогда к нему добавляются ожидание ответа, повторы и задержка очереди заданий. Номинальные 60 секунд не всегда равны минуте между началами измерений.

02

Ошибка не прошла условия подтверждения

Система может требовать несколько неудачных проверок подряд, подтверждение другой точкой или сохранение ошибки определённое время. Это уменьшает число тревог из-за отдельных сетевых помех, но короткий настоящий отказ тоже способен не пройти такой фильтр.

Например, в Prometheus отдельно задаются сбор метрик, вычисление правила и период ожидания for. В Alertmanager есть дополнительное ожидание перед первым сообщением группе уведомлений — group_wait. Если тревога успеет разрешиться до окончания этого ожидания, сообщение о ней может не отправиться. В готовом сервисе аналогичные механизмы могут называться иначе.

Успешная повторная попытка не должна стирать предыдущую ошибку из диагностической истории. Сохраните обе попытки, их время и причину первого отказа. Уведомлять о каждой из них необязательно; учитывать их при расследовании необходимо.

03

Проверяется другой путь пользователя

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

Для контроля полезного действия заранее определяют ожидаемый результат: нужное содержимое, корректный ответ API или завершение безопасного тестового сценария. Ответ HTTP 200 сам по себе не доказывает, что форма отправилась. Если расхождение появилось после настройки защиты, используйте отдельный разбор ложных блокировок покупателей и поисковых роботов.

04

Нет данных или не доставлено сообщение

У проверки может остановиться исполнитель, потеряться связь с хранилищем или задержаться обновление панели. Последний успешный результат при этом остаётся на экране. Смотрите его возраст и ожидаемое время следующего измерения.

Потеря данных требует отдельного состояния. В Grafana, например, поведение при отсутствии измерений настраивается: среди вариантов есть отдельная тревога, сохранение прежнего состояния и переход в норму. Поэтому надпись о восстановлении стоит сопоставить с поступлением новых успешных измерений.

Если инцидент в истории есть, проверьте журнал уведомлений: выбранного получателя, расписание, период обслуживания, подавление связанных тревог и результат доставки. Исправление почтового канала не устранит причину отказа сайта, но восстановит информирование.

Как интервал проверки влияет на обнаружение

Для одной точки наблюдения можно рассчитать вероятность хотя бы раз попасть запросом в отказ. Если проверки мгновенные, происходят строго через одинаковые промежутки, а начало сбоя случайно относительно расписания, вероятность равна меньшему из двух значений: 1 или длительность сбоя, делённая на интервал проверок.

Ниже приведён расчёт по этой модели. Это не статистика клиентских сайтов и не обещание конкретного сервиса.

На узком экране таблицу можно прокрутить по горизонтали.

Длительность отказа Проверка раз в 5 минут Раз в минуту Раз в 30 секунд
30 секунд 10% 50% 100%
1 минута 20% 100% 100%
2 минуты 40% 100% 100%

Разрыв на линии запросов между разнесёнными окнами наблюдения.
Короткий отказ может целиком пройти между проверками. Важны фактические моменты их запуска.

Для двухминутного отказа при пятиминутном интервале модель даёт 40% вероятности обнаружения и 60% вероятности пропуска. Даже когда проверка попала в отказ, сообщение может не появиться из-за правил подтверждения. Условие двух неудачных плановых проверок с минутным шагом, например, не выполнится при одном непрерывном отказе на 30 секунд в этой модели.

На практике запросы имеют длительность, точки могут опаздывать, а сбои бывают периодическими. Поэтому значения 100% в таблице относятся только к указанным условиям. Проверка раз в минуту не гарантирует минутную доставку уведомления.

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

Как определить границы длительности отказа

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

Если мгновенные проверки были успешны в 12:00 и 12:03, а в 12:01 и 12:02 дали ошибку, длительность этого непрерывного отказа находится примерно между одной и тремя минутами. Показать в отчёте ровно две минуты можно как принятую оценку по измерениям, но нельзя выдавать её за установленную фактическую длительность.

При чередовании нескольких отказов, разных узлов или пользовательских сессий такой простой расчёт уже не подходит. Сохраняйте условия каждой попытки и уточняйте границы по журналам событий. Для оценки воздействия на бизнес отдельно считайте затронутые операции.

Что сохранить при очередной жалобе

Если сайт не работает сейчас, восстановление критичного действия имеет приоритет. Одновременно сохраните доступные сведения о симптоме и точное время вмешательства. Не откладывайте необходимый откат ради полного сбора данных, но и не начинайте несколько несвязанных изменений без записи их последовательности.

  1. Уточните действие. Какую страницу открывали, что нажали, какой результат ожидали и что произошло вместо него. Жалобы на вход, каталог и оплату нельзя автоматически объединять в один сбой.
  2. Зафиксируйте время и условия. Дата, часовой пояс, приблизительное начало и окончание, регион, оператор, устройство и наличие авторизации. Снимок ошибки полезен вместе с адресом страницы.
  3. Выгрузите исходные проверки. Нужны результаты до, во время и после эпизода, включая неудачные попытки, повторы и пропущенные запуски.
  4. Сохраните журналы. Возьмите интервал с запасом по обе стороны события, включая файлы до и после ротации. В панели хостинга проверьте, что выгружен журнал нужного домена и HTTPS.
  5. Отметьте изменения. Обновление, перезапуск, резервное копирование, импорт, очистка кеша, изменение DNS или защиты. Это кандидаты для сопоставления, а не заранее назначенные причины.

Проверка сайта через час показывает его состояние через час. Она не восстанавливает ответ DNS, содержимое ошибки или очередь приложения в момент жалобы. Если подробности тогда не сохранялись, часть причин останется непроверяемой до следующего эпизода.

Какие данные должны оставаться после каждой проверки

Для расследования недостаточно отметок «доступен» и «недоступен». Сохраняйте поля, позволяющие отличить отказ соединения от неправильного ответа и связать внешнее наблюдение с серверной обработкой.


Красный сигнал ошибки сохранён в прозрачной капсуле, а механизм уведомления ожидает открытия.
Сохранение ошибки, подтверждение инцидента и доставка уведомления — отдельные этапы.

На узком экране таблицу можно прокрутить по горизонтали.

Группа данных Что записывать Что это позволяет проверить
Время Начало и конец попытки с часовым поясом; время получения записи системой мониторинга. Окно наблюдения и задержку поступления данных.
Точка наблюдения Регион, сеть или исполнитель, используемый DNS и фактический IP назначения. Отличия маршрутов, узлов и разрешения имени.
Запрос Домен, безопасно сохранённый путь, HTTP-метод, проверяемое действие и условия сессии. Совпадает ли проверка с проблемой посетителя.
Результат HTTP-код либо сетевая ошибка; итоговый адрес после перенаправлений; результат проверки содержимого. Подмену страницы заглушкой, лишний редирект или отсутствие нужного ответа.
Этапы ожидания Разрешение имени, соединение, TLS, первый байт и полное время; применённый тайм-аут. На каком этапе закончилась попытка или выросла задержка.
Повторы и решение Каждую попытку отдельно, её номер, условие открытия инцидента и причину подавления сообщения. Была ли ошибка пропущена, отфильтрована или скрыта успешным повтором.
Связь с сервером Идентификатор запроса или трассировки, узел обработки и состояние кеша, если эти поля доступны. Переход от внешнего симптома к соответствующей операции приложения.

Сетевую ошибку сохраняйте отдельно от HTTP-кода. Если ответ HTTP не получен, нельзя подменять это состояние придуманным кодом 500. В curl значение 000 в таком случае не является ответом сервера: причину уточняют по коду завершения и сообщению самого инструмента.

Некоторые времена curl отсчитываются от начала всей операции. Например, time_starttransfer уже включает предыдущие этапы. Складывать его с временем DNS и соединения нельзя. Для разбора фаз учитывайте накопительный характер измерений, перенаправления и повторное использование соединения.

Не сохраняйте в общедоступных отчётах cookies, токены, заголовки авторизации и содержимое заказов. Для связи событий обычно достаточно технического идентификатора и ограниченного набора полей. Подробные диагностические записи должны иметь срок хранения и контролируемый доступ.

Как сопоставить события по времени

Приведите время всех источников к одному часовому поясу, сохранив исходные значения. Проверьте синхронизацию часов сервера и агентов. Расхождение на минуту способно поменять местами предполагаемую причину и последствие короткого отказа.

Различайте время события, завершения запроса и попадания записи в хранилище. В модели OpenTelemetry для события и его наблюдения предусмотрены разные поля. А строка access-журнала NGINX появляется при завершении обработки: длинный запрос может быть записан позже начала проблемы.


Один янтарный след проходит через слои обработки запроса к отмеченному красным месту отказа.
Общий идентификатор помогает связать внешнюю проверку с обработкой того же запроса на сервере.

Собирайте последовательность по одному обращению: внешняя попытка, решение промежуточного сервиса, приём веб-сервером, работа приложения, результат. Общий идентификатор запроса или трассировки надёжнее простого совпадения секунды. Если идентификатора нет, сопоставляйте несколько признаков и учитывайте доверенные прокси, которые могут менять видимый адрес клиента.

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

Когда часть цепочки отсутствует, обозначьте границу вывода. Формулировка «веб-сервер получил запрос и ожидал приложение, но журнал приложения за этот интервал утрачен» полезнее неподтверждённого утверждения о проблеме базы данных.

На каком уровне искать причину

Начинайте с самого раннего подтверждённого отклонения. Следующая таблица показывает направление проверки; ни одна строка сама по себе не устанавливает окончательную причину.

На узком экране таблицу можно прокрутить по горизонтали.

Наблюдение Что сопоставить Что нельзя заключать сразу
Не разрешается имя или получен неожиданный IP. Ответы DNS в момент сбоя, резолвер, A и AAAA, изменения записей. Что приложение или база данных перегружены.
Соединение или TLS не завершились. IP назначения, семейство адресов, маршрут точки, журналы сетевой защиты и TLS. Что ошибка обязана присутствовать в access-журнале сайта.
Промежуточный сервис вернул ошибку, на основном сервере записи нет. Событие на этом сервисе, обращение к основному серверу, полноту и задержку его журналов. Что сервер точно не получал запрос или что виноват именно CDN.
Веб-сервер принял запрос, затем долго ожидал приложение. Время обработки, очередь исполнителей, ошибки приложения и зависимостей. Что высокий показатель процессора объясняет конкретное ожидание.
Главная отвечает, отдельная операция завершается ошибкой. Конкретный маршрут, метод, сессию, состояние кеша и результат операции. Что доступность главной подтверждает исправность магазина.
Ошибки видны из одной сети, из другой запросы успешны. Одновременные проверки одинакового действия, IP назначения и применённые правила. Что наблюдение первой точки обязательно ложное.

У каждого журнала есть границы. DNS-ошибка или разрыв до установления HTTP-соединения не обязаны оставлять запись в журнале обращений веб-сервера. А ответ, сформированный кешем или защитой перед сервером, может не вызвать обращение к приложению.

Даже панель поставщика не всегда содержит все события. Например, Cloudflare Security Analytics использует выборочные данные в стандартном представлении. При расследовании отдельного короткого отказа уточняйте полноту выгрузки, фильтры и доступность исходных записей. Отсутствие события в выборке не доказывает отсутствие самого запроса.

Если данные указывают на массовый рост запросов или серверные ошибки, продолжите проверку по руководству как отличить DDoS от внутреннего сбоя. Если отказы начинаются после очистки, отдельно сопоставьте их с состоянием кеша и нагрузкой на приложение.

Почему средние показатели скрывают проблему

График за час подходит для обзора, но короткий эпизод нужно рассматривать с исходным разрешением. Если система хранит только пятиминутные средние значения, приближение графика до секунды не создаст потерянные измерения.

Допустим, минутная нагрузка процессора составляла 10%, 10%, 100%, 10% и 10%. Среднее за пять минут равно 28%. На общем графике оно выглядит умеренным, хотя одна минута резко отличается от остальных. Этот расчёт показывает эффект усреднения; сама загрузка процессора ещё не устанавливает причину отказа.

Процентили тоже не заменяют учёт ошибок. Если из 1000 запросов 990 завершились за 200 миллисекунд, а 10 — за 10 секунд, p95 останется около 200 миллисекунд. Поэтому рядом со временем ответа нужны число запросов, доля ошибок и разбивка по важным операциям. Быстрый ошибочный ответ также может выглядеть хорошо на графике задержки.

Считайте долю отказов по суммарным количествам: число неуспешных целевых запросов разделите на общее число таких запросов за тот же период. Простое среднее процентов по минутам искажает итог, если в минуты поступал разный объём обращений. При отсутствии обращений результат неизвестен: деление нуля на ноль не означает 100% доступности.

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

Как настроить наблюдение за короткими отказами

Начните с минимального отказа, который важно обнаруживать, и допустимой задержки реакции. Затем подберите проверки, правила подтверждения и срок хранения. Ниже — стартовый профиль для обсуждения с администратором, который нужно проверить на собственном трафике и ресурсах.

На узком экране таблицу можно прокрутить по горизонтали.

Что наблюдать Начальная настройка Что проверить при внедрении
Внешний ответ важного URL Проверка каждые 30–60 секунд из двух подходящих независимых сетей. Фактические интервалы, все исходные попытки и отдельные результаты каждой точки.
Нужное содержимое Ожидаемый статус, конечный адрес и стабильный признак правильного ответа. Чтобы заглушка, страница входа или защиты не засчитывалась как нормальная работа.
Ключевое действие Безопасный браузерный сценарий с частотой, соответствующей риску и стоимости запуска. Нужный результат действия, отсутствие реальных списаний и загрязнения заказов или аналитики.
Сервер и приложение Постоянная запись нужных ошибок и метрики с разрешением, достаточным для ожидаемого эпизода. Связь событий, срок хранения, отсутствие провалов и избыточной нагрузки от диагностики.
Сама система наблюдения Контроль свежести данных, выполнения заданий и доставки пробного уведомления. Чтобы остановка агента или потеря связи не отображалась как восстановление сайта.

Частота имеет цену. Один HTTP-запрос каждые 30 секунд из двух точек создаёт 5760 запросов в сутки. Если проверяется десять адресов, это уже 57 600 запросов без повторов. Браузерный сценарий дополнительно загружает ресурсы и выполняет фоновые обращения. Контроль не должен сам создавать отказ дорогой операции.

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

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

Результаты разных регионов храните раздельно. Условие «плохо одновременно во всех точках» удобно для определения общего отказа, но способно скрыть проблему части аудитории. Для значимых регионов или операций нужны собственные критерии реакции.

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

Как проверить исправление и сам мониторинг

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

Отдельно проверьте правила наблюдения на тестовом контуре или выделенном проверочном адресе. Контролируемая ошибка должна иметь ограниченную длительность и заранее определённый способ прекращения. Отключать работающий магазин для такого испытания не требуется.


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

На узком экране таблицу можно прокрутить по горизонтали.

Проверка Ожидаемое свидетельство Что считать недоработкой
Короткий отказ, в который попала проверка. В истории сохранена исходная ошибка и последующее восстановление. Успешный повтор полностью заменил неудачную попытку.
Отказ, выполняющий правило тревоги. Зафиксированы открытие инцидента и доставка сообщения нужному получателю. Есть только запись в панели, а канал уведомления не сработал.
Неправильное содержимое при HTTP 200. Проверка содержимого или сценария распознала нарушение. Состояние осталось нормальным только из-за кода ответа.
Остановка проверяющего агента. Появилось состояние отсутствия данных либо отдельное сообщение о наблюдении. Старый успешный ответ продолжает выглядеть как свежая проверка.
Ранее проблемное действие после исправления. Операция завершается; журналы подтверждают результат в затронутых условиях. Проверена только главная страница или другая сессия.

Испытание выделенного адреса проверяет механизм мониторинга. Его результат нельзя выдавать за подтверждение работоспособности всех операций магазина. Для них нужны собственные контрольные действия.

В итоговом разборе свяжите наблюдаемый симптом, подтверждённый механизм, внесённое изменение и результат повторной проверки. Если удалось только настроить сбор данных, так и зафиксируйте. Отсутствие нового эпизода за короткое время пока не доказывает, что причина устранена.

Что короткие отказы означают для бизнеса

Оценивайте воздействие по затронутым действиям и времени. Сколько попыток входа, отправки заявки или оформления не завершилось; были ли повторные обращения; сохранились ли заказы и статусы оплаты. Число технических ошибок нельзя автоматически умножить на средний чек и назвать потерянной выручкой.

Сохранённая история помогает отличить краткий отказ от падения спроса или ошибки аналитики. Если в минуту жалоб снизилось число событий, сопоставьте его с серверной обработкой: исчезновение измерений не обязательно означает исчезновение действий посетителей.

Ответы на частые вопросы

Достаточно ли сократить интервал до минуты

Это уменьшает промежутки между наблюдениями, но не решает ошибки выбора URL, неправильные условия успеха и задержки уведомлений. Сбой короче минуты всё ещё может оказаться между запросами. Нужны исходные события и контроль важного действия.

Доказывает ли пустой журнал хостинга отсутствие сбоя

Нет. Запрос мог не дойти до веб-сервера, быть обработан промежуточным сервисом или попасть в другой журнал. Сначала проверьте слой наблюдения, домен, протокол, часовой пояс, ротацию и полноту записей.

Нужно ли считать ошибку одной точки ложной тревогой

Нет. Она может указывать как на проблему самой точки, так и на реальную недоступность из её сети. Сравните одинаковые запросы в одно время и установите, какая аудитория использует затронутый маршрут.

Можно ли найти причину уже закончившегося отказа

Можно, если сохранились данные с нужной детализацией. При отсутствии записей текущие проверки дадут гипотезы и помогут подготовить следующее наблюдение. Достоверно восстановить все обстоятельства только по зелёному графику нельзя.