En cualquier sistema operativo que se precie es esencial tener un buen sistema de log. Es imprescindible, como diario de abordo, en medio de la tormenta, para revisar toda la actividad, ya sea de hace un año o un día. Dicho sistema, si no está bien configurado, puede crearnos más de un dolor de cabeza, como por ejemplo el llenado del sistema de ficheros o que cuando busquemos un dato, no se encuentre. Aquí es donde entra en acción logrotate, una herramienta que nos permitirá configurar, entre otras cosas, el rotado, la compresión o los correos de envío de logs del sistema.
Cuéntame un poco más
Antes de entrar en su funcionamiento y en casos prácticos, veamos algo más sobre logrotate. Se trata de una herramienta para administrar de manera fácil sistemas que generan un gran número de archivos de registro. Por normal general en sistemas domésticos no será necesario utilizarlo, aunque siempre viene bien conocerlo. Su principal función es evitar que los ficheros de log de los diferentes servicios, ya que sea web, correo, ftp, etcétera, ocupen una gran cantidad de espacio en disco o creen ficheros de gran tamaño.
Su fichero de configuración es /etc/logrotate.conf . Modificando sus parámetros indicaremos a logrotate como ha de funcionar. Por normal general en un sistema operativo con Debian, que no ha de distar mucho del resto, veremos la siguiente información:
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp, or btmp -- we'll rotate them here /var/log/wtmp { missingok monthly create 0664 root utmp rotate 1 } /var/log/btmp { missingok monthly create 0660 root utmp rotate 1 } # system-specific logs may be configured here
Tal y como indica al final del fichero en la carpeta /etc/logrotate.d, tenemos los ficheros de configuración para la rotación de los registros de servicios.
En nuestro caso:
root@DebianTest:/etc/logrotate.d# pwd /etc/logrotate.d root@DebianTest:/etc/logrotate.d# ls -la total 32 drwxr-xr-x 2 root root 4096 oct 9 01:00 . drwxr-xr-x 88 root root 4096 feb 8 20:21 .. -rw-r--r-- 1 root root 173 mar 12 2016 apt -rw-r--r-- 1 root root 79 nov 8 2014 aptitude -rw-r--r-- 1 root root 232 may 3 2016 dpkg -rw-r--r-- 1 root root 146 jul 25 2016 exim4-base -rw-r--r-- 1 root root 126 jul 25 2016 exim4-paniclog -rw-r--r-- 1 root root 515 dic 19 2015 rsyslog
A modo de ejemplo escogemos el fichero de configuración del servicio de paquetería ‘apt’
/var/log/apt/term.log { rotate 12 monthly compress missingok notifempty } /var/log/apt/history.log { rotate 12 monthly compress missingok notifempty }
En la primera línea vemos la ubicación del fichero de logs, esto es, /var/log/apt/term.log. Si vamos línea por línea, en la primera vemos el fichero y ubicación de log. Dentro de los corchetes la primera línea es el número de versiones. En la segunda indicamos que es mensualmente. A continuación que los ficheros de log que guarde estarán comprimidos, generalmente con formato tar.gz El parámetro ‘missingok’ indica, simplificando, que el sistema no se «queja» si el archivo de registro no existe. El último indica que no se procede al rotado si el fichero está vacío.
Para más detalle aquí os dejo un detalle con todas las opciones:
- compress – Indica que comprimirá todos las versiones, menos la que está en funcionamiento.
- daily, weekly, monthly – Rotará los archivos de registro en la programación especificada.
- delaycompress – Comprímeme todas las versiones, menos la actual y la siguiente más reciente.
- endscript – Marca el final de un prerotate o postrotate script.
- errors «emailaddr «- Notifica por correo los errores a la dirección especificada.
- missingok – El sistema no se queja si el fichero no existe.
- notifyempty – No se procede al rotado si el fichero está vacío.
- olddir «dir» – Especifica la ubicación donde se guardarán las versiones antiguas de log.
- postrotate – Introduce a un script que se ejecutará después de que el log haya rotado.
- prerotate – Introduce a un script que se ejecutará antes de cualquier cambio haya ocurrido.
- rotate «n» – Número de versiones del log en el esquema de la rotación.
- sharedscripts – Ejecuta un script sólo una vez para todo el grupo de registro.
- size «logsize» – Se procede al rotado si el tamaño del fichero de log supera un tamaño. Por ejemplo size > tamaño (p.e. 100K, 4M)
Cabe decir, respecto al tema del envío de errores por correo, que nuestro sistema debe tener un servicio de envío de correo, como por ejemplo postfix.
Por defecto la herramienta se ejecuta vía cron, una vez al día.
Para ampliar información os recomiendo consultar la página de man, desde la consola de comandos. En Ubuntu existe una herramienta llamada «savelog«, que busca simplificar las tareas de configuración. Os recomiendo también el libro «UNIX AND LINUX SYSTEM ADMINISTRATION HANDBOOK«, un manual súper completo, que además incluye ilustraciones súper molonas.
Esto es todo, espero que os haya parecido interesante la entrada. Podéis dejar vuestras dudas en los comentarios. Si además os gustaría que el siguiente artículo de administración de sistemas, fuese sobre algún tema específico, ídem.
Derechos de la imagen de portada | Flickr
Esto también está chulo !! Buen post. Lo dejo abierto porque estos días tengo que hacer una cosa relacionada y seguro que me es de utilidad 🙂