Saltar al contenido

Cómo gestionar logs en un VPS sin que se coman el disco

7 min de lectura Infraestructura
  • logs
  • logrotate
  • vps
  • disco
  • linux
  • infraestructura

El problema de los logs en un VPS sin gestión

Los logs son esenciales para cualquier servidor. Registran errores, accesos, advertencias y toda la actividad de tus servicios. El problema es que estos archivos crecen sin parar y, si no los gestionas bien, acaban comiéndose todo el disco de tu VPS.

Cuando el disco se llena, tu servidor deja de funcionar, los servicios se caen y repararlo se convierte en una carrera contrarreloj. Esto lo he visto muchas veces en clientes que montan su VPS y olvidan este detalle.

Por qué los logs se acumulan y qué servicios los generan

Casi todo lo que corre en un servidor genera logs. El sistema operativo tiene sus propios registros (syslog, auth.log), los servidores web como Nginx o Apache graban cada petición, y tus aplicaciones con Docker también.

La mayoría de las instalaciones por defecto no tienen una política de limpieza agresiva. Esto significa que los archivos de registros se guardan indefinidamente, ocupando gigabytes de espacio con el tiempo. El disco es un recurso finito y, si no lo controlas, te va a dar un disgusto.

logrotate: la herramienta estándar para Linux

logrotate es el estándar en Linux para gestionar estos archivos. Su función es sencilla: rotar los registros antiguos, comprimirlos para ahorrar espacio y eliminar los que ya no son necesarios después de un tiempo. Se ejecuta automáticamente cada día o semana, según la configuración.

La configuración principal de logrotate está en /etc/logrotate.conf, y las configuraciones específicas de cada servicio suelen estar en /etc/logrotate.d/.

Aquí tienes un ejemplo de configuración para los logs de Nginx que uso habitualmente:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        systemctl reload nginx > /dev/null 2>&1 || true
    endscript
}

Esta configuración rota los logs de Nginx diariamente, los mantiene durante 7 días (rotate 7), los comprime y recarga Nginx después de la rotación (postrotate). Es una política que funciona bien para muchos proyectos, equilibrando espacio y necesidad de histórico.

Gestionando los logs de Docker

Los contenedores Docker también generan logs que pueden llenar el disco. Por defecto, Docker usa el driver de logging json-file, que guarda los registros de cada contenedor en un archivo JSON dentro de /var/lib/docker/containers/.

Mi regla es clara: configura límites de tamaño para los logs de Docker directamente en el docker-compose.yml o en el daemon de Docker. No esperes que logrotate lo haga por ti en este caso, es menos eficiente y más propenso a errores.

Un ejemplo de cómo limitar los logs en un docker-compose.yml:

services:
  mi-aplicacion:
    image: mi-imagen
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

Con max-size: "10m" limitas cada archivo de registro a 10 MB, y con max-file: "3" mantienes un máximo de 3 archivos rotados. Esto significa que los logs de este contenedor nunca excederán los 30 MB de disco. Esta estrategia es mucho más robusta que intentar aplicar logrotate a los registros internos de Docker.

Para gestionar logs en Docker, entiende cómo funciona la persistencia de datos. Los volúmenes Docker vs bind mounts tienen sus diferencias y su elección afecta directamente a dónde se guardan los registros y otros datos.

Monitoreo y alertas para el espacio en disco

Configurar logrotate y los límites de Docker es el primer paso, pero no el último. Necesitas saber si el disco se está llenando por otras razones o si tu configuración no está funcionando.

Para esto, la monitorización básica de un VPS es necesaria. Un simple script que revise el uso del disco y te envíe una alerta por Telegram si supera un umbral (por ejemplo, el 80%) puede evitar muchas noches en vela. Esto te da margen para reaccionar antes de que el servidor colapse.

El tradeoff de la gestión de logs

La gestión de logs ofrece claros beneficios: mejora la estabilidad del VPS al evitar caídas por falta de espacio, permite el ahorro de disco al recuperar espacio valioso, facilita una auditoría controlada manteniendo un historial de registros razonable, y mejora el rendimiento general del sistema. Sin embargo, también presenta desafíos: requiere una configuración inicial que implica entender logrotate y las opciones de logging de Docker; exige mantenimiento continuo, ya que las aplicaciones y servicios cambian y las reglas de rotación pueden necesitar ajustes; y conlleva el riesgo de pérdida de registros si la rotación es demasiado agresiva, lo que puede dificultar la depuración de problemas antiguos. Es un equilibrio.

La gestión de logs es una tarea de mantenimiento que a menudo se pasa por alto. No es atractiva, pero es necesaria para la salud de cualquier servidor en producción. Si no la abordas, el disco te pasará factura.

Asegurar tu servidor es tan necesario como gestionar su espacio. Si ya tienes logrotate en marcha, el siguiente paso es revisar tus backups automáticos en un VPS para evitar sustos mayores. Para protegerte de accesos no deseados, te recomiendo configurar Fail2ban en un VPS para bloquear ataques de fuerza bruta.

Lucas Juárez
Lucas Juárez

Técnico freelance especializado en desarrollo a medida, automatizaciones con IA y gestión técnica para negocios en España. Más sobre mí →

Compartir:

¿Necesitas que alguien se ocupe de tu web?

Me encargo de que tu web funcione, esté segura y actualizada. Backups, actualizaciones y soporte directo. Planes desde 49 €/mes.

Chat