Problem
A process can be running yet unable to serve traffic, for example while starting, deadlocked, or cut off from its database. Without a signal, load balancers keep sending requests to broken instances.
Also known as: health-endpoint-monitoring, liveness-readiness-probe
Expose a lightweight endpoint that reports whether an instance is alive and ready so orchestrators and load balancers can route around failures.
A process can be running yet unable to serve traffic, for example while starting, deadlocked, or cut off from its database. Without a signal, load balancers keep sending requests to broken instances.
A health check endpoint lets infrastructure ask an instance whether it should receive traffic or be replaced. The value comes from separating the questions rather than from a single status flag.
Three probes are common in Kubernetes, and the same split works elsewhere.
GET /healthz/live process responsive? fail -> restart
GET /healthz/ready can serve right now? fail -> remove from LB
GET /healthz/startup finished booting? fail -> keep waiting
The orchestrator calls each on an interval, for example every five seconds, and acts after a threshold of consecutive failures. Readiness typically checks local state, such as completed warm-up, open connection pools, and loaded config. It reports degraded dependencies in the body for humans but avoids failing on optional ones.
None, tiny endpoint
Low, tune thresholds
Low, widely understood
Readiness check calls a shared database, so a database blip removes the whole fleet
Liveness probe too strict restarts healthy pods under load
Check passes while real request path is broken