7.6.4.- Rotar los ficheros del registro

ficherosLos ficheros del registro están pensados para conservar la información sobre las actividades del sistema durante un periodo de tiempo razonable, pero los demonios del sistema no proporcionan medios para controlar el tamaño de los ficheros del registro. Si no se revisan, los ficheros del registro pueden crecer hasta consumir todo el espacio disponible en la partición donde se encuentran. Para evitar este problema, Linux emplea herramientas de rotación que renombran y, opcionalmente, comprimen los ficheros del registro borrando los antiguos y obligando al sistema de registro a utilizar nuevos ficheros.

La herramienta más común es un paquete llamado logrotate. Se le suele llamar a este programa de manera regular a través de cron. El programa logrotate consulta un fichero de configuración llamado /etc/logrotate.conf, que incluye varios ajustes por defecto y, normalmente, hace referencia a los ficheros de /etc/logrotate.d para controlar ficheros específicos del registro.

logrotate_config

Un típico fichero /etc/logrotate.conf incluye varias líneas de comentarios, que comienzan con la almohadilla (#), así como varias opciones, como se muestra en la figura de arriba. Por ejemplo la línea weekly define un intervalo semanal de rotación por defecto. Si ve alguna opción que no entienda, consulte la página man de logrotate.

tux_maestro_derComo la rotación de los ficheros del registro mediante tareas cron se suele efectuar por las noches, ésta no tendrá lugar en un ordenador que se apaga habitualmente. Las estaciones Linux se deben de dejar funcionando toda la noche por regla general o tomar medidas oportunas para asegurar que la rotación tendrá lugar a pesar de los apagados rutinarios. La utilidad anacron, que veremos en breve, es particularmente apropiada para esta tarea.

logrotate_config_2

logrotate_config_3 logrotate_config_4Veamos las definiciones para el fichero /var/log/wtmp:

logrotate_config_5

logrotate_config_6

logrotate_config_6

La mayoría de ellos utilizaran en su lugar la opción copytruncate, que indica a logrotate que copie el antiguo fichero de registro con un nuevo nombre y que borre todos los datos del fichero original.

Normalmente, a los ficheros del registro rotados se les añaden números, como messages.1, que indica la primera rotación del fichero messages del registro. Si se utiliza la opción dateext, el fichero de registro rotado obtendrá un código en vez de un número, como messages-20161220 para una rotación realizada el 20 de Diciembre del 2016.

logrotate_config_8

Las opciones daily (día), weekly (semana)y monthly (mes) le indican al sistema  que rote los ficheros de registro en los intervalos especificados (día, semana y mes). Estas opciones no se utilizan siempre; algunas configuraciones utilizan un umbral de tamaño en lugar de un umbral temporal cuando rotan los ficheros de registro.

La palabra clave size define el tamaño máximo de un fichero de registro. Toma como argumento un tamaño en bytes (añadiendo k o M para indicar un tamaño en kilobytes o megabytes, respectivamente). Por ejemplo, size 100k hace que el fichero rote cuando alcance un tamaño de 100 Kb.

logrotate_config_9

Por ejemplo, si definimos rotate 2 para el fichero /var/log/messages, logrotate mantendrá /var/log/messages.1 y /var/log/messages.2, además del fichero activo /var/log/messages. Cuando se haya rotado el fichero, entonces se borrará /var/log/messages.2, /var/log/messages.1  se renombrará como /var/log/messages.2, /var/log/messages se convertirá en /var/log/messages.1 y se creará un nuevo /var/log/messages.

 Para las opciones de correo se utiliza mail correo, logrotate enviará por correo electrónico un fichero de registro a la dirección especificada en correo cuando éste rote para desaparecer. Si usamos nomail, el sistema no enviará ningún correo y el registro se eliminará silenciosamente.

Las palabras clave prerotate y postrotate inician sendas series de líneas que se tratan como  scripts a ejecutar justo antes o justo después de la rotación del fichero de registro respectivamente. En ambos casos, estos scripts terminan con la palabra clave endscript. Estos comandos se utilizan, frecuentemente, para hacer que syslogd empiece a utilizar un nuevo fichero de registro en un servidor.

En la mayoría de los casos, los servidores y demás programas que registran datos lo hacen a través del demonio de registro del sistema o vienen con un fichero de configuración que va en /etc/logrotate.d para controlar los ficheros de registro del servidor.

logrotate_ejemplo_samba

Fichero de configuración de Samba dentro del directorio logrotate.d.

Estos ficheros suelen hacer un trabajo razonable, pero conviene revisarlos ya que podríamos encontrarnos que, para nosotros, nuestro sistema está configurado para guardar demasiados, o muy pocos, ficheros de registros antiguos, en cuyo caso es pertinente ajustar la opción rotate.

 También deberíamos revisar /var/log y sus subdirectorios de vez en cuando si observamos un aumento acumulativo de ficheros, o si los ficheros crecen hasta un tamaño inaceptable, puede que desee revisar los ficheros de configuración de logrotate correspondientes.

var_log_ejemplo1

 Si no existe algún fichero en particular, créelo, usando un fichero existente a modo de plantilla modificándolo para crear el nuevo fichero. Debemos prestar especial atención a los scripts prerotate y postrotate; puede que necesitemos consultar la documentación del programa que crea el fichero de registro para saber cómo obligarle a empezar a utilizar el nuevo fichero de registro.

Mayormente, en todos los casos, los ficheros de registro permanecen en el ordenador que los registró. Sin embargo, a veces, se aconseja copiar estos ficheros fuera del sitio. Un modo fácil de hacerlo es reconfigurar el demonio de registro para que envié los mensajes que desea archivar a otro sistema. Otra posibilidad es crear una tarea cron, como veremos más adelante, para copiar ficheros en otro sistema utilizando un recurso compartido de red, ssh u otra herramienta de red. Tambien podemos copiar los ficheros de registro manualmente en discos extraibles o memorias USB. Es aconsejable guardar los ficheros de registro durante unas cuantas semanas por si se pasa por alto algún problema, nos resultará útiles las copias. Sin embargo por razones de trabajo o legales, es preferible que las copias las tengan los administradores o abogados.