· Teknik · Jakob Hägg
De flesta /health-endpoints svarar 200 OK så länge processen lever. Det är en svag signal. Webbservern kan svara utmärkt medan databasanslutningen är död, kön har stannat och ingen användare kan logga in.
Det tunna svaret
En endpoint som bara returnerar {"status":"ok"} utan att kontrollera något bevisar att webblagret svarar. Som larm betraktat betyder det: "nginx lever". Det är inte fel, men det är mindre än vad den som tittar på det tror.
Det dyra svaret
Motsatsen — att kontrollera alla beroenden vid varje anrop — gör endpointen till en lastkälla. Övervakningen pollar den varje minut, lastbalanseraren oftare än så, och plötsligt genererar hälsokontrollen mer databastrafik än användarna.
Mellanvägen
Låt applikationen kontrollera sina beroenden internt på schema, till exempel var trettionde sekund, och låt /health returnera det senast cachade resultatet. Endpointen förblir billig och svarar utan databasanrop, men statusen betyder något verkligt. Faller databasen bort rapporterar systemet degraded inom en halvminut.
Vad den inte ska innehålla
Framework-version, OS, beroendeversioner, antal anslutningar. En publik health-endpoint som räknar upp vad som körs är rekognosceringsmaterial. Status, commit och driftsättningstidpunkt räcker.
Relaterat: Infrastruktur
Alla nyheter