Cron does not report failures. A job crashes, the schedule moves on, and you learn about it days later from a customer. Cronitorex expects a ping from every run and alerts you within 60 seconds when one does not arrive.
Every run reports run when it starts, then complete or fail when it ends. Two extra calls in your crontab are enough. No agent, no daemon, no library to install.
From those pings Cronitorex builds a timeline per job: durations, exit codes, failure history. A run that starts and never ends counts as a failure too.
*/5 * * * * root cronitorex ping db-backup run; /opt/backup.sh && cronitorex ping db-backup complete || cronitorex ping db-backup fail
A crashed server sends no fail ping. Cronitorex knows the expected interval of every job and waits one extra grace period to absorb normal jitter. When that window closes without a ping, you get a missed run alert.
Both values are yours to set per monitor. A nightly backup with a 15 minute grace period behaves differently than a sync job that runs every 5 minutes with a 60 second one.
The cronitorex.sh client wraps your command: it sends run, executes the job, measures the duration, captures the exit code and the last lines of stderr, then finishes with complete or fail. You change one word in the crontab, not your script.
Already running a full crontab? The discover command reads it and creates a monitor for every job it finds, with the schedule taken straight from the cron expression.
# wrap any job: exit code, duration and stderr captured cronitorex.sh run db-backup -- /opt/backup.sh # import your existing crontab as monitors cronitorex.sh discover /etc/crontab
Yes. Anything that can send an HTTP request can ping: systemd timers, Kubernetes CronJobs, Airflow tasks, GitHub Actions, Windows Task Scheduler. Cronitorex only sees the pings, not the scheduler behind them.
Every ping is one event: run, complete, fail or skip. A job that sends run and complete once an hour produces about 1,440 events per month, so the 50,000 events on the Free plan cover dozens of jobs.
The API starts returning HTTP 402 and new pings are not accepted until the month resets or you upgrade. Nothing is deleted; the dashboard and your history stay available the whole time.
Sign up, get an API key, paste the curl into your cron. That's it.