CronDrive

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.

  1. Regístrate en CronDrive.
  2. Crea un job nuevo con la expresión cron de tu job.

    Ejemplo: el formulario de job nuevo
    Horario

    Para reconocerlo en tu lista y en las alertas.

    Los mismos cinco campos que en tu crontab: minuto, hora, día, mes y día de la semana.

    Allá son las 13:32 (UTC−03:00).

    ¿Qué zona horaria elijo?

    La zona horaria del servidor donde se ejecuta el crontab, que puede no ser la tuya. Para verla, ejecuta esto en el servidor:

    timedatectl | grep "Time zone"

    Si el crontab define CRON_TZ, elige esa.

    Todos los días a las 03:00

    Próximas ejecuciones
    • vie 6 nov, 03:00
    • sáb 7 nov, 03:00
    • dom 8 nov, 03:00
    • lun 9 nov, 03:00
    • mar 10 nov, 03:00
    Alertas

    Una ejecución que falla avisa apenas llega su llamada de fin. Estos son los minutos de espera, desde la hora en que tocaba, cuando una llamada no llega.

    Déjalo vacío si solo agregas la llamada de fin.

    Para la ejecución del vie 6 nov, 03:00: alerta si no se ha iniciado a las 03:05 o no ha terminado a las 04:00.

    Necesita la llamada de inicio. Como máximo 3 de estas alertas en 24 horas; el historial muestra siempre las superposiciones.

    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.

  3. Agrega las llamadas alrededor de tu comando. Por ejemplo, en Linux:

    Antes:

    0 */2 * * * partial_backup.sh

    Despué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.

  4. 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.
  5. 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
    mié 4 nov, 03:00 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 A tiempo Inició 03:00, terminó 03:14, duró 14 min.
    dom 1 nov, 03:00 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.

  1. 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 header Authorization: Bearer <token>.

  2. 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.