HTTP statuscodes uitgelegd: wat 200, 404, 502 betekenen voor monitoring
· 6 min leestijd
Een HTTP-statuscode is het antwoord van de server: 2xx OK, 3xx redirect, 4xx clientfout, 5xx serverfout. Wat ze betekenen en welke je monitort.
Antwoordcategorieën
- 1xx Informational - tijdelijke antwoorden, de client merkt ze meestal niet op.
- 2xx Success - de request was succesvol. 200 OK is de standaard.
- 3xx Redirection - de client moet ergens anders heen. 301 permanent, 302 tijdelijk.
- 4xx Client errors - de client stuurde iets verkeerds. 404, 401, 403, 429.
- 5xx Server errors - de server faalde. 500, 502, 503, 504.
2xx: succes
200 OK - het standaard OK-antwoord. Dit is de "healthy" staat waarop je monitort.
201 Created - typisch een antwoord op een POST die een nieuwe resource aanmaakte. API-clients verwachten het.
204 No Content - succes, maar de server heeft niets terug te geven. DELETE endpoints gebruiken het vaak.
206 Partial Content - de server gaf maar een deel terug (range request). Bij videostreaming of hervatbare downloads.
3xx: omleiding
301 Moved Permanently - de URL veranderde permanent. Google brengt de SEO equity over naar de nieuwe URL. Gebruik het bij een domeinmigratie, een overgang van HTTP naar HTTPS of een switch naar www/non-www.
302 Found / 307 Temporary Redirect - tijdelijke omleiding. Google verplaatst de ranking niet. Gebruik het voor A/B testing, onderhoud of wanneer de URL met de tijd terugkomt.
308 Permanent Redirect - zoals 301, maar behoudt de HTTP-methode (POST blijft POST). Bij 301 kan de client de methode omzetten naar GET.
304 Not Modified - de client heeft een cache, de server bevestigt dat de inhoud niet veranderde. Bespaart bandbreedte.
Voor monitoring: Configureer bij het controleren van 3xx antwoorden of de monitor de redirect moet volgen (follow) of als fout moet beschouwen. Sommige DNS hijack aanvallen manifesteren zich als onverwachte 302.
4xx: fout aan clientzijde
400 Bad Request - syntaxisfout in de request. Malformed JSON, ontbrekende header, enz.
401 Unauthorized - ontbrekende of foute credentials. De client moet zich authenticeren.
403 Forbidden - de client is geauthenticeerd maar heeft geen permissie. Let op: sommige servers retourneren 403 in plaats van 401 om veiligheidsredenen (om niet te onthullen dat de resource bestaat).
404 Not Found - de URL bestaat niet. Bij uptime monitoring van bewaakte pagina's is een 404 een alert (de pagina is verdwenen); willekeurige 404's van externe bezoekers zijn eerder een SEO-probleem (link equity lekt weg).
405 Method Not Allowed - de URL bestaat maar accepteert de gegeven methode niet (bv. een POST naar een endpoint dat GET verwacht).
408 Request Timeout - de server wachtte te lang op de request en sloot de verbinding.
409 Conflict - de request conflicteert met de huidige staat (bv. update van een versie die niet meer actueel is).
410 Gone - de resource werd permanent verwijderd. Beter dan 404 voor Google (een signaal om niet te proberen te herindexeren).
422 Unprocessable Entity - de request is syntactisch OK maar bevat semantisch ongeldige data (failed validation).
429 Too Many Requests - rate limit. De client moet vertragen. De server voegt typisch een Retry-After header toe.
5xx: fout aan serverzijde
500 Internal Server Error - generieke fout. De backend gooide een exception die de applicatie niet ving. Altijd alarm voor monitoring.
501 Not Implemented - de server kent de HTTP-methode niet (bv. een oude server ondersteunt PATCH niet).
502 Bad Gateway - de reverse proxy (nginx, Cloudflare) kreeg geen antwoord van de backend server. Typisch is de backend gecrasht of in een timeout gelopen.
503 Service Unavailable - de server is overbelast of in onderhoud. Vaak met een Retry-After header. Dit is een gepland antwoord, geen crash.
504 Gateway Timeout - de reverse proxy wachtte langer op de backend dan de timeout. De backend draait meestal nog, maar antwoordt langzaam.
520-525 Cloudflare errors - specifiek voor Cloudflare. 520 = de backend gaf iets onleesbaars terug, 522 = de backend antwoordde niet (connection timeout), 524 = de backend antwoordde te langzaam (origin timeout).
Praktische regels voor alerting
- Alert direct: 500, 502, 503 (als het geen echt gepland onderhoud is), 504, elke timeout
- Alert bij herhaling: een eenmalige 5xx kan een race condition zijn; alert als hetzelfde endpoint 2x achter elkaar valt
- De opwaartse trend volgen: een langdurige groei van 4xx kan een broken link, een scraper attack of een kapotte frontend betekenen
- Negeren voor alerting: 200-399 binnen de verwachting (volg de responstijd in plaats van de code)
Statuscode + responstijd = het complete beeld
Alleen de statuscode volgen is niet genoeg - de server kan 200 retourneren maar in 30 seconden, wat vanuit klantperspectief uitval is. Kwaliteitsmonitoring combineert:
- Verwachte statuscode (typisch 200)
- Maximale responstijd (typisch 5-10 seconden)
- Trefwoordmatch in de inhoud (een sleutelwoord dat in de HTML moet staan)
- SSL geldig en niet dicht bij verloop
Het falen van één daarvan = alert.
Monitoring met precieze foutclassificatie
ePulz.io onderscheidt statuscode, responstijd, trefwoordmatch en SSL-staat. Voor elke controle zijn gedetailleerde logs beschikbaar.
Probeer ePulz.io gratis - 7 dagen zonder creditcard.
Account aanmaken