Core Concepts

Cron Job Monitoring

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

  1. Enter the same 5-field cron expression your job runs on, plus the timezone it runs in
  2. Your job hits the monitor's ping URL when it finishes successfully
  3. After each ping we compute the next scheduled time straight from your cron expression, evaluated in your timezone
  4. If that time plus the grace period passes without a ping, we open an incident and notify you
  5. The next successful ping resolves the incident automatically

Setting Up a Cron Monitor

  1. Click Add Monitor and select Cron Job as the monitor type
  2. Enter your cron expression (e.g. 30 2 * * 1-5) and the timezone it runs in
  3. Set a grace period to absorb normal start-time drift, then save
  4. 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 * * * in America/New_York expects 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