ScriptsApr 17, 2026·3 min read

Healthchecks — Cron Job Monitoring with Smart Alerts

Healthchecks is a self-hosted cron job and scheduled task monitor that alerts you when your periodic jobs fail to run on time.

TL;DR
Healthchecks monitors cron jobs and scheduled tasks, alerting you when they fail to run on time.
§01

What it is

Healthchecks is a self-hosted monitoring service for cron jobs and scheduled tasks. Instead of checking whether a service is up, it checks whether your periodic jobs are running on schedule. When a job misses its expected ping, Healthchecks sends an alert.

It serves system administrators, DevOps engineers, and backend developers who run scheduled tasks (backups, data syncs, report generation) and need to know immediately when something stops working silently.

§02

How it saves time or tokens

Failed cron jobs are silent failures. Without monitoring, you might not discover a broken backup job until you need a restore. Healthchecks converts these invisible failures into immediate alerts via email, Slack, PagerDuty, or webhooks. The ping-based design requires only a single HTTP request or curl call appended to your existing scripts.

§03

How to use

  1. Create a check in Healthchecks with the expected schedule (cron expression or simple interval).
  2. Copy the unique ping URL and add a curl call to the end of your cron job script.
  3. Configure notification channels (email, Slack, PagerDuty) to receive alerts when pings are missed.
§04

Example

# Add a ping to your existing cron job
# crontab -e
0 2 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 5 https://hc-ping.com/your-uuid-here
# Python script with Healthchecks ping
import requests
import subprocess

try:
    subprocess.run(['python', 'etl_pipeline.py'], check=True)
    requests.get('https://hc-ping.com/your-uuid-here')
except Exception as e:
    requests.get('https://hc-ping.com/your-uuid-here/fail')
    raise
§05

Related on TokRepo

§06

Common pitfalls

  • Setting the grace period too short, causing false alerts when jobs take slightly longer than expected.
  • Pinging at the start of the job instead of the end, which hides jobs that start but fail to complete.
  • Forgetting to handle the failure ping endpoint for jobs that should report errors explicitly.

Frequently Asked Questions

How is Healthchecks different from uptime monitoring?+

Uptime monitors check whether a service responds to requests. Healthchecks monitors the absence of expected pings. It detects when scheduled jobs stop running, which uptime monitors cannot catch because there is no service endpoint to probe.

Can I self-host Healthchecks?+

Yes. Healthchecks is open source and provides Docker images and detailed self-hosting documentation. You can run it on your own infrastructure with PostgreSQL or MySQL as the database backend.

What notification channels does Healthchecks support?+

Healthchecks supports email, Slack, PagerDuty, Opsgenie, Discord, Telegram, webhooks, and many other integrations. You can configure multiple channels per check for redundancy.

Does it work with non-cron schedulers?+

Yes. Any periodic task that can make an HTTP request works with Healthchecks. This includes systemd timers, Kubernetes CronJobs, Airflow DAGs, Windows Task Scheduler, and custom schedulers.

Is there a free tier for the hosted version?+

Yes. The hosted version at healthchecks.io offers a free tier with up to 20 checks. For unlimited checks or self-hosting, the open-source version is available at no cost.

Citations (3)

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets