Las distribuciones de Linux son ideales para cualquier tipo de entorno corporativo gracias a su capacidad de adaptación a nuevas funciones y nuevos roles y, lo mejor de todo, de forma gratuita gracias al código libre.
Contamos con miles de aplicaciones o utilidades diseñadas para un control centralizado sobre todos los aspectos del sistema y de este modo, como administradores o personal IT, saber con certeza cuando se produce una falla y saber cómo solucionarla.
Dentro de este amplio abanico de posibilidades encontramos Logrotate la cual es una utilidad propia de la distribución y su función es la rotación y compresión de los archivos de registro.
Esta tarea es importante ya que, al no tomar acción alguna sobre estos archivos, el espacio en el disco duro puede verse afectado conduciendo a otro tipo de errores generales.
Para este caso usaremos Ubuntu 17.10 y Logrotate viene instalada por defecto y ya está configurada para administrar las tareas de rotación de registros de todos los paquetes instalados, incluido rsyslog, el procesador de registro del sistema predeterminado.
A continuación, veremos cómo instalar y usar esta valiosa utilidad.
1. Identificar la versión de Logrotate instalada Linux
El primer paso a dar consiste en conocer en detalle cual es la versión que tenemos de Logrotate en, este caso, Ubuntu 17.10. Para ello ejecutamos el siguiente comando:
logrotate –versionEl resultado será el siguiente:
Si Logrotate no está instalado, obtendremos un error. Podemos instalar la herramienta haciendo uso del administrador de paquetes de la distribución Linux usada.
Si Logrotate está instalado pero el número de versión es significativamente diferente, es posible que tengamos problemas con algunas de las configuraciones de la utilidad. Podemos consultar la documentación de la versión específica de Logrotate directamente en su página man:
man logrotatePodremos ver la estructura de configuración predeterminada de Logrotate en la distro de Linux:
2. Configuración de Logrotate Linux
La información de configuración de Logrotate generalmente se puede encontrar en dos lugares en el caso de Ubuntu:
Por defecto, logrotate.conf configurará rotaciones de registros semanales (weekly), con archivos de registro propiedad del usuario raíz y el grupo syslog (su root syslog), con cuatro archivos de registro que se conservan (rotate 4) y se crean nuevos archivos de registro vacíos. creado después de que el actual se gira (create).
Podremos acceder al archivo de configuración de Logrotate de un paquete en /etc/logrotate.d usando la utilidad cat:
cat /etc/logrotate.d/apt
Este archivo contiene bloques de configuración para dos archivos de registro diferentes en el directorio /var/log/apt/: term.log e history.log. Ambos cuentan con las mismas opciones.
Cualquier opción que no esté configurada en estos bloques de configuración heredará los valores predeterminados o aquellos establecidos en /etc/logrotate.conf. Las opciones configuradas para los registros de apt son:
Hay muchas más opciones de configuración disponibles.
3. Configuración de un servicio Logrotate Linux y agregar configuración a /etc/logrotate.d/
A continuación, configuraremos un archivo de configuración para manejar los registros de un servicio que crearemos.
Para administrar los archivos de registro para aplicaciones fuera de los servicios del sistema preempaquetados y preconfigurados, contamos con dos opciones:
- Crear un nuevo archivo de configuración Logrotate y ubicarlo en la ruta /etc/logrotate.d/. Este se ejecutará diariamente como el usuario root junto con todos los demás trabajos estándar de Logrotate.
- Crear un nuevo archivo de configuración y ejecutarlo fuera de la configuración de Logrotate predeterminada de Ubuntu. Esto solo es necesario si debemos ejecutar Logrotate como usuario no root, o si desea rotar registros con más frecuencia que a diario (una configuración por hora en /etc/logrotate.d/ no sería efectiva, porque la configuración de Logrotate del sistema solo se ejecuta una vez al día).
En este caso deseamos configurar la rotación de registros para un servidor web que pone un access.log y error.log en la ruta /var/log/solvetic-app/. Se ejecutará como el usuario y grupo de www-data.
Para agregar alguna configuración a /etc/logrotate.d/, primero debemos abrir un nuevo archivo de la siguiente forma:
sudo nano /etc/logrotate.d/solvetic-appallí agregaremos las siguientes líneas:
/var/log/solvetic-app/*.log { daily missingok rotate 14 compress notifempty create 0640 www-data www-data sharedscripts postrotate systemctl reload solvetic-app endscript}
Podemos guardar los cambios usando la combinación de teclas Ctrl + O y salimos del editor usando Ctrl + X.
Algunas de las nuevas directivas de configuración en este archivo son:
Debemos tener en cuenta las ejecuciones postrotate antes de que se comprueben los registros. La compresión podría llevar mucho tiempo y el software debería cambiar al nuevo archivo de registro de inmediato. Para las tareas que deben ejecutarse después de comprimir los registros, use el bloque lastaction en su lugar.
Después de personalizar la configuración que más se ajuste a nuestras necesidades y hayan sido guardadas en /etc/logrotate.d, podemos comprobarla haciendo ejecutando la siguiente línea.
sudo logrotate /etc/logrotate.conf –debugEsto llama a logrotate, señala al archivo de configuración estándar y activa el modo de depuración:
Se imprimirá información sobre qué archivos de registro estamos manejando Logrotate y qué está ejecutando sobre ellos. Si todo se ve bien, hemos terminado. El trabajo estándar de Logrotate se ejecutará una vez al día e incluirá su nueva configuración.
4. Cómo crear una configuración de registro independiente Lograte Linux
Primero, crearemos un archivo de configuración en nuestro directorio de inicio. Podemos abrirlo con un editor de texto:
sudo nano /home/solvetic/logrotate.confEn el nuevo archivo pegaremos lo siguiente:
/home/solvetic/logs/*.log { hourly missingok rotate 24 compress create}
Podemos guardar los cambios y salir del archivo.
Esta configuración rotará los archivos cada hora, comprimiendo y conservando veinticuatro registros antiguos y creando un nuevo archivo de registro para reemplazar el archivo rotado. Para probar que funciona de la forma correcta, podemos crear un archivo de registro ejecutando las siguientes líneas:
cd ~sudo mkdir logssudo touch logs/access.log
Ahora que tenemos un archivo de registro en blanco en el lugar correcto, ejecutaremos el comando logrotate.
Ejecutaremos lo siguiente:
logrotate /home/solvetic/logrotate.conf --state /home/solvetic/logrotate-state –verbose
El parámetro --verbose imprimirá información detallada sobre lo que estamos ejecutando con Logrotate. En este caso, veremos que no rotó nada. Esta es la primera vez que Logrotate ve este archivo de registro, y como sabemos, el archivo tiene cero horas y no debe girarse.
Si vemos el archivo de estado, veremos que Logrotate registró cierta información sobre la ejecución que efectuamos:
cat /home/solvetic/logrotate-stateVeremos lo siguiente:
Logrotate anotó los registros que analizo y cuándo los consideró por última vez para la rotación. Si ejecutamos este mismo comando una hora más tarde, el registro se rotará como es el objetivo. Si desea forzar que Logrotate gire el archivo de registro cuando de otro modo no debería hacerlo, podemos usar el indicador --force:
sudo logrotate /home/solvetic/logrotate.conf --state /home/solvetic/logrotate-state --verbose –force
5. Creación de una tarea programada Lograte Linux
Finalmente, debemos configurar un trabajo cron para ejecutar Logrotate cada hora. Para ello abrimos el crontab de nuestro usuario ejecutando lo siguiente:
crontab -eEn el archivo abierto añadiremos la siguiente línea:
14 * * * * /usr/sbin/logrotate /home/solvetic/logrotate.conf --state /home/solvetic/logrotate-state
Esta tarea se ejecutará en el minuto 14 de cada hora, todos los días. Funciona básicamente con el mismo comando logrotate que ejecutamos anteriormente, aunque expandimos logrotate a la ruta completa de /usr/sbin/logrotate. Podemos guardar el archivo usando la combinación de teclas Ctrl + O y salir del mismo usando Ctrl + X.
Así hemos visto como Logrotate es una utilidad simple pero eficaz a la hora de la gestión y control de registros en cualquier distribución de Linux.