Introducción a Lorgotate
Logrotate es una utilidad del sistema diseñada para simplificar la administración de archivos de registro generados por servicios y aplicaciones. Permite la rotación automática, compresión y eliminación de logs antiguos, evitando así el consumo excesivo de espacio en disco. En sistemas Ubuntu, Logrotate suele estar preinstalado y configurado para gestionar los registros de paquetes del sistema como rsyslog.
Para verificar la instalación y versión de Logrotate, se puede ejecutar el siguiente comando:
logrotate --version
La documentación completa está disponible mediante la página del manual:
man logrotate
Estructura de configuración
La configuración de Logrotate se distribuye en dos ubicaciones principales:
- /etc/logrotate.conf: Contiene parámetros globales y utiliza directivas include para cargar configuraciones adicionales desde el directorio /etc/logrotate.d/.
- /etc/logrotate.d/: Directorio donde los paquetes de software y aplicaciones personalizadas colocan sus archivos de configuración para la rotación de registros.
Un ejemplo de configuración predeterminada puede incluir rotación semanal, compresión y retención de varios archivos de respaldo. Para examinar una configuración específica, como la del gestor de paquetes apt:
cat /etc/logrotate.d/apt
Las directivas comunes incluyen rotate (número de respaldos), compress (compresión con gzip), missingok (ignorar archiovs faltantes) y notifempty (evitar rotar archivos vacíos).
Creación de configuraciones personalizadas
Método integrado en el sistema
Para aplicaciones que se ejecutan como servicio del sistema, se recomienda agregar archivos de configuración en /etc/logrotate.d/. Por ejemplo, para una aplicación web con registros en /var/log/mi-app/:
sudo nano /etc/logrotate.d/mi-app
Contenido de ejemplo con directivas adaptadas:
/var/log/mi-app/*.log {
diario
missingok
rotar 15
comprimir
notifempty
crear 0640 www-data www-data
scriptcompartido
postrotar
systemctl reload mi-app
fin
}
Esta configuración implementa rotación diaria, creación de nuevos archivos con permisos específicos y recarga del servicio tras la rotación. La directiva scriptcompartido asegura que los scripts se ejecuten una sola vez por ejecución de Logrotate, incluso si coinciden múltiples archivos.
Para probar la configuración:
sudo logrotate /etc/logrotate.conf --debug
Configuración independiente para usuarios no privilegiados
Cuando se requiere rotación de registros para aplicaciones de usuario con frecuencia horaria, se puede crear una configuración externa al sistema global. Ejemplo para un usuario "analista":
nano ~/config/logrotate-personal.conf
Contenido:
/home/analista/registros/*.log {
horario
missingok
rotar 48
comprimir
crear
}
Para probar manualmente:
logrotate ~/config/logrotate-personal.conf --state ~/logrotate-estado --verbose
El archivo de estado rastrea las ejecuciones enteriores. La directiva --force permite forzar la rotación para pruebas.
Para automatización, se configura una tarea cron que ejecute Logrotate cada hora:
crontab -e
Agregar la línea:
15 * * * * /usr/sbin/logrotate ~/config/logrotate-personal.conf --state ~/logrotate-estado
Caso práctico: rotación diaria con eliminación automática
Escenario: Rotar registros en /var/log/servicio-analisis/ diariamente y eliminar archivos mayores a 30 días.
Crear archivo de configuración:
sudo nano /etc/logrotate.d/servicio-analisis
Configuración inicial:
/var/log/servicio-analisis/*.log {
diario
rotar 30
missingok
notifempty
copiartruncar
fechaprefijo
directorioviejo /var/log/servicio-analisis/archivados
postrotar
find /var/log/servicio-analisis/archivados -name "*.log" -type f -mtime +30 -exec rm -f {} \;
fin
}
Si se produce un error de permisos inseguros, se debe especificar el usuario y grupo mediante la directiva su:
/var/log/servicio-analisis/*.log {
su raiz raiz
diario
rotar 30
missingok
notifempty
copiartruncar
fechaprefijo
postrotar
find /var/log/servicio-analisis -name "*.log" -type f -mtime +30 -exec rm -f {} \;
fin
}
Prueba con rotación forzada:
sudo logrotate -f /etc/logrotate.d/servicio-analisis
Para automatización diaria, se verifica la configuración de cron y se reinicia el servicio si es necesario:
sudo systemctl restart cron
Los parámetros clave de Logrotate incluyen:
- compress/nocompress: Gestión de compresión con gzip.
- copiartruncar: Alternativa a mover archivos, que crea copias y trunca el original.
- create/modo propietario grupo: Control de permisos para archivos nuevos.
- directorioviejo: Ubicación alternativa para archivos rotados.
- pre/postrotar: Ejecución de comandos antes o después de la rotación.
- diario/semanal/mensual: Control de frecuencia.
- rotar cantidad: Número de respaldos a mantener.
- size tamaño: Rotación basada en tamaño del archivo.
El comando find en el script postrotar utiliza parámetros -mtime para filtrar archivos por antigüedad, donde +n significa mayor a n días, -n menor a n días, y n exactamente n días.