Create a monitor, add one line to your job and let Cronitorex correlate the pings into a timeline. When a ping is late or missing, the alert reaches you within 60 seconds.
Pick a name like db-backup and tell Cronitorex how often the job should run. That schedule becomes the contract your job has to keep.
Send run when the job starts and complete or fail when it ends. Anything that can make an HTTP request can send a ping.
Cronitorex builds a timeline from your pings, detects missed and failed runs and alerts you by email, Telegram, Discord, Slack or webhook.
Pick whatever fits your stack. Every variant talks to the same API with the same three states: run, complete, fail.
0 2 * * * curl -fsS "https://api.cronitorex.com/ping/db-backup?api_key=$CRX_KEY&status=run" >/dev/null; /usr/local/bin/backup.sh && curl -fsS "https://api.cronitorex.com/ping/db-backup?api_key=$CRX_KEY&status=complete" >/dev/null || curl -fsS "https://api.cronitorex.com/ping/db-backup?api_key=$CRX_KEY&status=fail" >/dev/null
#!/usr/bin/env bash
set -euo pipefail
ping() {
curl -fsS "https://api.cronitorex.com/ping/db-backup?status=$1" \
-H "Authorization: Bearer $CRONITOREX_API_KEY" >/dev/null
}
ping run
if /usr/local/bin/backup.sh; then
ping complete
else
ping fail
fi import os, requests
API = "https://api.cronitorex.com/ping/db-backup"
HEADERS = {"Authorization": "Bearer " + os.environ["CRONITOREX_API_KEY"]}
requests.get(API, params={"status": "run"}, headers=HEADERS)
try:
run_backup()
requests.get(API, params={"status": "complete"}, headers=HEADERS)
except Exception:
requests.get(API, params={"status": "fail"}, headers=HEADERS)
raise curl -fsS "https://api.cronitorex.com/ping/db-backup?status=run" \ -H "Authorization: Bearer $CRONITOREX_API_KEY" /usr/local/bin/backup.sh curl -fsS "https://api.cronitorex.com/ping/db-backup?status=complete" \ -H "Authorization: Bearer $CRONITOREX_API_KEY"
Silence is a signal too. Cronitorex expects the next run within the interval you set, plus a grace period that absorbs normal jitter.
The run ping has not arrived yet, but the grace period is still open. The run is marked late and no alert is sent.
The grace period passed without a ping. Cronitorex raises a missed alert: the job did not run at all.
A fail ping, or a run ping with no ending before the time limit, marks the run as failed and alerts immediately.
A ping is a single HTTPS request. Correlation, detection and alerting happen on the Cronitorex side.
Sign up, get an API key, paste the curl into your cron. That's it.