Instalación y configuración de Watchdog

Cómo proteger tu servidor de bloqueos y cuelgues con un watchdog timer.

El watchdog timer es un mecanismo de protección respaldado por hardware que evita que tu servidor se quede bloqueado indefinidamente. La idea es sencilla: el sistema envía periódicamente una señal de «heartbeat» para reiniciar el temporizador. Si esa señal deja de llegar — porque el sistema se ha colgado, ha fallado o ha entrado en un bucle infinito — el temporizador se dispara y provoca un reinicio. Según la configuración, ese reinicio puede ser un reinicio limpio a nivel de software o un reinicio forzado a nivel de hardware (por ejemplo, activando la línea RST).

En los servidores dedicados y los VPS a los que no puedes acceder físicamente, este tipo de recuperación automática resulta enormemente valioso.

Instalación en Ubuntu / Debian

sudo apt-get install watchdog

El paquete instala los siguientes archivos principales:

  • /etc/init.d/watchdog — script de inicio del servicio
  • /etc/watchdog.conf — archivo de configuración principal
  • /etc/default/watchdog — opciones de arranque
  • /dev/watchdog — el dispositivo watchdog
  • /usr/sbin/watchdog — el binario watchdog

Parámetros clave en /etc/watchdog.conf

Temporización y registro:

  • interval — con qué frecuencia el watchdog escribe en el dispositivo. Por defecto: 10 segundos. Los valores superiores a 60 segundos requieren el flag -f al arrancar.
  • logtick — controla con qué frecuencia se escriben eventos en el log. Con logtick = 60 e interval = 10, los eventos se registran como máximo una vez cada 10 minutos.

Carga del sistema:

  • max-load-1, max-load-5, max-load-15 — valores máximos aceptables de carga media del sistema en 1, 5 y 15 minutos. Si se supera algún umbral, el watchdog provoca un reinicio. Establece el valor a 0 para desactivar una comprobación.

Memoria y temperatura:

  • min-memory — memoria virtual libre mínima aceptable. Establece el valor a 0 para desactivar.
  • max-temperature — temperatura máxima aceptable antes de que se produzca un reinicio.
  • watchdog-device — ruta al dispositivo watchdog (normalmente /dev/watchdog).
  • temperature-device — ruta al sensor de temperatura.

Monitorización de archivos y procesos:

  • file y change — monitoriza un archivo para detectar cambios. change establece el intervalo de comprobación.
  • pidfile — ruta al archivo PID del proceso que quieres mantener activo. Ejemplo: pidfile = /var/run/apache2.pid. Si el proceso no está en ejecución, el watchdog reiniciará el sistema.

Red:

  • ping e interface — comprueba la conectividad de red haciendo ping a un host. interface especifica qué interfaz de red utilizar.

Tests personalizados:

  • test-binary — ruta a un script o programa de prueba personalizado.
  • test-timeout — tiempo máximo de ejecución del test en segundos (0 para sin límite).
  • repair-binary — programa que se ejecuta automáticamente cuando se detecta un problema, antes de recurrir al reinicio.

Notificaciones y prioridad:

  • admin — dirección de correo para las notificaciones de eventos. Déjalo en blanco para desactivar.
  • realtime = Yes — fija el módulo watchdog en memoria para que no pueda ser intercambiado a swap.
  • priority — prioridad de planificación en tiempo real para el proceso watchdog.

Nuestros servicios y productos

HostingFunciona en discos NVMe ultrarrápidos. Apto para sitios web de cualquier complejidad.
Pedir
VPSParámetros ajustables y configuración flexible del SO. Administración gratuita incluida.
Pedir
Servidores dedicadosDisponibles diversas configuraciones Supermicro con procesadores Intel y AMD.
Pedir

Ejemplo de configuración con Intel TCO Watchdog

Cargar el módulo del kernel:

sudo modprobe iTCO_wdt

En /etc/watchdog.conf, descomentar o añadir:

watchdog-device = /dev/watchdog
interval = 10

En /etc/default/watchdog, especificar el nombre del módulo:

watchdog_module="iTCO_wdt"

Para habilitar el registro detallado en syslog durante la depuración:

watchdog_options="-v"

Reiniciar el servicio:

sudo /etc/init.d/watchdog restart

Ver los logs en tiempo real para confirmar que todo funciona correctamente:

tail -f /var/log/syslog

Ayuda

¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!

¿Necesitas ayuda?Nuestros ingenieros te ayudarán gratuitamente con cualquier pregunta en minutosContáctanos