Cómo vigilar una copia de seguridad con un latido (heartbeat)
Paso a paso para monitorear un backup de cron con un latido: qué detecta, cómo elegir el margen de gracia y por qué no sustituye a probar la restauración.
Monitorear un backup de cron es una de esas tareas que nadie hace hasta que la necesita. La copia de seguridad de la madrugada lleva años funcionando, alguien migra el servidor, el cron no se copia y la copia deja de hacerse. Nadie se entera hasta el día en que hace falta restaurar.
Un latido (en inglés, heartbeat) resuelve justo eso: que el silencio de una tarea programada deje de pasar desapercibido. Aquí va cómo montarlo, qué detecta y, sobre todo, qué no.
Por qué las copias fallan en silencio
Una copia de seguridad que falla no suele dar error en ninguna pantalla. Las causas más habituales:
- El cron desapareció. Una migración, una reinstalación o un cambio de usuario dejó el
crontabvacío. - El disco se llenó. La copia empieza y no tiene dónde escribir.
- Cambió una credencial. La contraseña de la base de datos o la clave del almacenamiento externo ya no sirve.
- El script se cuelga. Espera una respuesta que nunca llega y no termina.
- El servidor estaba apagado a la hora programada.
En todos los casos pasa lo mismo: la tarea no termina bien y nadie mira.
Cómo funciona un latido
Un monitor web va a buscar tu página. Un latido funciona al revés: es tu tarea la que llama a una dirección única al terminar. Si la llamada llega dentro del plazo, todo bien. Si no llega, el monitor queda caído y recibes el aviso.
Lo que se vigila es el silencio. No hace falta instalar nada en el servidor: basta con una petición HTTP.
Paso a paso
- Crea un monitor de tipo latido en MonitoraWeb. Te da una dirección con un código secreto, del estilo
https://app.monitoraweb.com/hb/TU_CODIGO. - Elige el intervalo. Si la copia corre una vez al día, el intervalo es de un día.
- Elige el margen de gracia. Es el tiempo extra que toleras antes de dar la alarma. Si la copia suele tardar veinte minutos y algún día una hora, un margen de dos horas evita sustos.
- Añade la llamada al final de la tarea, de forma que solo salga si la copia terminó bien:
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 https://app.monitoraweb.com/hb/TU_CODIGO
El && hace que curl solo se ejecute si el script terminó sin error. -m 10 evita que la propia llamada se quede colgada.
- Si quieres avisar del fallo en el momento, sin esperar al plazo, llama a la misma dirección terminada en
/failcuando el script falle:
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 https://app.monitoraweb.com/hb/TU_CODIGO || curl -fsS -m 10 https://app.monitoraweb.com/hb/TU_CODIGO/fail
- Pruébalo. Ejecuta la tarea a mano una vez y comprueba que el monitor recibe el latido. Después, si puedes, provoca un fallo para ver llegar el aviso.
Si necesitas ayuda con la expresión del cron, el generador de expresiones cron te la arma gratis.
Que el script compruebe su propio resultado
El latido solo sabe lo que tu script le diga. Si el script termina «bien» aunque el archivo esté vacío, el latido llega igual. Por eso conviene que el propio script verifique lo mínimo antes de dar por buena la copia:
- Que el archivo exista y no pese cero.
- Que el volcado de la base de datos termine con la marca de fin que deja tu herramienta.
- Que la subida al almacenamiento externo haya devuelto éxito.
Solo cuando todo eso se cumple, el script sale con código 0 y el && deja pasar el latido.
Lo que un latido no verifica
Hay que decirlo claro: un latido no comprueba que la copia sirva. Sabemos que la tarea terminó y llamó; no abrimos el archivo, no lo descomprimimos y no lo restauramos. Una copia corrupta, incompleta o cifrada con una clave perdida puede mandar su latido sin problema.
La única forma de saber que una copia sirve es restaurarla. Conviene hacerlo de vez en cuando en un entorno aparte, y apuntar cuánto tarda: ese es tu tiempo real de recuperación.
Otros límites:
- Si el servidor no puede salir a internet, el latido no llega aunque la copia se haya hecho.
- El aviso dice que la señal no llegó, no por qué. La causa está en tu servidor.
- No leemos los registros de la tarea ni medimos cuánto tarda por dentro.
Avisos
Cuando el plazo y el margen se cumplen sin latido, el monitor queda caído y avisa por los canales de tu lista: correo y, en los planes de pago, también WhatsApp, Slack, Microsoft Teams, Discord, Telegram o un webhook firmado. Todo lo que hace un latido, con sus límites, está en monitoreo de tareas cron.
Preguntas frecuentes
¿El latido sabe si mi copia de seguridad está bien?
No. Sabe que la tarea terminó y llamó. Comprobar que la copia se puede restaurar es una tarea aparte que conviene hacer de vez en cuando.
¿Qué margen de gracia pongo?
El suficiente para cubrir los días lentos. Mira cuánto tarda la copia en su peor día y deja algo más.
¿Tengo que instalar algo en el servidor?
No. Basta con curl, wget o cualquier forma de hacer una petición HTTP al final de la tarea.
¿Qué pasa si la copia falla pero el script no lo detecta?
El latido llegará igual. Por eso conviene que el script compruebe el tamaño del archivo o el resultado de la subida antes de terminar con éxito.
¿Puedo vigilar varias copias con un solo monitor?
Es mejor un monitor por tarea. Así sabes exactamente cuál dejó de llegar.
Compruébalo ahora en tu web, gratis y sin cuenta.
Abrir la herramienta