Cómo monitorear cron jobs y tareas programadas
Los monitores HTTP/TCP verifican que un servicio responde a peticiones externas, pero no detectan si un proceso interno —un cron, un worker, un job de backup, un pipeline de datos— dejó de ejecutarse. El patrón Heartbeat cubre exactamente ese caso.
Los monitores Heartbeat están disponibles en planes Pro y Enterprise.
Cómo funciona
El monitor Heartbeat invierte la dirección del chequeo: es tu proceso el que avisa a StatusInspector de que se ejecutó correctamente, en lugar de que StatusInspector pida al proceso que responda.
- Creas un monitor Heartbeat en el panel.
- Obtienes una URL única con token:
https://statusinspector.com/h/<token>. - Añades una llamada a esa URL al final de tu script o cron.
- Si en el tiempo configurado (
period + grace) no llega ningún ping, StatusInspector abre un incidente y envía alertas.
Paso a paso
1. Crear el monitor
- En el panel, ve a Monitores → Nuevo monitor.
- Selecciona el tipo Heartbeat.
- Configura:
- Nombre: identifica el job (ej. «Backup nocturno base de datos»)
- Período: cada cuánto debería ejecutarse (ej. 86400 s = 1 día)
- Período de gracia: tolerancia adicional (ej. 1800 s = 30 min)
2. Copiar la URL de ping
Tras guardar el monitor, copia la URL de ping desde el panel.
3. Añadir el ping a tu script
Shell / cron:
# Al final del script, tras ejecutar el trabajo correctamente:
curl -s "https://statusinspector.com/h/<token>" > /dev/null
Python:
import urllib.request
# Al completar el trabajo:
urllib.request.urlopen("https://statusinspector.com/h/<token>")
PHP:
// Al completar el trabajo:
file_get_contents("https://statusinspector.com/h/<token>");
Node.js:
// Al completar el trabajo:
fetch("https://statusinspector.com/h/<token>");
Validar que el job terminó bien (política status_ok)
Si quieres que el ping solo se cuente como válido cuando el job terminó sin errores, activa la política de payload status_ok:
- En el monitor, cambia Política de payload a
status_ok. - Define el campo JSON que indica éxito (ej.
status). - En tu script, envía un body JSON:
curl -s -X POST "https://statusinspector.com/h/<token>" \
-H "Content-Type: application/json" \
-d '{"status": "ok"}'
Si el campo no existe o su valor no es ok, el ping se rechaza y no reinicia el contador.
Alertas: cuándo se avisa
| Evento | Condición | Requiere activar |
|---|---|---|
| DOWN | No llegó ningún ping en period + grace | Siempre activo |
| DEGRADED (tarde) | Pasó period sin ping, todavía en grace | Activar «Avisar si llega tarde» |
| Recuperación | Llegó un ping válido y el incidente estaba abierto | Configurable en regla de alerta |
Buenas prácticas
- Llama al endpoint solo si el job terminó correctamente. Si tu script falla y llama de todas formas, el monitor nunca detectará el problema.
- Usa el período de gracia para absorber variaciones normales de tiempo (carga del servidor, colas, ventanas de mantenimiento). Un margen del 10–20% suele ser suficiente.
- Crea un token por job, no uno compartido. Así puedes revocar o pausar cada uno por separado.
- Nombra el monitor con claridad: «Backup diario — MySQL» es más útil en una alerta que «Heartbeat 3».
- No pongas el token en código público; usa variables de entorno o gestores de secretos.