Проверки сайтов и API (HTTP-мониторы)

Мониторинг сайта в Наблюдателе — это HTTP-проверка: Наблюдатель со своих серверов регулярно открывает ваш адрес и смотрит, ответил ли сайт, как быстро и чем. Если сайт или API перестал отвечать, начал отдавать ошибку или заметно замедлился, придёт уведомление. Заодно проверка следит за SSL-сертификатом, версией TLS и редиректами.

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

Как добавить проверку сайта

  1. Откройте нужный стек.
  2. В шапке нажмите «HTTP-проверку».
  3. В окне «Новая HTTP-проверка» заполните поля и нажмите «Создать».
Поле Что указать
«Название» как проверка будет называться в списке и в уведомлениях
«URL» адрес, начиная с http:// или https://, например https://api.example.com/health
«Интервал проверки» 15 секунд, 30 секунд (по умолчанию), 1, 2, 5, 10 или 30 минут, 1 час
«Порог warning, мс» время ответа, после которого проверка переходит в «Внимание». По умолчанию 1000 мс
«Порог degraded, мс» время ответа для «Деградации». По умолчанию 2000 мс, должен быть больше порога warning
«Проверка активна» снимите галочку, чтобы создать проверку выключенной

Пороги задаются от 50 до 300 000 мс. После создания в стеке появляется вкладка «HTTP-проверки» со списком проверок, графиком и последним откликом.

Как выполняется проверка

  • Запрос — GET по указанному адресу с заголовком User-Agent: NablHealthcheck/1.0. Если сайт закрыт от ботов или стоит за WAF, разрешите этот User-Agent.
  • Успешным считается ответ с кодом 2xx или 3xx. Редиректы проходятся до конца, но не больше 10; зацикленная переадресация — ошибка.
  • Каждая попытка ждёт ответа до 8 секунд. Если попытка не прошла, через 3 секунды Наблюдатель повторяет запрос — короткий обрыв не превращается в сбой.
  • Проверяются только адреса из интернета. Внутренние и служебные адреса (localhost, 10.x.x.x, 192.168.x.x, 169.254.169.254 и подобные) запрещены, в том числе через переадресацию, — такая проверка покажет ошибку «адрес запрещён».

Выбрать метод запроса, свои заголовки, тело запроса, ожидаемый код ответа или ключевое слово на странице нельзя. Если нужно проверять, что сервис действительно работает, а не просто отдаёт страницу, сделайте в приложении отдельный адрес вида /health, который проверяет базу и зависимости и отвечает ошибкой 5xx, когда что-то не так.

Статусы проверки

Статус Когда
«Работает» сайт отвечает быстрее порогов
«Внимание» 4 из 5 последних успешных проверок за 10 минут медленнее порога warning
«Деградация» 4 из 5 последних успешных проверок медленнее порога degraded
«HTTP-ошибка» сайт ответил кодом ошибки: 4xx, 5xx
«Не работает» ответа нет: сеть, DNS, таймаут, ошибка TLS

Чтобы не будить из-за секундного сбоя, ошибкой считается только та, что держится около минуты: при проверке раз в 15 секунд — три неудачные проверки подряд, раз в 30 секунд — две, раз в минуту и реже — одна. Короткие сбои всё равно видны в истории и учитываются в доступности.

Этапы времени ответа

Время каждой проверки разбито на этапы — видно, что именно тормозит:

Этап Что это
DNS поиск адреса домена
TCP установка соединения с сервером
TLS TLS-рукопожатие
сервер ожидание первого байта ответа — работа самого приложения
загрузка получение тела ответа (во время отклика не входит)

Если выросло «сервер» — тормозит приложение или база. Если DNS или TCP — проблема в сети или у DNS-провайдера. Когда сайт не ответил вовремя, в причине указано, на каком этапе застрял запрос, например «Сайт не ответил за 8 с — запрос застрял на этапе DNS».

Проверка SSL-сертификата и TLS

Для https-адресов проверка сама следит за сертификатом — настраивать ничего не нужно:

Событие Уровень
Сертификат истекает через 14 дней предупреждение
Сертификат истекает через 3 дня ошибка
«Сертификат истёк» ошибка
«Сертификат обновлён» успех

В карточке проверки показано, до какого числа действует сертификат и кто его выдал, при наведении — для каких доменов. В списке проверок появляется пометка, если до окончания меньше 14 дней.

Плитка «Соединение» показывает версию TLS, протокол (HTTP/2 или HTTP/1.1) и IP-адреса домена. Наблюдатель предупредит, если:

  • сайт отвечает по устаревшему TLS 1.0 или 1.1 — современные браузеры такие сайты не открывают;
  • http-адрес перестал перенаправлять на https — «HTTP больше не ведёт на HTTPS»;
  • домен целиком переехал на другие IP-адреса — «Сменился IP-адрес сайта» (уровень «Инфо», только в ленту). Так видно и плановый переезд, и ошибку в DNS.

Страница проверки

Клик по проверке открывает её страницу. Вверху — статус и время последней проверки, рядом кнопки:

  • «Проверить сейчас» — выполнить проверку немедленно, не дожидаясь интервала. Удобно после исправления;
  • «Настройки проверки» — название, URL, интервал, пороги, включение;
  • «Уведомления проекта» — куда придут сообщения;
  • «Удалить проверку».

Плитки:

  • «Отклик» — время последней проверки и полоса по этапам, а если проверка не прошла — причина;
  • «Проверяет» — какой сервис принимает проверку (см. ниже);
  • «Доступность» за 24 часа и «Инцидентов» за всё время;
  • «Сертификат» и «Соединение».

Ниже — график «Время ответа» за выбранный период: 1 час, 6 часов, сутки, 7 дней или свои даты «с» и «по». Над графиком — доступность, среднее и p95 время ответа, число проверок и сбоев за период и средние значения этапов. Переключатель «Итого» / «По этапам» показывает, какой этап рос. Сбои отмечены красными полосами. История проверок хранится ограниченное время: если начало периода уже недоступно, график это подскажет.

В самом низу — «История событий» проверки с фильтром «Все», «Инциденты», «Инфо».

Плитка «Проверяет» и связь с трассировкой

Каждая проверка несёт метку Наблюдателя: заголовки traceparent и tracestate и параметр ?nabl_check=… в адресе. Если сервис, который принимает запрос, подключён к трассировке, Наблюдатель находит проверку в трассах и показывает в плитке «Проверяет» сервис и стек, а также ссылку «трасса последней проверки» — видно, на что ушло время внутри приложения. Сервис ищется во всех стеках проекта, поэтому проверки можно держать и в отдельном стеке.

Ещё две вещи, которые даёт метка:

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

Если сайт отвечает ошибкой из-за параметра ?nabl_check (строгая проверка параметров, подписанные ссылки), а без него — нормально, Наблюдатель сам перестанет добавлять параметр. Заголовки продолжат уходить.

«Проверяет: —» значит, что проверка не встретилась в трассах: адрес отдаёт сервис без OpenTelemetry (часто фронтенд) или запросы не доходят до приложения. Указать сервис вручную можно через ИИ-ассистента — тогда в плитке будет пометка «задано вручную».

Уведомления о сбоях сайта

В новом проекте правила для проверок уже включены: «сайт недоступен», «сайт снова доступен», «замедление» и «деградация». Они действуют на все проверки проекта и пишут события в ленту стека, а каналы проекта — Telegram, MAX, почта — отправляют их по уровню.

Пороги замедления задаются в самой проверке («Порог warning» и «Порог degraded»), а не в правилах. События о сертификате, устаревшем TLS и потере редиректа на HTTPS пишутся без всяких правил. Как подключить каналы — в статье Уведомления в Telegram, MAX и на почту, как менять правила — Правила уведомлений.

Если проверка показывает ошибку, а сайт открывается

  • «адрес запрещён» — адрес ведёт во внутреннюю сеть. Проверять можно только сайты, доступные из интернета.
  • «HTTP-ошибка» с кодом 403 или 429 — сайт блокирует проверку как бота. Разрешите User-Agent NablHealthcheck/1.0.
  • Ошибка только с параметром ?nabl_check — Наблюдатель отключит параметр сам после первой такой проверки.
  • «Не работает» с таймаутом — посмотрите в причине, на каком этапе застрял запрос: DNS, соединение или ответ сервера.

Проверки можно создавать, менять и запускать через ИИ-ассистента: «добавь проверку https://shop.ru/health раз в минуту», «почему сайт стал медленнее со вчерашнего дня», «когда истекает сертификат».

Что дальше

Попробуйте Наблюдатель

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

Создать аккаунт

Нашли неточность или не хватает ответа? Напишите на hello@nablserver.ru