Volver a herramientas

Generador de Logrotate

¿Qué es Logrotate?

Logrotate es una utilidad de Linux diseñada para administrar los archivos de log en sistemas Unix/Linux. Automáticamente comprime, rota, elimina y envía por correo los archivos de log según una configuración programada.

¿Por qué usar logrotate?

  • Ahorro de espacio: Evita que los archivos de log crezcan indefinidamente y ocupen todo el espacio en disco.
  • Organización: Mantiene un historial de logs rotados con fechas.
  • Compresión: Reduce el tamaño de los logs antiguos.
  • Automatización: Todo funciona de forma automática sin intervención manual.

Instalación

# Debian/Ubuntu

sudo apt-get install logrotate

# RHEL/CentOS/Fedora

sudo yum install logrotate

# Arch Linux

sudo pacman -S logrotate

Configuración básica

La configuración típica se encuentra en:

  • /etc/logrotate.conf - Configuración global
  • /etc/logrotate.d/ - Configuraciones por aplicación

Directivas importantes

  • daily/weekly/monthly - Frecuencia de rotación
  • rotate N - Mantener N archivos antiguos
  • size Tamaño - Rotar si supera cierto tamaño (ej: 100M)
  • compress - Comprimir logs antiguos con gzip
  • create permisos usuario grupo - Crear nuevo archivo tras rotar
  • missingok - No error si el archivo no existe
  • notifempty - No rotar si el archivo está vacío
  • postrotate/endscript - Ejecutar comandos tras rotar

Ejemplo práctico

/var/log/nginx/access.log {

daily

rotate 14

compress

delaycompress

missingok

notifempty

create 640 www-data adm

sharedscripts

postrotate

[ -f /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid)

endscript

}

Preguntas frecuentes

¿Qué es logrotate y para qué sirve?

Logrotate es una utilidad de Linux que administra automáticamente los archivos de log del sistema. Su función principal es rotar, comprimir, eliminar y enviar por correo los archivos de log según una configuración programada, evitando que crezcan indefinidamente y llenen el disco duro. Es esencial para el mantenimiento de cualquier servidor Linux en producción.

¿Cómo instalar logrotate en Linux?

Logrotate viene preinstalado en la mayoría de distribuciones Linux. Si no está instalado, puedes añadirlo fácilmente: en Debian/Ubuntu con "sudo apt-get install logrotate", en RHEL/CentOS/Fedora con "sudo yum install logrotate", y en Arch Linux con "sudo pacman -S logrotate". La configuración global se encuentra en /etc/logrotate.conf y las configuraciones por aplicación en /etc/logrotate.d/.

¿Cuál es la diferencia entre las directivas daily, weekly y monthly en logrotate?

Estas directivas definen la frecuencia de rotación de los logs: "daily" rota los archivos cada día, "weekly" cada semana y "monthly" cada mes. La elección depende del volumen de logs que genere tu aplicación. Para servidores web con alto tráfico como Nginx o Apache, se recomienda "daily". Para servicios con poco tráfico, "weekly" o "monthly" suele ser suficiente.

¿Cómo comprimir logs antiguos con logrotate?

Para comprimir logs antiguos, usa la directiva "compress" en tu configuración de logrotate. Esto comprime los logs rotados con gzip, reduciendo significativamente el espacio en disco. Si necesitas que el log más reciente no se comprima inmediatamente, combínalo con "delaycompress", que retrasa la compresión un ciclo de rotación.

¿Qué significa la directiva "rotate" en logrotate?

La directiva "rotate N" indica cuántos archivos de log rotados deseas conservar antes de eliminarlos. Por ejemplo, "rotate 14" mantendrá los últimos 14 archivos rotados y eliminará el más antiguo cuando llegue el 15. Si usas "daily" con "rotate 14", conservarás 14 días de historial.

¿Cómo forzar la rotación de un log sin esperar al programa de logrotate?

Puedes forzar la rotación manualmente ejecutando "sudo logrotate -f /etc/logrotate.conf" o para un archivo específico "sudo logrotate -f /etc/logrotate.d/nginx". La opción "-f" (force) ejecuta la rotación inmediatamente, independientemente de la frecuencia configurada.

¿Cómo configurar logrotate para Nginx o Apache?

Para Nginx, crea un archivo en /etc/logrotate.d/nginx con la configuración apropiada, incluyendo un bloque postrotate para enviar señal USR1 a Nginx. Para Apache el proceso es similar, usando "apache2ctl graceful" en postrotate. Esta herramienta genera automáticamente configuraciones listas para usar para ambos servidores.