Cron job monitoring: find out the night a job doesn’t run
Scheduled jobs fail silently. The backup that stopped in March is usually discovered the day you need to restore it. A heartbeat monitor waits for your job to check in, and alerts you when it doesn’t.
Example check · demo data
Cron job monitoring (also called heartbeat or dead man’s switch monitoring) gives each scheduled job a unique URL to call when it finishes. If the call doesn’t arrive on schedule, the monitor alerts you that the job failed or never ran.
Why you can’t monitor a cron job from the outside
Uptime checks ask a service “are you up?”. A cron job isn’t running most of the time, so there’s nothing to ask. The only reliable signal is the job itself reporting that it finished. That turns the usual monitoring direction around: the job calls StatusEagle, and silence is the alert.
Set it up in two minutes
# crontab — run the backup, then check in only if it succeeded 0 2 * * * /opt/scripts/backup.sh && curl -fsS -m 10 --retry 3 "$HEARTBEAT_URL" > /dev/nullUse &&, not ;. With a semicolon the heartbeat fires even when the backup fails, and the monitor stays green.
The same idea works anywhere you can make an HTTP request:
# crontab — run the backup, then check in only if it succeeded 0 2 * * * /opt/scripts/backup.sh && curl -fsS -m 10 --retry 3 "$HEARTBEAT_URL" > /dev/null
What heartbeat monitoring catches
| Failure | Seen by uptime checks? | Seen by heartbeat? | Job script throws an error | Server rebooted and cron didn’t restart | Someone commented out the crontab line | Job hangs forever | Job runs but takes 5× longer than usual |
|---|---|---|---|---|---|---|---|
| No | Yes, no check-in | ||||||
| No | Yes | ||||||
| No | Yes | ||||||
| No | Yes, the check-in never comes | ||||||
| No | Yes, via execution time tracking |
Jobs you should put a heartbeat on today
Getting the schedule right
Set the expected schedule to match the job, and allow a little slack for how long it takes to run. A backup that takes 40 minutes shouldn’t alert at 02:01. Document grace-period setting name and defaults If a job’s duration grows steadily over weeks, that’s usually a table or a directory growing too; the run-time history makes it visible before it becomes an outage.
Related monitoring
Pair these monitoring checks to ensure complete stack coverage.
Frequently asked questions
Still deciding? Start monitoring free and verify your first service in ~2 minutes.
Cron job monitoring alerts you when a scheduled task doesn’t report in on time. Each job calls a unique heartbeat URL when it finishes; a missed call means the job failed or didn’t run.
Your first monitor takes about two minutes.
Free plan: 10 monitors, 3 locations, 1 status page. No credit card.