Cron Job Monitoring
Cron job monitoring is push-based, like heartbeat monitoring — your job pings a unique URL and a missing ping triggers an alert. The difference is how "on time" is defined. A cron monitor expects a ping according to a cron expression and timezone, so it lines up exactly with a job in your crontab, including irregular schedules like "weekdays at 2:30am".
Heartbeat vs. Cron
- Heartbeat — expects a ping every fixed interval (e.g. every 15 minutes). Best for rolling/continuous jobs and workers.
- Cron — expects a ping at each time your cron expression fires. Best when a job runs on a specific clock schedule.
How It Works
- Enter the same 5-field cron expression your job runs on, plus the timezone it runs in
- Your job hits the monitor's ping URL when it finishes successfully
- After each ping we compute the next scheduled time straight from your cron expression, evaluated in your timezone
- If that time plus the grace period passes without a ping, we open an incident and notify you
- The next successful ping resolves the incident automatically
Setting Up a Cron Monitor
- Click Add Monitor and select Cron Job as the monitor type
- Enter your cron expression (e.g.
30 2 * * 1-5) and the timezone it runs in - Set a grace period to absorb normal start-time drift, then save
- Copy the ping URL and append it to the job in your crontab
Sending a Ping
Append a curl to the command so it only pings when the job succeeds:
# crontab — billing run, weekdays 2:30am
30 2 * * 1-5 /opt/billing.sh && curl -fsS https://your-domain/ping/your-token
Set the monitor's cron expression and timezone to match this crontab entry exactly, and the expected ping
times will align with your real schedule. To report a failed run immediately, add
?status=fail to the ping URL.
Cron Expressions & Timezones
- Standard 5-field syntax:
minute hour day-of-month month day-of-week— the same as your system crontab - The schedule is evaluated in the timezone you choose, so
0 3 * * *inAmerica/New_Yorkexpects a ping at 3am Eastern - The next-due time shifts correctly across daylight saving changes — no UTC translation required
Notifications
A missed scheduled run is a critical-tier incident routed through your configured channels (email, SMS, Slack, webhook, in-app). The alert reads "Cron Job Missed"; when the job pings again, a "Cron Job Recovered" notification fires and the incident closes.
Outbound Only
Like heartbeat monitors, cron monitors are never probed from our side — your job makes a single outbound HTTPS request. Nothing to open in your firewall, no agent to install. Keep the ping URL secret.
Notes & Limitations
- Pending until first ping — a new monitor won't alert until it has received its first ping
- No sub-checks — cron is a push monitor; SSL, DNS and body assertions don't apply
- Plan-gated — cron (and heartbeat) monitoring is available on the Basic plan and above