Automate a cron job monitor that alerts when a scheduled task goes quiet
A cron job that stops running makes no noise. A scheduled agent reads your heartbeat monitor each day for checks that are late or down, lists what missed its window and for how long, and drafts a note that its department head reviews and you approve.
What you’ll set up
Connections
Heartbeat monitor read access · Required
The team requests read access to your monitor when you add the job. Example: Healthchecks.io.
Upgrades
Report delivery (channel or inbox)
Delivers the approved report to your channel or inbox.
Inputs
Monitor projects to read · Required
List, no default
Ignore lateness under (minutes) · Optional
Number, default 10
Ready by · Required
Time, default 08:00
Brief · Required
Text, prefilled and editable during setup.
Runs
Runs every day at 08:00
Done by Research analyst
You approve before anything goes out.
You approve every report · Free to start
How it runs
One agent does the work. Its department head reviews it, then you approve.
- 1Research analyst
Runs daily at 08:00 and prepares the report from your connected sources.
- 2CTO · Review
The department head reviews the report before it reaches you.
- 3You
You approve before anything goes out.
What you get
Sample, not live data. The job names, schedules and times are invented.
Scheduled jobs, Tuesday (sample)
12 checks: 10 up, 1 late, 1 down.
| Job | Expected | Last ping | State |
|---|---|---|---|
| nightly-backup | daily 02:00 | 2 days ago | down |
| invoice-export | daily 06:00 | 40 min late | late |
For your decision
- Start with the backup host.
- Confirm the export is still running.
Why scheduled jobs fail silently
A web request that fails shows up in logs and error trackers. A job that never starts shows up nowhere, because there is nothing to log. Heartbeat monitoring turns that around: each job pings a URL when it runs, and the monitor raises an alarm when a ping fails to arrive. Healthchecks.io, used here as the example, describes its check states as new, up, late, down and paused.
Late versus down: period and grace time
Each check has an expected period or cron schedule, plus a grace time. In the Healthchecks.io docs example, a check with a one-hour period and five minutes of grace, last pinged at 12:00, turns late at 13:00 and down at 13:05. Late means the signal has not arrived yet. Down means the grace time ran out and alerts go out. Separating the two stops a slow run from looking like a dead one.
How the scheduled job works
You add the job and grant it read access to the monitor; the team requests the access when you add it. Healthchecks.io offers read-access API keys that can list checks and get a single check. Each day a scheduled agent lists your checks, reads each status and last ping time, keeps those that are in grace or down, sorts by how long each has been quiet, and sets paused checks aside so deliberate pauses do not look like failures. Jobs can also append /start or /fail to their ping URL; where a job uses them the report shows a run that began and never finished, without guessing the cause.
Review and approval
The CTO agent, as department head, reviews the report before it goes out: is each job really late rather than paused, are durations right for its schedule, is any suggested starting point reasonable. Then you approve, edit or skip it. Your monitor keeps sending its own alerts, so this is a recap, not your sole alarm.
Questions
Related jobs
Works from public sources: Public status pages and their JSON incident feeds (for example a Statuspage-hosted page's incidents.json)
Automate a weekly uptime and incident report from status pages
A weekly list of incidents on the status pages you depend on, with impact, duration and affected components.
Connects to: GitHub repository (read Actions) (required)
Automate a daily CI failure digest from GitHub Actions
One daily digest of yesterday's failed Actions runs, grouped by workflow and failing step.
Works from files you share
Automate monthly API key and secret rotation reminders
A monthly list of keys past your rotation limit, with owner and age. It holds names and dates; no secret values are shared.