Доступность
Мониторинг доступности сайта: что проверять кроме ответа 200
Практическая схема мониторинга сайта: DNS, соединение, TLS, HTTP-статус, содержимое страницы и время ответа.
Ответ 200 OK означает только одно: конкретный HTTP-запрос получил успешный код. Он не доказывает, что пользователь
увидел нужную страницу, что сертификат скоро не истечёт и что сайт одинаково доступен из разных сетей.
Полезная проверка доступности повторяет путь запроса по слоям. Так при сбое видно не только красный статус, но и место, где оборвалась цепочка.
1. DNS: находится ли адрес сервера
До HTTP клиенту нужно преобразовать домен в IP-адрес. Ошибка DNS делает сайт недоступным, даже если сервер и приложение работают нормально.
dig +short A example.ru
dig +short AAAA example.ruВ ответе ожидаются актуальные адреса сайта. Пустой результат, NXDOMAIN или неожиданный IP — повод проверить зону,
делегирование и недавние изменения. Сравнить ответы разных resolver-серверов можно в проверке DNS.
2. Соединение и TLS: можно ли безопасно подключиться
Следующий слой — TCP-соединение с портом 443 и TLS handshake. Здесь проявляются закрытый порт, сетевой timeout, неполная цепочка сертификатов, несовпадение имени и истёкший сертификат.
curl -I --connect-timeout 5 --max-time 15 https://example.ru/Для отдельной проверки сертификата используйте:
openssl s_client -connect example.ru:443 -servername example.ru </dev/nullРучная команда помогает диагностировать текущую ошибку. Постоянный SSL-монитор нужен, чтобы заметить приближение срока истечения заранее. Текущее состояние цепочки можно посмотреть в SSL checker.
3. HTTP: тот ли статус вернул нужный URL
Монитор должен проверять конечный пользовательский URL и ожидаемый код ответа. Для главной страницы это часто 200,
для health endpoint — тоже 200, а для намеренно перенесённого ресурса ожидаемым результатом может быть редирект.
Важно ограничивать число редиректов и сохранять конечный URL. Цикл редиректов или переход на страницу авторизации может оставить инфраструктуру формально «живой», но нарушить пользовательский сценарий.
4. Содержимое: загрузилась ли правильная страница
Прокси, CDN и приложение способны вернуть 200 вместе со страницей ошибки. Поэтому для критических страниц полезно
проверять устойчивый фрагмент текста — например, название продукта или элемент ответа API.
Не выбирайте динамическое значение, дату или имя пользователя: такая проверка будет создавать ложные тревоги. Лучше использовать короткий текст, который присутствует только в корректном ответе.
5. Время ответа: доступно не значит быстро
Медленный ответ обычно появляется раньше полного отказа. Храните длительность проверки и задавайте порог, после которого состояние считается ухудшенным. Отдельно различайте:
- время установления соединения;
- ожидание первого байта;
- полное время ответа;
- timeout — верхнюю границу ожидания.
Один медленный запрос ещё не доказывает проблему. Смотрите на повторяемость и сравнивайте результаты из нескольких регионов.
6. Подтверждение сбоя: как не получить шум
Сеть иногда теряет отдельные пакеты, DNS-resolver может кратковременно не ответить, а приложение — перезапускаться во время deploy. Перед уведомлением полезно повторить проверку или подтвердить сбой из другого региона.
При этом слишком длинная цепочка повторов скрывает настоящий инцидент. Политика должна быть простой и наблюдаемой: пользователь видит первую ошибку, повторную проверку и причину итогового статуса.
Минимальный набор для обычного сайта
Начните с пяти сигналов:
- домен разрешается в ожидаемый адрес;
- TLS-соединение успешно, сертификат подходит домену;
- конечный URL возвращает ожидаемый HTTP-код;
- ответ содержит устойчивый фрагмент страницы;
- время ответа не превышает выбранный порог.
Затем добавьте контроль срока домена, отдельный health endpoint для API и heartbeat для фоновых задач. Такой набор
объясняет причину большинства сбоев значительно лучше, чем одиночная проверка 200 OK.