HTTP-коди стану пояснені: що 200, 404, 502 означають для моніторингу
· 6 хв читання
Коротко: HTTP-код стану - тризначне число, яким сервер відповідає на кожен запит. Група каже категорію: 2xx = OK, 3xx = redirect, 4xx = помилка клієнта, 5xx = помилка сервера. З точки зору uptime-моніторингу нас цікавлять перш за все аномалії 5xx та 4xx.
Коротко: HTTP-код стану - тризначне число, яким сервер відповідає на кожен запит. Група каже категорію: 2xx = OK, 3xx = redirect, 4xx = помилка клієнта, 5xx = помилка сервера. З точки зору uptime-моніторингу нас цікавлять перш за все аномалії 5xx та 4xx.
Категорії відповідей
- 1xx Informational - перехідні відповіді, клієнт зазвичай не помічає.
- 2xx Success - запит пройшов успішно. 200 OK - default.
- 3xx Redirection - клієнт має йти в інше місце. 301 permanent, 302 тимчасовий.
- 4xx Client errors - клієнт надіслав щось погане. 404, 401, 403, 429.
- 5xx Server errors - сервер впав. 500, 502, 503, 504.
2xx: успіх
200 OK - стандартна OK-відповідь. Це «healthy»-стан, для якого моніторите.
201 Created - типово відповідь на POST, що створив новий resource. Клієнти API очікують.
204 No Content - успіх, але сервер не має що повернути. DELETE endpoint'и часто використовують.
206 Partial Content - сервер повернув лише частину (range request). При стрімінгу відео або resumable download.
3xx: перенаправлення
301 Moved Permanently - URL змінився назавжди. Google переносить SEO equity на новий URL. Використовувати при міграції домену, переході з HTTP на HTTPS, переході на www/non-www.
302 Found / 307 Temporary Redirect - тимчасове перенаправлення. Google не переносить ranking. Використовувати при A/B тестуванні, обслуговуванні або коли URL повернеться з часом.
308 Permanent Redirect - як 301, але зберігає HTTP-метод (POST залишається POST). 301 може клієнт перетворити на GET.
304 Not Modified - у клієнта є cache, сервер підтверджує, що контент не змінився. Економить bandwidth.
Для моніторингу: При перевірці 3xx відповідей налаштуйте, чи має monitor слідувати redirect (follow) або вважати redirect помилкою. Деякі DNS hijack атаки проявляються як несподівані 302.
4xx: помилка на стороні клієнта
400 Bad Request - синтаксична помилка в запиті. Malformed JSON, відсутній header тощо.
401 Unauthorized - відсутні або погані credentials. Клієнт має аутентифікуватися.
403 Forbidden - клієнт аутентифікований, але не має прав. Обережно: деякі сервери повертають 403 замість 401 з міркувань безпеки (нерозкриття існування ресурсу).
404 Not Found - URL не існує. Для моніторингу не важливо, для SEO так (витікає link equity).
405 Method Not Allowed - URL існує, але не приймає даний метод (наприклад, POST на endpoint, що очікує GET).
408 Request Timeout - сервер чекав на запит надто довго і закрив з'єднання.
409 Conflict - запит у конфлікті з поточним станом (наприклад, update версії, яка вже не актуальна).
410 Gone - resource видалений назавжди. Краще, ніж 404 для Google (сигнал не намагатися переіндексувати).
422 Unprocessable Entity - запит синтаксично OK, але містить семантично невалідні дані (failed validation).
429 Too Many Requests - rate limit. Клієнт має сповільнитися. Сервер типово додає header Retry-After.
5xx: помилка на стороні сервера
500 Internal Server Error - генерична помилка. Backend кинув exception, який програма не зловила. Завжди тривога для моніторингу.
501 Not Implemented - сервер не знає HTTP-метод (наприклад, старий сервер не підтримує PATCH).
502 Bad Gateway - reverse proxy (nginx, Cloudflare) не отримав відповідь від backend сервера. Типово backend впав або у timeout.
503 Service Unavailable - сервер перевантажений або в обслуговуванні. Часто з header Retry-After. Це плановий відповідь, не crash.
504 Gateway Timeout - reverse proxy чекав backend довше, ніж timeout. Backend зазвичай ще працює, просто повільно.
520-525 Cloudflare errors - специфічно для Cloudflare. 520 = backend повернув щось нечитабельне, 522 = backend не відповів (connection timeout), 524 = backend відповів надто повільно (origin timeout).
Практичні правила alerting'у
- Alert негайно: 500, 502, 503 (якщо не дійсно планове обслуговування), 504, будь-який timeout
- Alert при повторі: одиничний 5xx може бути race condition; alert якщо той самий endpoint падає 2× поспіль
- Слідкувати за висхідним трендом: довгостроковий зріст 4xx може означати broken link, scraper attack або зламаний frontend
- Ігнорувати для alerting'у: 200-399 у межах очікуваного (стежте за response time замість коду)
Код стану + response time = повна картина
Стежити лише за кодом стану недостатньо - сервер може повертати 200, але за 30 секунд, що з точки зору клієнта - збій. Якісний моніторинг комбінує:
- Очікуваний код стану (типово 200)
- Максимальний response time (типово 5-10 секунд)
- Keyword match у контенті (ключове слово, яке повинно бути в HTML)
- SSL валідний + не перед кінцем дії
Падіння будь-якого = alert.
Моніторинг з точною класифікацією помилок
ePulz.io розрізняє код стану, response time, keyword match та SSL стан. Логи для кожної перевірки.
Спробуйте ePulz.io безкоштовно - 7 днів без банківської картки.
Створити акаунт