Integre o CronBeacon em 5 minutos.
Um job representa uma tarefa agendada a monitorar (cron, ETL, backup, worker...). Você define seu agendamento esperado e o CronBeacon verifica se ele roda corretamente.
Um run é uma única execução de um job. Cada evento recebido (iniciado, sucesso, falha) cria um run imutável com timestamp, duração e metadados.
Um alerta é disparado quando um job perde seu agendamento (missed), falha (failing) ou degrada. Alertas são enviados por e-mail, Slack ou webhook baseado nos seus canais configurados.
O estado de um job é computado continuamente: no prazo, atrasado, degradado, perdido, falhando. A pontuação de confiabilidade (7d / 30d) dá uma visão de longo prazo da saúde de cada job.
| Estado | Significado |
|---|---|
| on_time | A última execução teve sucesso dentro do tempo esperado. |
| late | A execução teve sucesso, mas após o período de tolerância. |
| degraded | O job está rodando, mas com anomalias (duração excessiva, erros parciais). |
| missed | Nenhuma execução recebida no tempo esperado. O job provavelmente não executou. |
| failing | A última execução falhou (evento: 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);