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.
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
}
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.
Comentarios