Cron job monitoring

Pingstack gives each scheduled job a unique ping URL. Your job calls it when it finishes. If that call doesn't show up within the schedule (an interval or a cron expression) plus a grace period, Pingstack opens an incident and alerts your notification group. You can also send a number with the ping and get a warning when it crosses a threshold.

How it works

  1. Create a heartbeat check. Set its schedule as an interval (every 15 minutes) or a cron expression (0 3 * * *), and a grace period for jobs that sometimes run long.
  2. Call the ping URL when your job finishes. One HTTP request, from any language or tool. If the job knows it failed, call the URL with /fail on the end and Pingstack alerts you right away, without waiting for the deadline.
  3. Choose who hears about it. A missed run opens an incident and alerts the notification group on the check.

Add it to your job

Ping URLs look like https://pingstack.io/ping/YOUR_TOKEN. They accept GET or POST.

0 3 * * * pingstack run -- /usr/local/bin/backup.sh

The free pingstack command also reports failures right away with the job’s output, and records how long each run took.

Recipes for the Laravel scheduler, Rails recurring jobs, Celery beat, systemd timers and more are in the docs.

What you can configure

SettingWhat it does
ScheduleAn interval, or a cron expression with a time zone
Grace periodHow late a run can be before it counts as missed
Value thresholdsA warning and a critical threshold for the number sent with each ping, above or below
Notification groupsWho gets alerted, and by which channels
DashboardsWhich dashboards and status pages show the check

Common setups

  • Nightly database and file backups, with the backup size as the value
  • Billing runs, email digests and data syncs in a SaaS app
  • Queue workers and scheduled tasks in Laravel, Rails, Django and Node
  • Kubernetes CronJobs and GitHub Actions schedules

Comparing tools? See the Healthchecks.io alternative and the Cronitor alternative.

FAQ

Common questions

What happens if my job runs late but succeeds?

If the ping arrives inside the grace period, nothing happens. If it arrives after Pingstack has opened an incident, the check recovers and your notification group gets a recovery message.

Can I monitor jobs inside a private network?

Yes. A heartbeat only needs outbound HTTPS from the machine running the job, so jobs behind a firewall or NAT work without opening any ports.

How do I keep ping URLs secret?

Treat a ping URL like a password. Keep it in your job's environment or secret store, and keep it out of public repositories. Anyone with the URL can report a run for that check.

Does a ping count against my check limit?

No. Each job is one check, and it can receive any number of pings.

How long is ping history kept?

14 days on Free, 30 days on Pro, 90 days on Team and 365 days on Business.

Add your first check free.

Free for 15 checks
No card needed