v0.1 pre-release · Apache-2.0 Start an evaluation

Reference

Health endpoints

Generated · exhaustive Four paths, two of which are probes and two of which are not. Getting that distinction wrong will restart-loop a healthy process.

The four paths

The relay and the applier each serve the same four paths on --health-listen.

PathReturnsUse it for
/livez200 unless the phase is stopped or failed; 503 otherwise.Restart policy. It answers “is this process worth keeping”.
/readyz200 only when the service is accepting work; 503 otherwise.Load-balancer and rollout gating. Draining reads 503 immediately.
/healthz200 with the full snapshot as JSON, always.Debugging and dashboards. Never as a probe.
/metrics200, Prometheus text exposition.Scraping.

Liveness is not readiness

/livez and /readyz answer different questions, and wiring both to the same probe is the common mistake. A service that is running but blocked — invalid slot, incomplete broker topology, unreconciled writer intent — is alive and not ready. Restarting it will not help; it needs an operator. Point your liveness probe at /livez or you will restart-loop a process that is correctly refusing to proceed.

/healthz returns 200 even when the service is blocked. It is for debugging and dashboards and must never be used as a probe.

Legal phase and readiness combinations

An illegal combination is a validation error, not a state you can observe.

PhaseReadinessAccepting work
starting · draining · stoppednot_readyno
failedblockedno
runningready or degradedyes
runningbackpressured or blockedno

degraded, backpressured and blocked always carry a reason_code — lowercase, digits and underscores, so it is safe to route on.

Every phase and readiness value

FieldValues
phasestarting · running · draining · stopped · failed
readinessnot_ready · ready · degraded · backpressured · blocked
How this page is produced

Generated from the repository at 347a884 by tools/gen_reference.py. If this page and the code disagree, the code is right and this page is a bug.

On this page