Healthchecks
Cron job and scheduled task monitor that alerts you when expected pings stop arriving. Works as a dead man's switch for backups, scripts, and any task that should run on a schedule
Quick Start
docker run -d --name healthchecks -p 8000:8000 -e SECRET_KEY=yoursecretkey healthchecks/healthchecks:latest Overview
Healthchecks monitors scheduled tasks by waiting for pings that should arrive. You give each monitored job a unique URL, add a curl call to your script that hits that URL on completion, and Healthchecks waits. If the ping does not arrive within the expected window, it sends an alert. This is the dead man’s switch pattern: the alert fires not because something reported an error, but because the expected signal stopped coming.
The problem it solves is one that uptime monitors do not address. A server going down is visible. A cron job silently not running is not — unless something is specifically watching for its absence. Backup scripts that fail without generating logs, maintenance jobs that get skipped during restarts, and data pipelines that stall without raising exceptions are all candidates for this kind of monitoring.
Integration is minimal by design. Add curl -fsS https://hc-ping.yourserver/your-uuid to the end of a shell script and it is monitored. For scripts that might fail partway through, you can ping on start and separately on success, and Healthchecks will alert if it sees a start ping but no success ping within the expected time. Exit codes and script output are not captured — Healthchecks only knows whether the ping arrived.
The self-hosted version is a full Python/Django application and matches the feature set of the hosted healthchecks.io service, including time windows, grace periods, notification channels, and a dashboard. The hosted service adds SMS and phone call alerts that the self-hosted version does not provide without third-party integration.
Healthchecks: Pros & Cons
| Pros (The Wins) | Cons (The Friction) |
|---|---|
| Dead man’s switch: Alerts when a ping stops; catches silent failures. | Ping-only monitoring: No exit code, log, or output capture from scripts. |
| One-line integration: Add a curl call to any script to enable monitoring. | Active ping required: Scripts must call the URL; passive process monitoring unsupported. |
| Grace periods: Configure windows to avoid false alerts from brief delays. | No SMS self-hosted: Phone and SMS alerts only available on the cloud service. |
| 10.1k stars: Self-hostable version of the full healthchecks.io feature set. | No failure context: Tells you a check missed, not why it missed. |
Use Cases
Specific ways to use Healthchecks for your workflow.
Deployment Strategy
Recommended ways to host Healthchecks in your own environment.