2.0 KiB
2.0 KiB
checkId, plugin, severity, tags
| checkId | plugin | severity | tags | ||||
|---|---|---|---|---|---|---|---|
| check.observability.healthchecks | stellaops.doctor.observability | warn |
|
Health Check Endpoints
What It Checks
Evaluates the configured health, readiness, and liveness paths and optionally probes http://localhost:<port><path> when a health-check port is configured.
The check warns when endpoints are unreachable, when timeouts are outside the 1s to 60s range, or when readiness and liveness collapse onto the same path.
Why It Matters
Broken health probes turn into bad restart loops, failed rolling upgrades, and misleading orchestration signals.
Common Causes
- The service exposes
/healthbut not/health/readyor/health/live - Health-check ports differ from the actual bound HTTP port
- Probe timeout values were copied from another service without validation
How to Fix
Docker Compose
docker compose -f devops/compose/docker-compose.stella-ops.yml exec doctor-web curl -fsS http://localhost:8080/health
docker compose -f devops/compose/docker-compose.stella-ops.yml exec doctor-web curl -fsS http://localhost:8080/health/ready
docker compose -f devops/compose/docker-compose.stella-ops.yml exec doctor-web curl -fsS http://localhost:8080/health/live
Set explicit paths and a reasonable timeout:
HealthChecks__Path: /health
HealthChecks__ReadinessPath: /health/ready
HealthChecks__LivenessPath: /health/live
HealthChecks__Timeout: 30
Bare Metal / systemd
Verify reverse proxies and firewalls do not block the health port.
Kubernetes / Helm
Point readiness and liveness probes at separate endpoints whenever startup and steady-state behavior differ.
Verification
stella doctor --check check.observability.healthchecks
Related Checks
check.core.services.health- aggregates the underlying ASP.NET health checks when availablecheck.observability.metrics- shared listener misconfiguration can break both endpoints