Guides
Getting started
- How to monitor cron jobs (and get alerted when they don't run)Cron is silent when a job doesn't run. Here is how to detect missed, failed and hung cron jobs with a heartbeat URL.
- Heartbeat monitoring vs uptime monitoring: what each one catchesUptime checks ask 'is it answering?'. Heartbeats ask 'did it run?'. Why scheduled jobs need the second kind, and when you need both.
- Get alerted before an SSL/TLS certificate expiresAuto-renewal fails silently more often than you think. Monitor certificate expiry and chain validity, and get warned days ahead.
Platforms and schedulers
- Monitoring Kubernetes CronJobs for missed and failed runsKubernetes CronJobs can silently stop scheduling. Add a heartbeat to each CronJob to detect missed, failed and stuck runs.
- Monitoring systemd timers: alert when a timer job fails or stops runningsystemd timers fail quietly too. Use ExecStartPost and OnFailure to report success and failure to a heartbeat monitor.
- Monitoring cron jobs in Docker containersCron inside containers fails silently: no daemon, missing environment variables, logs nobody reads. Here's how to catch it.
- Monitoring scheduled AWS Lambda functions (EventBridge)Know when a scheduled Lambda didn't run, timed out or threw, without wiring up CloudWatch alarms for every function.
- Monitoring GitHub Actions scheduled workflows (cron) for missed and failed runsGitHub Actions schedules can be delayed, skipped or disabled automatically. Add a heartbeat so you notice when a scheduled workflow stops running.
- Monitoring GitLab CI scheduled pipelinesGet alerted when a GitLab scheduled pipeline fails or quietly stops running, with a few lines of .gitlab-ci.yml.
- Monitoring Windows Task Scheduler jobs with a heartbeatAlert when a Windows scheduled task fails or stops running, using a small PowerShell wrapper that reports the exit code.
Frameworks and languages
- Monitoring Rails scheduled jobs (whenever, sidekiq-cron, Solid Queue)Get alerted when a Rails scheduled job fails, hangs or silently stops running, whether it is scheduled by cron or by a job queue.
- Monitoring the Laravel scheduler and scheduled commandsGet alerted when a Laravel scheduled command fails or the scheduler itself stops running, using pingOnSuccess and pingOnFailure.
- Monitoring Node.js scheduled jobs (node-cron, BullMQ)Get alerted when a Node.js scheduled task fails, hangs or stops running after a crash or deploy.
- Monitoring Python scheduled jobs (scripts, Django commands, APScheduler)A small, dependency-free heartbeat for Python jobs: get alerted when a script, Django management command or APScheduler job fails or stops running.
- Monitoring Celery beat periodic tasksCelery beat can stop scheduling without errors. Send a heartbeat from each periodic task, and alert on failures with Celery signals.
- Monitoring Go scheduled jobs (robfig/cron and plain cron)A small heartbeat helper for Go: get alerted when a scheduled function fails, panics, hangs or stops running.
Backups
- How to know your backups actually ranBackups that silently stopped are the classic disaster. Monitor backup jobs with heartbeats, check the output size, and alert on failure.
- Monitoring restic and borg backups: alert on failed or missing snapshotsA backup script that stops running is the classic silent failure. Wrap restic or borg with a heartbeat that reports exit codes and output.
Comparisons
- Cron job monitoring tools compared: Healthchecks.io, Cronitor, Dead Man's Snitch and CronPupAn honest side-by-side of heartbeat/cron monitoring services: free tiers, pricing at 50 and 300 monitors, and where each one is the better pick.
- A Healthchecks.io alternative: when CronPup fits, and when it doesn'tComparing CronPup with Healthchecks.io for cron and heartbeat monitoring: price at 50 and 300 monitors, TLS checks, and when to stay with Healthchecks.io.
- A Cronitor alternative for cron and heartbeat monitoringComparing CronPup with Cronitor for job monitoring: per-monitor vs flat pricing, scope, and when Cronitor is the better choice.
- A Dead Man's Snitch alternativeComparing CronPup with Dead Man's Snitch for heartbeat monitoring: tiers, cron schedules, run tracking, and TLS checks.
More
- Better Stack heartbeats vs CronPup: an honest comparisonBetter Stack is an incident-management platform with heartbeat monitoring built in. CronPup does only job heartbeats and TLS expiry, at flat prices. Here is when each fits.
- Cron job not running? A checklist (and how to find out next time)The common reasons a cron job silently doesn't run: PATH, %, permissions, timezones, missing newline, the wrong crontab. Plus how to get alerted.
- Monitoring Apache Airflow DAGs with a dead man's switchAirflow can't alert you if the scheduler itself is down or a DAG stops being scheduled. Add an external heartbeat per critical DAG.
- Alert when a scheduled Jenkins job doesn't runJenkins tells you when a build fails, not when a timer-triggered job never starts. Add a heartbeat to catch both.
- Monitoring Spring @Scheduled tasksA @Scheduled method stops when the app is down, the thread pool is stuck or the bean isn't loaded, and nothing logs it. Add a heartbeat.
- Is Heroku Scheduler running your job? How to knowHeroku Scheduler is best-effort: Heroku says jobs can be skipped or run twice. Monitor each scheduled job with a heartbeat.
- Monitoring Google Cloud Scheduler and Cloud Run jobsCloud Scheduler retries and logs, but nobody is told when a job stops being triggered or never finishes. Add an end-to-end heartbeat.
- WP-Cron not running? Monitor WordPress scheduled tasksWP-Cron only runs when someone visits the site, so low-traffic sites miss scheduled posts and backups. Use a real cron and a heartbeat.
- Monitoring scheduled Claude Code and other agent routinesRun a coding or research agent on a schedule? Here is how to know it ran, finished, and actually did something.
- Monitoring AI agents that run in GitHub ActionsScheduled workflows that call an LLM or run an agent can be skipped, disabled, time out or succeed with no output. Catch each case.
- Monitoring n8n and Zapier AI workflowsAI steps in n8n or Zapier can fail, return nothing or stop being triggered. Add a heartbeat at the end and a failure signal on errors.