Health Checks
A health check goes deeper than "did the page load." It fetches a structured JSON endpoint your app exposes and inspects individual fields — so you can alert when the database connection is degraded, a queue is backing up, or a dependency is unreachable, even while the front page still returns 200.
How it works
On each run the checker requests your health URL, parses the response as JSON, and evaluates your field assertions against it. A typical endpoint looks like:
{
"status": "ok",
"version": "2.4.1",
"checks": {
"database": { "status": "ok", "latency_ms": 12 },
"redis": { "status": "ok" },
"queue": { "status": "degraded", "pending": 8421 }
}
}
Assertions use dot-paths into the body:
statusequalsokchecks.database.statusequalsokchecks.database.latency_msless than100checks.queue.pendingless than5000
Each assertion can require equality, a numeric comparison, presence, or a substring match. The run is healthy only when every assertion passes. Intervals run from every 30 seconds up to hourly, across multiple regions with consensus.
What triggers an alert
- The endpoint is unreachable or returns a non-2xx status.
- The body isn't valid JSON, or an asserted path is missing.
- Any field assertion fails — e.g.
checks.queue.pendingexceeds its limit, or a nestedstatusisdegraded/down.
The incident resolves automatically once all assertions pass again.
Setting it up
- Add monitor and choose Health Check.
- Enter the JSON health-endpoint URL (e.g.
https://api.example.com/health). - Add field assertions using dot-paths and comparisons.
- Set the check interval and regions.
- Attach notifications.
Related
- Uptime · Cron & Heartbeats · Performance
- Notifications
- Marketing: Health checks feature