← Späť na blog
2024-02-20 · 6 min

HTTP status kódy: 200, 301, 404, 5xx a čo s nimi

V skratke: HTTP status kód je trojciferné číslo, ktorým server odpovedá na každý request. Skupina hovorí kategóriu: 2xx = OK, 3xx = redirect, 4xx = chyba klienta, 5xx = chyba servera. Z pohľadu uptime monitoringu nás zaujímajú najmä 5xx a 4xx anomálie.

Kategórie odpovedí

  • 1xx Informational - prechodné odpovede, klient bežne nezaznamená.
  • 2xx Success - request prebehol úspešne. 200 OK je default.
  • 3xx Redirection - klient má ísť inam. 301 permanent, 302 dočasný.
  • 4xx Client errors - klient poslal niečo zlé. 404, 401, 403, 429.
  • 5xx Server errors - server zlyhal. 500, 502, 503, 504.

2xx: úspech

200 OK - štandardná OK odpoveď. Toto je "healthy" stav, pre ktorý monitorujete.

201 Created - typicky odpoveď na POST, ktorý vytvoril nový resource. API klienti to očakávajú.

204 No Content - úspech, ale server nemá čo vrátiť. DELETE endpointy ho často používajú.

206 Partial Content - server vrátil iba časť (range request). Pri streamingu videa alebo resumable download.

3xx: presmerovanie

301 Moved Permanently - URL sa natrvalo zmenila. Google prenesie SEO equity na novú URL. Použiť pri migrácii domény, prechod z HTTP na HTTPS, prechode na www/non-www.

302 Found / 307 Temporary Redirect - dočasné presmerovanie. Google nepresunie ranking. Použiť pri A/B testovaní, údržbe, alebo keď URL bude časom späť.

308 Permanent Redirect - ako 301, ale zachová HTTP metódu (POST ostane POST). 301 môže klient premeniť na GET.

304 Not Modified - klient má cache, server potvrdzuje, že obsah sa nezmenil. Šetrí bandwidth.

Pre monitoring: Pri kontrole 3xx odpovedí nakonfigurujte, či má monitor sledovať redirect (follow) alebo považovať redirect za chybu. Niektoré DNS hijack útoky sa prejavia ako neočakávané 302.

4xx: chyba na strane klienta

400 Bad Request - syntaktická chyba v requeste. Malformed JSON, chýbajúci header, atď.

401 Unauthorized - chýbajúce alebo zlé credentials. Klient musí autentifikovať.

403 Forbidden - klient je autentifikovaný, ale nemá oprávnenie. Pozor: niektoré servery vracajú 403 namiesto 401 z bezpečnostných dôvodov (nezverejnenie existencie resourcu).

404 Not Found - URL neexistuje. Pre monitoring nezáleží, pre SEO áno (uniká link equity).

405 Method Not Allowed - URL existuje, ale neakceptuje danú metódu (napr. POST na endpoint, ktorý očakáva GET).

408 Request Timeout - server čakal na request príliš dlho a uzavrel spojenie.

409 Conflict - request je v konflikte s aktuálnym stavom (napr. update verzie, ktorá už nie je aktuálna).

410 Gone - resource bol natrvalo odstránený. Lepšie než 404 pre Google (signal, že sa nemusí pokúšať reindexovať).

422 Unprocessable Entity - request je syntakticky OK, ale obsahuje semanticky neplatné údaje (failed validation).

429 Too Many Requests - rate limit. Klient musí spomaliť. Server typicky pridáva header Retry-After.

5xx: chyba na strane servera

500 Internal Server Error - generická chyba. Backend vyhodil exception, ktorú aplikácia nezachytila. Vždy alarm pre monitoring.

501 Not Implemented - server nepozná HTTP metódu (napr. starý server nepodporuje PATCH).

502 Bad Gateway - reverse proxy (nginx, Cloudflare) nedostala odpoveď z backend servera. Typicky backend padol alebo timeoutol.

503 Service Unavailable - server je preťažený alebo v údržbe. Často s Retry-After headerom. Toto je plánovaná odpoveď, nie crash.

504 Gateway Timeout - reverse proxy čakala na backend dlhšie ako timeout. Backend bežne stále beží, len pomaly.

520-525 Cloudflare errors - špecifické pre Cloudflare. 520 = backend vrátil čokoľvek nečitateľné, 522 = backend nereagoval (connection timeout), 524 = backend odpovedal príliš pomaly (origin timeout).

Praktické pravidlá pre alerting

  • Alert okamžite: 500, 502, 503 (ak nie je naozaj plánovaná údržba), 504, akýkoľvek timeout
  • Alert pri opakovaní: jednorazové 5xx môže byť race condition; alert ak rovnaký endpoint padá 2× po sebe
  • Sledovať vzostupný trend: dlhodobý rast 4xx môže znamenať broken link, scraper attack alebo rozbitý frontend
  • Ignorovať pre alerting: 200-399 v rámci očakávania (sledujte response time namiesto kódu)

Status code + response time = kompletný obraz

Sledovať iba status kód nestačí - server môže vracať 200, ale za 30 sekúnd, čo z pohľadu zákazníka je výpadok. Kvalitný monitoring kombinuje:

  1. Očakávaný status kód (typicky 200)
  2. Maximálny response time (typicky 5-10 sekúnd)
  3. Keyword match v obsahu (kľúčové slovo, ktoré musí byť v HTML)
  4. SSL valid + nie pred koncom platnosti

Vypadnutie ktoréhokoľvek = alert.

Monitoring s presnou klasifikáciou chýb

ePulzio rozlišuje status kód, response time, keyword match aj SSL stav. Logy pre každú kontrolu.

Vyskúšať 7 dní →