Choose the monitoring signal before the alert channel

At 2:15 a.m., a backup can fail while the website still returns a response. The reverse can happen at noon. One check cannot prove that both jobs worked.

Start with the failure

A scheduled task and a public website produce different evidence. The task can send a check-in when it starts, finishes, or fails. A separate observer can record what it received from a website.

Failure you need to catchRequired signalInspect next
A backup, import, report, or script misses its expected runA check-in from the scheduled jobScheduled-job heartbeat monitoring
A public endpoint stops returning the expected responseAn HTTP result from a separate observerSmall-site uptime state handling

These signals answer different questions. A heartbeat cannot show that a website answered. An HTTP result cannot show that a private backup finished.

What the file-based workflows do

The scheduled-job path reads heartbeat observations and timestamps supplied in a file. It classifies healthy, late, down, and recovered states, then writes a bounded export.

The website path reads caller-supplied observations. Before the first observation, it reports unknown. After an observation passes its stated period and grace, it reports stale.

These workflows do not receive internet check-ins, make HTTP requests, or send notifications. Keep a monitoring service when unattended collection, outside checks, escalation, or team response is part of the job.

Keep vendor functions separate

Cronitor documents job lifecycle events, schedule formats, grace periods, alerts, and notification lists. Uptime Kuma documents HTTP monitoring and status pages. Those are vendor functions. The file-based workflows here classify observations supplied by the caller.

Fit test

This smaller approach fits when one person can supply the observation, define the expected timing, and inspect the resulting record. It is a poor fit when the monitor must collect signals continuously, check several regions, contact an on-call team, or host a public status page.

Takeaway

A heartbeat proves that a scheduled task checked in. An HTTP observation records what one observer received. Keep those records separate.

Write down the failure you need to catch, then inspect the heartbeat path or the HTTP observation path.

Sources