Académique Documents
Professionnel Documents
Culture Documents
06.02.2006
15:02
Uhr
Pgina
58
ADMINISTRACIN Logs
Trucos: Logrotate
fichero de registro tiene una entrada de login correcta para el buzn. O un cortafuegos podra desplegar un filtro de paquetes para bloquear automticamente una direccin IP siguiendo un ataque obvio. Si no se leen los ficheros de registros, an se les puede echar un vistazo. stos consumen ms y ms espacio en el disco duro o en la particin /var. El consumo gradual de espacio de disco, tarde o temprano har que el equipo caiga. El manejo de los ficheros de registro (evaluacin, archivado, eliminacin) es una tarea administrativa tradicional. Pero ahora que Linux ha empezado a conquistar los escritorios, es absurdo esperar que los usuarios manejen la administracin de los archivos de registro. Hace aos que se presentaron algunas herramientas totalmente automatizadas para ayudar con la tarea de manejar los ficheros de registros.
fichero de registro se ha cambiado. El proceso de escritura necesita cerrar cualquier fichero de registro que se est usando y reabrir estos ficheros, as se reciben las versiones actualizadas (en blanco) que pueden actualizarlos. Cuando la herramienta de gestin del fichero de registro central necesita encontrar qu procesos escribir en qu ficheros de registro. El hecho de que muchos servicios utilicen syslog hace que esto sea ms fcil de manejar, pero an hay paquetes (como Apache) que insisten en utilizar sus propios ficheros de registro por rendimiento u otras razones.
Configuracin Modular
Para establecer este mecanismo en un sistema Linux libremente configurable y extensible, muchos desarrolladores utilizan el paquete Logrotate. ste utiliza una configuracin modular como muchos otros
No Borre, Rote!
Un sistema Linux no borra los ficheros de registros, los rota. Primero renombra un fichero como XXX.log a XXX.log.0 (o algo parecido). Este paso es importante, ya que el programa de limpieza automtico no tiene forma de conocer si el proceso est actualmente accediendo al fichero de registro. Si un proceso tiene abierto el fichero de registro, posee un manejador de ficheros exactamente para ese fichero, y escribir al archivo independientemente de si otro proceso lo ha renombrado o lo ha suprimido. Tras renombrar el fichero, el protocolo de limpieza necesita volver a crear los ficheros de registros nuevos (en blanco) e indicarle al proceso correspondiente que el
58
Nmero 15
WWW.LINUX-MAGAZINE.ES
058-059_Logs
06.02.2006
15:02
Uhr
Pgina
59
Logs ADMINISTRACIN
paquetes centralizados. Las variables del ncleo se establecen mediante un fichero de configuracin central. El fichero realiza una anotacin de la frecuencia en la que Logrotate debe rotar el fichero de registro, qu tamao deben tener los registros antiguos, si se comprimen estos ficheros y as continuamente. El fichero de configuracin central se llama /etc/logrotate.conf. Adems, cada paquete software puede aadir una entrada al fichero de configuracin de Logrotate durante la instalacin. Por supuesto, no se debera escribir en el fichero de configuracin central. Esto podra conducir a inconsistencias; en vez de esto, Logrotate utiliza un directorio de configuracin denominado /etc/logrotate.d. Los paquetes pueden almacenar sus propios mini ficheros de configuracin Logrotate bajo su nombre de paquete. Estos ficheros indican lo que hay hacer con el fichero de registro rotado. La entrada de configuracin para un servidor proxy puede ser, por ejemplo, /etc/logrotate.d/ squid.
Un Ejemplo
El Listado 1 proporciona un ejemplo de un /etc/logrotate.conf mnimo. Basndose en esta configuracin, Logrotate rotara los ficheros de registros semanalmente y proporcionara un total de cuatro versiones previas. Tras cada rotacin, la herramienta crear un nuevo fichero de registro y comprimir las versiones previas semanales. El Listado 1 especifica el fichero de registro de Logrotate a manejar, /var/log/ wtmp. La aplicacin tan slo crea este fichero una vez al mes, manejando los permisos para el fichero de root y el grupo utmp. La palabra reservada rotate 1 en la lnea 11 le indica a Logrotate que guarde tan slo la versin anterior. logrotate.conf no especifica como manejar los otros ficheros; en cambio estos se manejan por trocitos de configuracin del /etc/logrotate.d, que tienen la directiva habilitada en la lnea 14. Ignora cualquier fichero creado mediante editores, ficheros de versiones de sistemas de control, trozos dejados por gestores de paquetes (por ejemplo, *.rpmsave o *.dpkg-old) y ficheros con extensin .disabled.
los ficheros de registro. Apache viene configurado para guardar los ficheros de registro bajo /var/log/apache2. La configuracin por defecto del Listado 1, se aplica a todos los ficheros en /var/log/ apache2; primero: Logrotate rota los ficheros semanalmente, comprime los ficheros de la semana y crea un fichero nuevo por cada fichero que rota. La lnea 5 del Listado 2 asigna privilegios de acceso especficos a los registros nuevos y vacos para impedir que los usuarios normales los visualicen. Una suposicin que hace el ejemplo es que los registros del servidor web son ms importantes para las operaciones del sistema y para la facturacin. Se necesita que el sistema mantenga los registros de un ao completo, creando 52 generaciones, a una tasa de una generacin por semana. Si Apache falla al ejecutarse por alguna razn desconocida, lo que conducira a un registro perdido, el programa no lo rotar como se estipula con la palabra reservada notifempty. El Listado 2 tambin contiene instrucciones sobre cmo hacer que Apache conozca el momento en el que se van a rotar los ficheros. El mensaje se enva despus de cada evento, como se indica con la palabra reservada postrotate (la palabra reservada para un mensaje anterior a la rotacin es prerotate). Dicha palabra va seguida de unas cuantas lneas del script, que se cierra con la palabra reservada endscript. Las lneas de la 8 a la 10 dicen: si Apache se est ejecutando (es decir, si el fichero PID existe) la correspondencia en el script Init se encargar de relanzarlo. La palabra reservada sharedscript de la lnea 6 le indica a Logrotate que llame a este script de informacin una nica vez, incluso cuando se rotan mltiples ficheros de registro. Ejecuta una rotacin una vez que se ha completado para todos los ficheros de registro.
cin relevante y crtica, escribindola en el fichero ipfilter-high.log. El Listado 3 tiene que tratar estos dos ficheros de forma bastante diferente. Rota ipfilter-bulk.log si el fichero llega a un tamao de 20 Mbytes, pero normalmente no ms de una vez al da. Logrotate comprime los ficheros de registros antiguos usando bzip2. El siguiente paso es notificar al servicio de los cambios del fichero; para ello se usa la directiva postrotate en el script Init apropiado, como en el ejemplo anterior de Apache. ipfilter-high.log requiere un tipo de tratamiento diferente. Como podra contener informacin crtica en el tiempo, logrotate rota este fichero una vez cada da y, adems, enva un correo al administrador. Le proporciona bastantes avisos y tiempo suficiente para hacerse cargo de los registros. logrotate normalmente atiende a los ficheros de registros ms antiguos, pero la directiva mailfirst le indica que enve el fichero actual tan pronto como termine la rotacin. Los datos crticos simplemente no se descartan tras unas cuantas semanas, sino que se mantienen por razones forenses, en nuestro caso, 730 das, o dos aos. Para impedir que los ficheros de registros antiguos se acumulen en el directorio /var/ log, logrotate los mueve a un directorio I separado en /var/log/ipfilter-old.d.
Sofisticado
La configuracin en los Listados 1 y 3 proporciona ejemplos de cmo configurar los servicios estndar en las distribuciones ms comunes de Linux. Pero logrotate dispone de ms trucos: el Listado 3 configura un filtro de paquetes, por ejemplo. Esta configuracin supone que los registros del filtro de paquetes se almacenarn en ipfilterbulk.log. Los ficheros podran ser enormes en un servidor tpico y su tamao impedira una evaluacin manual. Un script (que no se muestra aqu por razones de espacio) analizar el fichero en busca de informa-
WWW.LINUX-MAGAZINE.ES
Nmero 15
59