Crea un monitor, agrega una línea a tu job y deja que Cronitorex correlacione los pings en una línea de tiempo. Cuando un ping llega tarde o no llega, la alerta te alcanza en 60 segundos.
Elige un nombre como db-backup e indícale a Cronitorex con qué frecuencia debería correr el job. Ese horario se convierte en el contrato que tu job tiene que cumplir.
Envía run cuando el job arranca y complete o fail cuando termina. Cualquier cosa que pueda hacer una solicitud HTTP puede enviar un ping.
Cronitorex construye una línea de tiempo a partir de tus pings, detecta ejecuciones perdidas y fallidas, y te avisa por email, Telegram, Discord, Slack o webhook.
Elige lo que se ajuste a tu stack. Cada variante habla con la misma API y con los mismos tres estados: run, complete, fail.
0 2 * * * curl -fsS "https://api.cronitorex.com/ping/db-backup?api_key=$CRX_KEY&status=run" >/dev/null; /usr/local/bin/backup.sh && curl -fsS "https://api.cronitorex.com/ping/db-backup?api_key=$CRX_KEY&status=complete" >/dev/null || curl -fsS "https://api.cronitorex.com/ping/db-backup?api_key=$CRX_KEY&status=fail" >/dev/null
#!/usr/bin/env bash
set -euo pipefail
ping() {
curl -fsS "https://api.cronitorex.com/ping/db-backup?status=$1" \
-H "Authorization: Bearer $CRONITOREX_API_KEY" >/dev/null
}
ping run
if /usr/local/bin/backup.sh; then
ping complete
else
ping fail
fi import os, requests
API = "https://api.cronitorex.com/ping/db-backup"
HEADERS = {"Authorization": "Bearer " + os.environ["CRONITOREX_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)
raise curl -fsS "https://api.cronitorex.com/ping/db-backup?status=run" \ -H "Authorization: Bearer $CRONITOREX_API_KEY" /usr/local/bin/backup.sh curl -fsS "https://api.cronitorex.com/ping/db-backup?status=complete" \ -H "Authorization: Bearer $CRONITOREX_API_KEY"
El silencio también es una señal. Cronitorex espera la próxima ejecución dentro del intervalo que definiste, más un período de gracia que absorbe las variaciones normales.
El ping run todavía no llegó, pero el período de gracia sigue abierto. La ejecución se marca como tardía y no se envía ninguna alerta.
El período de gracia pasó sin recibir ningún ping. Cronitorex genera una alerta de ejecución perdida: el job no corrió en absoluto.
Un ping fail, o un ping run sin cierre antes del límite de tiempo, marca la ejecución como fallida y alerta de inmediato.
Un ping es una simple solicitud HTTPS. La correlación, la detección y las alertas ocurren del lado de Cronitorex.
Regístrate, consigue una API key, pega el curl en tu cron. Eso es todo.