Create a monitor, add one line to your job and let HelloCron 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 HelloCron 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.
HelloCron 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.hellocron.com/ping/db-backup?api_key=$CRX_KEY&status=run" >/dev/null; /usr/local/bin/backup.sh && curl -fsS "https://api.hellocron.com/ping/db-backup?api_key=$CRX_KEY&status=complete" >/dev/null || curl -fsS "https://api.hellocron.com/ping/db-backup?api_key=$CRX_KEY&status=fail" >/dev/null
#!/usr/bin/env bash
set -euo pipefail
ping() {
curl -fsS "https://api.hellocron.com/ping/db-backup?status=$1" \
-H "Authorization: Bearer $HELLOCRON_API_KEY" >/dev/null
}
ping run
if /usr/local/bin/backup.sh; then
ping complete
else
ping fail
fiimport os, requests
API = "https://api.hellocron.com/ping/db-backup"
HEADERS = {"Authorization": "Bearer " + os.environ["HELLOCRON_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)
raisecurl -fsS "https://api.hellocron.com/ping/db-backup?status=run" \ -H "Authorization: Bearer $HELLOCRON_API_KEY" /usr/local/bin/backup.sh curl -fsS "https://api.hellocron.com/ping/db-backup?status=complete" \ -H "Authorization: Bearer $HELLOCRON_API_KEY"
Silence is a signal too. HelloCron 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. HelloCron 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 HelloCron side.
Sign up, get an API key, paste the curl into your cron. That's it.