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.
  • rotaten” – 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.
  • sizelogsize” – 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

avatar
3 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
david ochobitsGaspar FernándezInforme 7 días (6ª semana de 2017)Rotado de logs en GNU Linux con logrotate | PlanetaLibre Recent comment authors

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

  Subscribe  
más nuevo más antiguo más votado
Notificarme de
trackback

[…] Visitar la fuente original […]

trackback

[…] Rotado de logs en GNU Linux con logrotate […]

Gaspar Fernández
Lector

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 🙂