Intégrez CronBeacon en 5 minutes.
Un job représente une tâche planifiée à surveiller (cron, ETL, backup, worker...). Vous définissez son schedule attendu et CronBeacon vérifie qu'il s'exécute correctement.
Un run est une exécution unique d'un job. Chaque event reçu (started, succeeded, failed) crée un run immuable avec horodatage, durée, et métadonnées.
Une alerte est déclenchée quand un job rate son schedule (missed), échoue (failing), ou se dégrade. Les alertes sont envoyées par email, Slack ou webhook selon vos canaux configurés.
L'état d'un job est calculé en continu : on_time, late, degraded, missed, failing. Le score de fiabilité (7j / 30j) donne une vision long terme de la santé de chaque job.
| État | Signification |
|---|---|
| on_time | Le dernier run a réussi dans le délai attendu. |
| late | Le run a réussi mais après le délai de grâce. |
| degraded | Le job fonctionne mais avec des anomalies (durée excessive, erreurs partielles). |
| missed | Aucun run reçu dans le délai attendu. Le job ne s'est probablement pas exécuté. |
| failing | Le dernier run a échoué (event: failed). |
#!/bin/bash
CB_TOKEN="cb_your_token"
CB_URL="https://cronbeacon.com/api/v1/ingest/events"
CB_JOB="my_job_key"
START=$(date +%s%3N)
/path/to/your_script.sh
EXIT_CODE=$?
DURATION=$(( $(date +%s%3N) - START ))
if [ $EXIT_CODE -eq 0 ]; then
EVENT="succeeded"; MSG="ok"
else
EVENT="failed"; MSG="exit code $EXIT_CODE"
fi
curl -s -X POST "$CB_URL" \
-H "Authorization: Bearer $CB_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"job_key\":\"$CB_JOB\",\"event\":\"$EVENT\",\"duration_ms\":$DURATION,\"message\":\"$MSG\"}"
curl -X POST https://cronbeacon.com/api/v1/ingest/events \
-H "Authorization: Bearer cb_your_token" \
-H "Content-Type: application/json" \
-d '{"job_key":"nightly_backup","event":"succeeded","duration_ms":4200}'
$ch = curl_init('https://cronbeacon.com/api/v1/ingest/events');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer cb_your_token',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'job_key' => 'nightly_backup',
'event' => 'succeeded',
'duration_ms' => 4200,
]),
CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);
curl_close($ch);