¿Alguna vez te has encontrado con un servidor lento o incluso caído, solo para descubrir que el disco estaba completamente lleno? Una de las causas más comunes es la acumulación excesiva de archivos de registro (logs). Afortunadamente, existe una herramienta poderosa y flexible llamada logrotate que te permite automatizar la gestión de estos logs y mantener tu sistema funcionando sin problemas. ¡Vamos a sumergirnos en el mundo de logrotate!
Logrotate es una utilidad de sistema diseñada para simplificar la administración de archivos de registro. Su función principal es rotar, comprimir, eliminar y enviar por correo electrónico los archivos de log. Esto evita que los archivos crezcan indefinidamente y consuman todo el espacio disponible en tu disco duro. Imagina tener un jardinero 🧑🌾 que se encarga de podar las plantas para que no invadan todo el jardín. Logrotate es ese jardinero para tus logs.
- Evita la saturación del disco: Al rotar los logs, evitas que un único archivo crezca sin control.
- Optimiza el rendimiento: Archivos de log más pequeños facilitan la búsqueda y el análisis.
- Cumple con políticas de retención: Puedes definir cuánto tiempo quieres conservar los logs.
- Automatización: Logrotate se ejecuta automáticamente, liberándote de tareas manuales.
La configuración de logrotate se realiza a través de archivos de configuración. El archivo de configuración principal es /etc/logrotate.conf
, y las configuraciones específicas para cada aplicación se suelen encontrar en el directorio /etc/logrotate.d/
. ¡Vamos a ver cómo funciona!
/etc/logrotate.conf
Este archivo define la configuración global de logrotate. Generalmente, no es necesario modificarlo, pero es útil conocer las opciones principales:
weekly
: Rota los logs semanalmente.rotate 4
: Conserva 4 rotaciones (4 semanas en este caso).create
: Crea un nuevo archivo de log después de la rotación.dateext
: Añade la fecha al nombre del archivo rotado.include /etc/logrotate.d
: Incluye los archivos de configuración del directorio/etc/logrotate.d
.
Aquí tienes un ejemplo de un archivo /etc/logrotate.conf
típico:
# see "man logrotate" for details
options {
missingok
notifempty
sharedscripts
}
weekly
rotate 4
create
dateext
include /etc/logrotate.d
Configuración Específica en /etc/logrotate.d/
Aquí es donde realmente personalizamos la rotación de logs para cada aplicación. Por ejemplo, vamos a crear un archivo para rotar los logs de Apache:

Crea un archivo llamado /etc/logrotate.d/apache2
con el siguiente contenido:
/var/log/apache2/*.log {
weekly
rotate 7
missingok
notifempty
dateext
compress
delaycompress
postrotate
/usr/sbin/apachectl graceful > /dev/null 2>/dev/null || true
endscript
}
Vamos a analizar las opciones:
/var/log/apache2/*.log
: Especifica los archivos de log que se van a rotar.weekly
: Rota los logs semanalmente.rotate 7
: Conserva 7 rotaciones.missingok
: No muestra errores si el archivo de log no existe.notifempty
: No rota el log si está vacío.dateext
: Añade la fecha al nombre del archivo rotado.compress
: Comprime los archivos rotados con gzip.delaycompress
: Comprime el archivo rotado anterior, en lugar del actual. Esto es útil para evitar problemas si la aplicación aún está escribiendo en el archivo.postrotate
yendscript
: Define un script que se ejecuta después de la rotación. En este caso, reiniciamos Apache para que utilice el nuevo archivo de log.
Antes de dejar que logrotate se ejecute automáticamente, es importante probar la configuración para asegurarte de que funciona correctamente. Puedes hacerlo con el siguiente comando:
logrotate -d /etc/logrotate.conf
El parámetro -d
(debug) hace que logrotate simule la rotación sin realizarla realmente. Revisa la salida para asegurarte de que no hay errores y que las acciones que se van a realizar son las correctas.
Para forzar la ejecución de logrotate, puedes usar el siguiente comando:
logrotate -f /etc/logrotate.conf
El parámetro -f
(force) fuerza la rotación, incluso si logrotate cree que no es necesario.

Logrotate ofrece muchas opciones avanzadas para personalizar la rotación de logs. Aquí te presentamos algunas de las más útiles:
size
: Rota el log cuando alcanza un tamaño específico (ej:size 100k
para rotar cuando el archivo alcanza 100 KB).maxage
: Especifica el número máximo de días que se deben conservar los archivos de log rotados.dateformat
: Permite personalizar el formato de la fecha en los nombres de los archivos rotados.mail
: Envía los archivos de log rotados por correo electrónico.firstaction
ylastaction
: Define scripts que se ejecutan antes y después de la rotación, respectivamente.
Por ejemplo, si quieres rotar un log diariamente y enviarlo por correo electrónico, puedes usar la siguiente configuración:
/var/log/mi_aplicacion.log {
daily
rotate 7
missingok
notifempty
dateext
mail mi_correo@example.com
mailfirst
}
En este ejemplo, mailfirst
indica que el archivo se envía por correo electrónico antes de ser eliminado.
A veces, logrotate puede presentar problemas. Aquí te dejamos algunas soluciones para los más comunes:
- Logrotate no se ejecuta: Asegúrate de que el cronjob de logrotate está habilitado. Normalmente, se encuentra en
/etc/cron.daily/logrotate
. - Los logs no se rotan: Verifica que la configuración en
/etc/logrotate.conf
y/etc/logrotate.d/
sea correcta. Utilizalogrotate -d
para depurar la configuración. - Errores en los scripts postrotate: Revisa los scripts para asegurarte de que no hay errores de sintaxis o permisos.
En resumen, logrotate es una herramienta esencial para cualquier administrador de sistemas. Te permite mantener tus archivos de log bajo control, evitar la saturación del disco y optimizar el rendimiento de tu sistema. ¡Empieza a usarlo hoy mismo y verás la diferencia! 🚀
Deja una respuesta