Monitoreo de cron jobs
Para empezar
O deja que un agente de IA como Claude Code lo haga por ti: mira Configurar desde un agente de IA.
- Regístrate en CronDrive.
-
Crea un job nuevo con la expresión cron de tu job.
Ejemplo: el formulario de job nuevo
La página del job muestra la línea para pegar en tu crontab:
Ejemplo: la página del job
Respaldo nocturno
Monitoreando
0 3 * * *Todos los días a las 03:00 America/Santiago- Última ejecución
- A tiempo mié 4 nov, 03:00
- Duración promedio
- 12 minutos
- Próxima ejecución
- vie 6 nov, 03:00 luego sáb 7 nov, 03:00 y dom 8 nov, 03:00
Alerta cuando una ejecución no se ha iniciado 5 minutos después de la hora, o no ha terminado después de 60 minutos.
Tu línea de crontab
0 3 * * * curl -fsS -m 10 https://job.crondrive.com/uG2Exw/ start/ $$; /path/ to/ job.sh; curl -fsS -m 10 https://job.crondrive.com/ uG2Exw/ end/ $?/ $$ Ejecuta crontab -e y reemplaza /path/to/job.sh por tu comando.
-
Agrega las llamadas alrededor de tu comando. Por ejemplo, en Linux:
Antes:
0 */2 * * * partial_backup.shDespués:
0 */2 * * * curl -fsS -m 10 https://job.crondrive.com/uG2Exw/start/$$; partial_backup.sh; curl -fsS -m 10 https://job.crondrive.com/uG2Exw/end/$?/$$La llamada de fin se hace siempre, con el código de salida del comando ($?), así que una ejecución fallida alerta de inmediato. $$ empareja el fin con su inicio. La página de cada job muestra su línea, lista para copiar.
- Activa el monitoreo del job. Los jobs nuevos empiezan pausados: la página del job muestra cuándo llega la primera llamada, así puedes revisar la línea antes de que salga cualquier alerta.
-
Recibes una alerta por email (y en Slack, si lo conectas) cuando una ejecución falla, o no se inicia o no termina a tiempo. El historial del job guarda cada ejecución y alerta:
Ejemplo: el historial de un job que una noche no se ejecutó Horas en America/Santiago.
Hora Inició Terminó Duró mié 4 nov, 03:00 03:00 03:11 11 min A tiempo Inició 03:00, terminó 03:11, duró 11 min. mar 3 nov, 03:00 No se ejecutó Alertas enviadas a las 03:05 y 04:00. lun 2 nov, 03:00 03:00 03:14 14 min A tiempo Inició 03:00, terminó 03:14, duró 14 min. dom 1 nov, 03:00 03:00 03:12 12 min A tiempo Inició 03:00, terminó 03:12, duró 12 min.
Cómo funciona CronDrive
Le avisas a CronDrive cuándo se inicia tu job o script (opcional) y cuándo termina.
Para avisar que tu job se inició, llama a https://job.crondrive.com/{token}/start.
Para avisar que tu job terminó, llama a https://job.crondrive.com/{token}/end/{exit code} con su código de salida.
CronDrive te envía una alerta cuando el código de salida no es 0, o cuando no recibe una llamada a tiempo. Tú eliges cuánto esperar antes de alertar, y puedes pausar las alertas.
Si varias ejecuciones seguidas salen mal, recibes una alerta por las tres primeras, y ninguna más hasta que una ejecución salga bien. Cuando eso pasa, te llega un aviso de que el job volvió a funcionar. Para que un job que falla y funciona una y otra vez no te llene de avisos, cada job manda como máximo 20 en 24 horas.
Si una ejecución se inicia mientras otra sigue en curso, el historial lo muestra. Para un job que no debe ejecutarse dos veces a la vez, marca la opción en su formulario y recibe también una alerta, como máximo 3 en 24 horas. Necesita la llamada de inicio.
Agentes de IA (MCP)
CronDrive tiene un servidor MCP, así que un agente como Claude Code, Cursor o Codex puede configurar el monitoreo por ti: lee el crontab del servidor, crea un job por cada línea y agrega las llamadas a CronDrive.
-
Agrega el servidor a tu agente. En Claude Code:
claude mcp add --transport http --scope user crondrive https://crondrive.com/mcp Luego ejecuta
/mcp, elige crondrive y entra a CronDrive para conectarlo.Otros agentes necesitan la URL del servidor,
https://crondrive.com/mcp. Si no pueden entrar con OAuth, crea un token en Configuración y envíalo en el headerAuthorization: Bearer <token>. - Pídeselo en el servidor: “Monitorea los cron jobs de este servidor con CronDrive.”
El agente crea los jobs pausados, te muestra las nuevas líneas del crontab y reanuda los jobs cuando las líneas están instaladas. Después puedes preguntarle por tus jobs, por ejemplo por qué falló uno anoche.
En Claude o ChatGPT, agrega un conector personalizado con la URL https://crondrive.com/mcp, entra a CronDrive y conéctalo. No pueden leer el crontab de tu servidor, pero puedes pegarlo, o preguntarles por tus jobs y sus ejecuciones.
| Herramienta | Descripción |
|---|---|
list_jobs |
Tus jobs, con su última y su próxima ejecución |
get_job |
Un job, con su línea de crontab |
create_job |
Crea un job, pausado, y devuelve su línea de crontab |
update_job |
Cambia el nombre, el horario, la zona horaria o las alertas de un job |
pause_job |
Pausa el monitoreo de un job |
resume_job |
Reanuda el monitoreo de un job |
delete_job |
Borra un job que nunca recibió una llamada, como uno creado por error |
list_runs |
Las ejecuciones de un job, o solo las que fallaron |
Un agente solo puede borrar jobs que nunca recibieron una llamada, para que no pierda su historial por error; los demás se borran aquí. Un agente conectado o un token tiene acceso a todos tus jobs; desconéctalo o revócalo en Configuración cuando ya no lo uses.
Integración con Slack
Si tu equipo usa Slack, CronDrive puede enviar las alertas a un canal de Slack.
Conéctalo en Configuración y elige el canal para las alertas.
Webhooks
CronDrive también puede mandar las alertas a Discord, Microsoft Teams, Google Chat, Telegram, ntfy, PagerDuty, servicios que aceptan el formato de Slack o una URL tuya. Agrégalos en Configuración.
Cada servicio trae su plantilla, así que solo das la URL o la clave que pide. También puedes editar la petición (método, URL, headers y cuerpo) con estas variables, que se escapan según dónde van:
- {{job.name}}
- El nombre del job
- {{job.schedule}}
- La expresión cron
- {{job.time_zone}}
- La zona horaria del job
- {{job.url}}
- El historial del job en CronDrive
- {{event}}
- alert o recovered
- {{status}}
- start, end, failed, overlap o recovered
- {{exit_code}}
- El código de salida; vacío si el job no terminó
- {{output}}
- Los últimos 10 kB de lo que escribió el comando que falló, si tu plan la guarda; si no, vacío
- {{due_at}}
- Cuándo debía ejecutarse (ISO 8601)
- {{message}}
- El texto de la alerta, en tu idioma
- {{dedup_key}}
- El mismo en la alerta y en la recuperación; otro para las superposiciones
Además de las alertas, un webhook puede recibir un aviso cuando el job vuelve a funcionar después de una alerta, con el mismo {{dedup_key}}: PagerDuty lo usa para cerrar el incidente que abrió la alerta. Una alerta de superposición tiene su propio {{dedup_key}}, porque ninguna recuperación la cierra.
Los webhooks solo van a direcciones https públicas. Si 3 alertas seguidas no se pueden entregar, el webhook se pausa y te llega un email.
Referencia de la API
| Descripción | Endpoint |
|---|---|
| Avisar que el job se inició |
GET https://job.crondrive.com/{token}/start
|
| Avisar que el job se inició, con un identificador de la ejecución |
GET https://job.crondrive.com/{token}/start/{run id}
|
| Avisar que el job terminó, con su código de salida; uno distinto de 0 alerta |
GET https://job.crondrive.com/{token}/end/{exit code}
|
| Avisar que el job terminó, con su código de salida y el identificador de la ejecución que mandó su inicio (hasta 64 letras, dígitos, puntos, guiones o guiones bajos) |
GET https://job.crondrive.com/{token}/end/{exit code}/{run id}
|
| Avisar que el job terminó, sin código de salida |
GET https://job.crondrive.com/{token}/end
|
| Cualquiera de las llamadas de fin, con la salida del comando en el cuerpo; se guardan los últimos 10 kB, con el plan Pro |
POST https://job.crondrive.com/{token}/end/{exit code}/{run id}
|
| Pausar el monitoreo; no se envían alertas |
GET https://job.crondrive.com/{token}/pause
|
| Reanudar el monitoreo |
GET https://job.crondrive.com/{token}/resume
|
Las dos llamadas pueden terminar con un identificador de la ejecución, https://job.crondrive.com/{token}/start/{run id} y https://job.crondrive.com/{token}/end/{exit code}/{run id}, para que CronDrive empareje cada fin con su inicio aunque una ejecución dure más que el intervalo entre ejecuciones. La línea de crontab usa $$, que es el mismo en sus dos llamadas.
Cada llamada responde 200 con el cuerpo vacío, también con un token desconocido. Cada token acepta una llamada por segundo.