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
- 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. - 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
/failon the end and Pingstack alerts you right away, without waiting for the deadline. - 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.shThe 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
| Setting | What it does |
|---|---|
| Schedule | An interval, or a cron expression with a time zone |
| Grace period | How late a run can be before it counts as missed |
| Value thresholds | A warning and a critical threshold for the number sent with each ping, above or below |
| Notification groups | Who gets alerted, and by which channels |
| Dashboards | Which 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.
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.