Проверки сайтов и API (HTTP-мониторы)
Мониторинг сайта в Наблюдателе — это HTTP-проверка: Наблюдатель со своих серверов регулярно открывает ваш адрес и смотрит, ответил ли сайт, как быстро и чем. Если сайт или API перестал отвечать, начал отдавать ошибку или заметно замедлился, придёт уведомление. Заодно проверка следит за SSL-сертификатом, версией TLS и редиректами.
Агент для этого не нужен: проверки выполняет сам Наблюдатель снаружи, как обычный посетитель. Поэтому uptime-мониторинг работает, даже если сервер с приложением упал целиком. Стек можно завести и только ради проверок сайтов.
Как добавить проверку сайта
- Откройте нужный стек.
- В шапке нажмите «HTTP-проверку».
- В окне «Новая 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