Features

Cron job monitoring

Uptimely monitors a cron job by waiting for it to check in. Your job calls a unique heartbeat URL each time it runs, and if no call arrives within the schedule and grace period you set, the monitor goes offline and an incident opens.

A cron job that stops running rarely makes any noise. The backup that quietly stopped, the invoice export that never fired, the worker that died overnight: none of them return an error to anybody. Heartbeat monitoring, also called a dead man's switch, turns that silence into a signal. The job reports in when it finishes, and Uptimely raises the alarm when it does not.

In Uptimely this is an Incoming Request monitor. It gives you a URL, you call it from the job, and you tell it how often the job runs and how late it may be. When a check-in finally arrives after an outage, the monitor recovers and the incident resolves itself.

What you get

  • A unique heartbeat URL. Each monitor gets its own URL. Call it with GET or POST from curl, wget, PowerShell, a CI step or a line of code. The body can be empty.
  • Your schedule, your grace period. Set the expected interval anywhere from 1 minute to 7 days, plus a grace period for runs that take longer than usual.
  • Caught even if it never ran. A new monitor is timed from the moment you create it, so a job that was never wired up correctly goes offline too.
  • Incidents that resolve themselves. A missed check-in opens an incident, and the next check-in resolves it, so the incident shows how long the job was silent.
  • Beside everything else you monitor. Heartbeat monitors share status pages, incidents and on-call policies with your website and API monitors.
  • Alerts where you already look. Alerts go out by email, SMS, phone call, Slack, Discord and browser push, the same channels every other monitor uses.

How it works

  1. In the dashboard, create a monitor and choose Incoming Request.
  2. Open the monitor's Documentation tab and copy its heartbeat URL.
  3. Call that URL at the end of your job, like the crontab line below.
  4. Set the expected interval and the grace period on the monitor so they match how often the job runs.

A nightly backup that checks in only when it succeeds:

0 2 * * * /opt/scripts/backup.sh && curl -fsS -m 10 https://app.getuptimely.com/heartbeat/<your-monitor-key>

The && sends the check-in only when the backup exits successfully, so a failed run counts as a missed check-in. -m 10 stops a slow network from holding the job open.

What the Free plan includes

  • 10 monitors: each job you watch is one of them
  • Intervals from 1 minute to 7 days, with a grace period
  • Incidents, on-call and alerts
  • No credit card, and no time limit

Every plan and limit is on the pricing page.

Questions

What is a dead man's switch in monitoring?

A check that fires when something stops happening. Instead of Uptimely calling your service, your job calls Uptimely on a schedule, and the alarm goes off when the calls stop. Heartbeat monitoring and cron monitoring are other names for the same thing.

Should the job check in at the start or at the end?

At the end, once the work has succeeded. A check-in at the start only proves the job began; one at the end proves it finished. Chain it with && so a failing run sends nothing.

How late can a job be before I am alerted?

You decide. The deadline is the expected interval plus the grace period, both set on the monitor. With the defaults, a 5 minute interval and a 10 minute grace period, a job counts as late 15 minutes after its last check-in.

Can I check in from GitHub Actions, a serverless function or Windows Task Scheduler?

Yes. Anything that can make an HTTP request can check in: curl, wget, PowerShell's Invoke-WebRequest, or a fetch call in your own code. GET and POST both work, and the body can be empty.

What happens before the first check-in?

The schedule is timed from the moment you created the monitor, so a job that never checks in at all still goes offline once the first deadline passes.

What if I call the URL with the wrong key?

Uptimely answers 404 "Monitor not found" and records nothing. With curl -f that becomes a non-zero exit code, which shows up in the job's own logs.

Watch your first cron job on the Free plan. No credit card needed.

Monitor a cron job →

Part of what Uptimely does. Something here read wrong to you? Email support@getuptimely.com.