Cron job monitoring for jobs that fail silently
A dead cron job doesn't throw an error; it just stops running, and nothing tells you. Add one curl to the end of the job and get alerted when it misses its window.
A ping URL for every job
Each heartbeat monitor gets a unique token URL at infraagent.app/api/heartbeat/{token}. Your job hits it with a GET or POST when it finishes; curl or any HTTP client works.
Configurable grace period
You decide how long a job is allowed to go quiet. If a ping doesn't arrive by the expected time plus the grace period you set, the monitor goes down and alerts fire.
Alerts where you'll see them
Route SMS, email, or Discord alerts per monitor: down alerts, recovery notices, or both, with message templates you can customize per channel.
Every missed run tracked
Each outage becomes an incident, tracked from the first missed heartbeat to recovery, with duration, cause, and acknowledgements included.
How it works
- 1
Create a heartbeat monitor
Name the job, set a grace period in seconds, and get a unique token ping URL.
- 2
Add one line to your job
Append a curl to the end of your cron job, worker loop, or backup script so it pings the URL on every successful run.
- 3
Get alerted when it goes quiet
If the next ping is overdue by more than the grace period, the monitor goes down, and you get an SMS, email, or Discord alert.
Frequently asked questions
How does heartbeat monitoring work?
Each monitor gets a unique token URL at infraagent.app/api/heartbeat/{token}. Your job sends a GET or POST to it on every successful run; a curl at the end of the script is enough. If no ping arrives by the expected interval plus the grace period, the monitor goes down and your alerts fire.
What should I monitor with heartbeats?
Anything that's supposed to run on a schedule but has no URL to check: cron jobs, queue workers, and backup scripts. If it stops running, the missing ping is what tells you.
Do I need to install an agent?
No. There's nothing to install. The ping URL accepts GET or POST from curl or any HTTP client, so one extra line in your existing job is all it takes.
Can I configure the grace period?
Yes. The grace period is set in seconds per monitor, so a job that runs every five minutes and a nightly backup can each get a window that fits their schedule.