Когда браузер, приложение или система мониторинга просит что-либо у веб-сервера, ответ сервера начинается с кода. Это короткое число, которое подводит итог: получилось, идите в другое место, вы сделали что-то не так или не так сделал сервер.
Первая цифра определяет класс, и обычно класса достаточно, чтобы понять ситуацию.
Пять классов
| Класс | Название | Значение |
|---|---|---|
| 1xx | Информационные | Запрос получен, обработка продолжается. Пользователи видят их редко. |
| 2xx | Успех | Запрос получен, понят и принят. |
| 3xx | Перенаправление | Клиенту нужно сделать ещё один шаг, обычно запросить другой адрес. |
| 4xx | Ошибка клиента | Запрос неверен или не разрешён. Проблема на стороне того, кто запрашивает. |
| 5xx | Ошибка сервера | Запрос выглядел корректным, но сервер не смог его выполнить. |
«Ошибка клиента» не значит, что виноват посетитель. Битая ссылка на вашем же сайте даёт 404, и исправлять её всё равно вам.
1xx: информационные
Это промежуточные ответы. Примеры — 100 Continue и 101 Switching Protocols. Обычные проверки страниц почти никогда с ними не сталкиваются, потому что следом приходит итоговый ответ.
2xx: успех
- 200 OK. Запрос выполнен, в ответе есть содержимое. Это обычный результат для работающей страницы.
- 204 No Content. Запрос выполнен, отправлять в ответ нечего. Часто встречается в API.
3xx: перенаправления
Перенаправление говорит клиенту обратиться в другое место. Новый адрес приходит в заголовке Location.
- 301 Moved Permanently. Адрес изменился навсегда. Браузеры и поисковые системы должны использовать новый. Типичный случай: перенос сайта на новый домен или принудительный переход на
https. - 302 Found. Временный перенос. В будущем клиентам следует по-прежнему использовать исходный адрес.
- 304 Not Modified. Это не перенос: содержимое не изменилось, поэтому клиент может использовать свою сохранённую копию.
Есть ещё две пары, о которых стоит знать. 308 и 307 ведут себя как 301 и 302, но гарантируют, что метод и тело запроса не изменятся. Для форм и API это важно.
Каждое перенаправление стоит лишнего обращения к серверу, а цепочка перенаправлений (A на B, B на C) добавляет по одному на каждый шаг. Петля перенаправлений, когда конечный адрес снова ведёт к началу, никогда не приводит к странице, и в итоге браузеры останавливаются с ошибкой.
4xx: ошибки клиента
- 401 Unauthorized. В запросе нет действительных учётных данных. Несмотря на название, это значит «не аутентифицирован»: войдите или отправьте действительные учётные данные и повторите попытку.
- 403 Forbidden. Сервер понял запрос и отказывается его выполнять. Клиент может быть известен серверу, но ему нельзя, и повторный вход ничего не изменит.
- 404 Not Found. По этому адресу ничего нет. Сервер может вернуть 404 и для того, чтобы скрыть страницу от тех, кому её видеть нельзя.
- 429 Too Many Requests. Клиент отправил слишком много запросов за отведённое время. В ответе может быть заголовок
Retry-After, где сказано, сколько ждать.
5xx: ошибки сервера
- 500 Internal Server Error. Общий сбой. Сервер столкнулся с тем, с чем не справился, — чаще всего с ошибкой в коде или неверной настройкой.
- 502 Bad Gateway. Сервер, работающий как шлюз или прокси, получил неверный ответ от сервера, который стоит за ним.
- 503 Service Unavailable. Сервер сейчас не может принять запрос, например из-за обслуживания или перегрузки. Код предназначен для временных состояний и может содержать заголовок
Retry-After. - 504 Gateway Timeout. Шлюз или прокси слишком долго ждал сервер, который стоит за ним.
При разборе сбоев 502, 503 и 504 обычно означают проблему между уровнями: прокси впереди работает, а то, куда он перенаправляет запросы, нет.
Почему коды ответа важны для мониторинга
Код ответа — самый быстрый способ проверить, что сайт отвечает и отвечает правильно. Он позволяет различить проблемы, которые для посетителя выглядят одинаково:
- Кода нет совсем (превышено время ожидания, отказ в соединении, ошибка DNS): до сервера не удалось достучаться.
- 5xx: сервер был достигнут и дал сбой.
- 4xx на странице, которая должна работать: страница пропала, проблема с правами или блокировка того, кто запрашивает.
- 3xx там, где ожидался 200: перенаправление, которое могли добавить, убрать или сломать.
Если следить за кодами со временем, видны и закономерности. Один код 503 во время развёртывания — это не то же самое, что 503 каждую ночь в один и тот же час.
Перенаправления в мониторинге
Проверке, которая запрашивает адрес, нужно правило для перенаправлений. Если считать сбоем код 301, то любой сайт, который перенаправляет http на https или example.com на www.example.com, выглядел бы сломанным. Поэтому большинство инструментов проходят перенаправления и оценивают итоговый ответ, ограничивая число переходов, чтобы петля не могла продолжаться бесконечно.
Как UptimeWire оценивает ответ
UptimeWire отправляет запрос GET на заданный вами адрес и проходит перенаправления, но не больше пяти. Затем он смотрит на итоговый ответ:
- От 200 до 399 — сайт доступен. Сюда входят коды успеха 2xx и ответы 3xx, после которых дальше идти не нужно.
- Всё остальное — сбой. Сюда относятся 404, 429, 500, 502, 503 и 504.
- 401 и 403 тоже сбой. Отслеживаемая страница, которая требует входа или блокирует запрос, помечается как неисправная, а не считается здоровой. Если вы отслеживаете страницу за авторизацией, выберите публичный адрес, например страницу проверки состояния.
- Больше пяти перенаправлений — сбой, как и отсутствие ответа, ошибка соединения, сбой DNS или недействительный сертификат.
Успех на уровне протокола — ещё не здоровое приложение
Код 200 означает, что сервер ответил успешно. Он не означает, что страница правильная. Сломанное оформление заказа, которое по-прежнему показывает обычную страницу, пустая страница на месте данных или сообщение об ошибке в теле «200»-ответа — всё это проходит HTTP-проверку. О том, что такая проверка видит, а что нет, читайте в статье о простое. UptimeWire не запускает полноценные тесты в браузере. Он проверяет ответ на запрос.
Что делать по коду
| Что вы видите | Куда смотреть |
|---|---|
| 404 на странице, которая раньше была | Страницу удалили или переименовали, изменилась структура адресов или при развёртывании потерялись файлы |
| 403 на главной странице | Правило межсетевого экрана или безопасности, смена прав на файлы или блокировка адреса, с которого проверяет инструмент |
| 401 на публичной странице | Авторизацию добавили на путь, который раньше был открыт |
| 429 | Ограничение частоты запросов. Его могут вызвать многочисленные запросы из одного источника, в том числе проверки |
| 500 | Посмотрите журналы приложения: ошибка в коде, сбой зависимости или неверная конфигурация |
| 502 | Служба за прокси не работает, упала или перезапускается |
| 503 | Обслуживание или перегрузка. Проверьте использование ресурсов и не идёт ли развёртывание |
| 504 | Служба за прокси слишком медленная. Посмотрите на долгие запросы и на базу данных |
| Петля перенаправлений | Два правила посылают запросы туда-обратно, часто это настройки http и https или www |
Когда появляется код, посмотрите и на время ответа. Рост времени ответа нередко происходит прямо перед тем, как начинаются ошибки 504 или 503.