twitter
    Sigueme en el Twitter :-)

17 mayo 2011

Configurando Logrotate en CentOS

Antes que nada, lanzo la pregunta, que es un log??? muchos deben saberlo, pero nunca esta de más una pequenha "definición".
Un log es un registro de eventos producidos durante un periodo de tiempo concreto. El servidor web apache almacena en distintos logs (ficheros de registros) la actividad de nuestra aplicación (accesos y errores) de los distintos sitios web que tengamos configurados....
Entonces,para evitar que el tamaño de los logs crezca de forma incontrolada se opta por rotarlos, en caso de no hacerlo podremos quedarnos rápidamente sin espacio en disco.(Algo muy común en los servers que reviso).
Como recomendación, la información recopilada en los ficheros log se debe conservar al menos durante 1 año por eventuales necesidades legales, de este modo, además de rotarlos se opta habitualmente por comprimir logs.(para que no ocupen espacio en disco).
A continuación detallaré como rotar logs para algunos servicios como: apache, lighty, samba, squid, etc. configurando logrotate pare desempeñar esta función.
1.- Nos dirigimos a /etc/logrotate.d/, aquí encontramos ciertos ficheros para ciertos servicios en producción, a su vez podemos agregar nuevos ficheros para generar "rotación de logs específicos".
2.- Tomemos como ejm. http:
/var/log/httpd/*log {
weekly #período de rotación del log: puede ser diaria,semanal,mensual,anual
rotate 30 #mantener las rotaciones 30 días
missingok #Si da error en fichero pasa al siguiente que no de error
notifempty #No hace ninguna rotación si el archivo esta vacío
sharedscripts #Ejecuta cualquier prerotate o postrotate en secuencia de comandos para cada archivo de registro individual.
delaycompress #No comprimir archivos del día anterior
compress # Comprimir los logs a formato GZ (automatico)
copytruncate #copia el archivo original de log y lo pone a 0
size=+150M #Tamanho max. del log
postrotate #Sirve para ejecutar algún tipo de servicio
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
3.- De esta manera podemos jugar con los parámetros para ligthy, squid, samba, etc.
4.- Para ejecutar logrotate, escribimos en consola: logrotate /etc/logrotate.conf -f
5.- Como recomendación podemos crear en crontab una tarea para que lo ejecute:
0 24 * * * /usr/sbin/logrotate /etc/logrotate.conf > /dev/null 2>&1 Espero que puedan sacarle provecho a sus logs y claro al espacio en su disco tambien, jejeje, saludos

4 comentarios:

courier dijo...

muy buen aporte

hosting dijo...

hola, he estado visitando tu pagina y tienes contenido muy interesante, sigue posteando asi, me encantará volver, saludos!

peru hosting web dijo...

excelente dato

Anónimo dijo...

el sharedscripts hace todo lo contrario, evita que el pre y post rotate se ejecuten luego de rotar cada log.