Translate

martes, febrero 17, 2015

Gestionando logs de terceras aplicaciones en GNU/Linux

Muchas veces, los logs de determinadas aplicaciones o servidores de aplicaciones crecen sin control, para este caso voy a realizar un rotado de los logs creados por el tomcat de alfresco (catalina.out), me interesa que, diariamente rote dicho fichero con fecha y lo comprima, posteriormente los logs de 1 semana de antigüedad serán eliminados.


En el caso del gestor documental Alfresco existen dos logs importantes:
catalina.out (log de tomcat) y alfresco.log (log de la pp WAR, alfresco), en mi instalación están situados en la siguiente carpeta:

/opt/alfresco-4.1.1.27/tomcat/logs/


Preparamos el software "logrotate", dicho software está incluido en la mayoria de distros linux, la mía es una Red Hat Enterprise Linux, supongo que todo es aplicable al menos a Centos y fedora:

1-Editamos el fichero de configuración de logrotate:

 # vim /etc/logrotate.conf

weekly
 # rotar logs semanalmente
rotate 1
 # crear un nuevo fichero para el log 
create
# Usar fecha con subfijo del rotado
dateext
# Para  que los logs se roten comprimidos
compress
# Directorio en el cual incluiremos los ficheros de configuracion de cada servicio para rotacion de logs
include /etc/logrotate.d

2-Creamos el fichero /etc/logrotate.d/alfresco:

/opt/alfresco-4.1.1.27/tomcat/logs/alfresco.log.????-??-?? {
 daily
 nocreate
 rotate 7
 compress
 missingok

}

Con estos dos pasos ya tenemos preparado el rotado de uno de los logs (alfresco.log) para 1 semana, ahora hay que pasar por preparar el crontab para que se ejecute todo de una manera programada:

3-Ejecutamos crontab en modo edición:
#crontab -e

#Ejecuto tareas de ROTADO DE Logs -alfresco -t odos los dias a las 23:55
55 23  * * *  su -l root -c '/usr/sbin/logrotate /etc/logrotate.conf  -f'

4-Podemos decirle a crontab que "busque" logs de cierta antiguedad para que los elimine y no deje basura, para este caso, buscará ficheros de mas de 30 dias y los eliminará ala 1:00 de la mañana:

#Borramos todos los logs que tienen mas de 30 dias todos los dias a las 1:00
00 01  * * *  su -l root -c '/usr/bin/find /opt/alfresco-4.1.1.27/tomcat/logs/*.gz -mtime +30 -type f -exec rm -f  \{\} \;'


Guardamos con control +x y ya tenemos el rotado de log preparado.


Nota: para alfresco haymas log (share.log, host-anager.log, etc..) hay que hacer un fichero de rotado en /etc/logrotate.d/ para cada fichero.








No hay comentarios: