En bra hälsokontroll testar det tjänsten behöver för att betjäna användarna: en snabb fråga mot databasen, cachen, kön. Den svarar snabbt, har inga sidoeffekter, kräver ingen inloggning eller bara en nyckel utan andra behörigheter, och returnerar en liten JSON-body som säger vilken kontroll som misslyckades.
Det finns oftast två sorter. En liveness-kontroll säger att processen körs och inte ska startas om; den hålls enkel. En readiness-kontroll säger att instansen kan ta emot trafik just nu, beroenden inräknade, så att en lastbalanserare eller Kubernetes kan styra runt den. Extern övervakning vill ha readiness-varianten.
Var försiktig med beroenden du inte styr över. Om hälsokontrollen fallerar så fort ett tredjeparts-API är långsamt kan alla instanser tas ur drift samtidigt. Rapportera sådant som försämrat i svaret, och spara statuskoden för fel som verkligen stoppar tjänsten.
Example
GET /health
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{"status":"ok","checks":{"database":"ok","cache":"ok"}}
En monitor kontrollerar statuskoden och att $.status är ok. En 503, en timeout eller något annat värde gör att kontrollen misslyckas.