Integra CronBeacon en 5 minutos.
Un job representa una tarea planificada a supervisar (cron, ETL, backup, worker...). Defines su planning esperado y CronBeacon verifica que se ejecute correctamente.
Un run es una ejecución individual de un job. Cada evento recibido (started, succeeded, failed) crea un run inmutable con timestamp, duración y metadatos.
Una alerta se activa cuando un job falla su schedule (missed), devuelve error (failing) o se degrada. Las alertas se envían por email, Slack o webhook según los canales configurados.
El estado de un job se calcula de forma continua: on_time, late, degraded, missed, failing. La puntuación de fiabilidad (7d / 30d) ofrece una visión a largo plazo de la salud de cada job.
| Estado | Significado |
|---|---|
| on_time | El último run fue exitoso dentro del tiempo esperado. |
| late | El run fue exitoso pero después del grace period. |
| degraded | El job funciona pero con anomalías (duración excesiva, errores parciales). |
| missed | Ningún run recibido en el tiempo esperado. El job probablemente no se ejecutó. |
| failing | El último run falló (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);