Integra CronBeacon in 5 minuti.
Un job rappresenta un'attività pianificata da monitorare (cron, ETL, backup, worker...). Definisci il suo planning atteso e CronBeacon verifica che venga eseguito correttamente.
Un run è una singola esecuzione di un job. Ogni evento ricevuto (started, succeeded, failed) crea un run immutabile con timestamp, durata e metadati.
Un avviso viene attivato quando un job manca il suo schedule (missed), fallisce (failing) o si degrada. Gli avvisi vengono inviati via email, Slack o webhook in base ai canali configurati.
Lo stato di un job viene calcolato in continuo: on_time, late, degraded, missed, failing. Il punteggio di affidabilità (7g / 30g) offre una visione a lungo termine della salute di ogni job.
| Stato | Significato |
|---|---|
| on_time | L'ultimo run è riuscito entro il tempo atteso. |
| late | Il run è riuscito ma dopo il grace period. |
| degraded | Il job funziona ma con anomalie (durata eccessiva, errori parziali). |
| missed | Nessun run ricevuto entro il tempo atteso. Il job probabilmente non è stato eseguito. |
| failing | L'ultimo run è fallito (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);