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.
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.
No debemos olvidar que 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.
A continuación detallaré como rotar logs de nuestro servidor web apache configurando logrotate pare desempeñar esta función. Los ejemplos mostrados han sido testeados en la distribución Debian de Linux, aunque en las distribuciones más comunes su configuración es similar.
Instalación logrotate - rotar logs de apache con logrotate
La herramienta logrotate ya se encuentra preconfigurada e instalada en la distribución Debian de Linux, de este modo en la mayoría de los casos nos podríamos saltar este paso.
Para instalar el logrotate usaremos la herramienta apt-get (sistema de gestión de paquetes de software):
apt-get update apt-get install logrotate
Una vez finalizada la instalación de logrotate comprobamos que disponemos de todos los ficheros y carpetas necesarias para su correcto funcionamiento:
/var/lib/logrotate/ /etc/logrotate.d/ /usr/sbin/logrotate /etc/logrotate.conf
Configurar logrotate - rotar logs de apache con logrotate
Para configurar nuestro logrotate actualizaremos el fichero logrotate.conf:
vi /etc/logrotate.conf
El contenido de nuestro logrotate.conf será similar al mostrado posteriormente:
# ejecutar "man logrotate" para más información
# rotar log semanalmente
weekly
# mantener logs durante 4 semanas
rotate 4
# rotar y crear nuevo log aunque esté vació el anterior
create
# descomentar si quieres comprimir logs
#compress
# ubicación de paquetes para el rotado de logs
include /etc/logrotate.d
# los logs wtmp o btmp los haremos rotar aquí
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
# los logs del sistema se pueden rotar aquí
Crearemos el fichero para rotar logs de apache con logrotate en la distribución Debian de Linux:
vi /etc/logrotate.d/apache2
Y le añadiremos el siguiente contenido al fichero creado anteriormente:
# ubicación de los logs del servidor web apache
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if [ -f /var/run/apache2.pid ]; then
/etc/init.d/apache2 restart > /dev/null
fi
endscript
}
# logs de acceso y errores de los sitios web
/var/www/logs/*.log {
weekly
missingok
rotate 52
compress
notifempty
create 640 root root
sharedscripts
postrotate
if [ -f /var/run/apache2.pid ]; then
/etc/init.d/apache2 restart > /dev/null
fi
endscript
}
Ejecutar logrotate - rotar logs de apache con logrotate
Posteriormente comprobaremos manualmente el correcto funcionamiento de logrotate usando el siguiente comando:
/usr/sbin/logrotate /etc/logrotate.conf -f
Además, logrotate debe ir configurado en un cron para que se ejecute periódicamente, esto podremos hacerlo gracias a la herramienta crontab (ejecuta procesos o scripts a intervalos regulares):
crontab -e
Y agregamos en nuestro archivo crontab el siguiente contenido:
# Rotar logs de apache con logrotate a las 3 am 0 03 * * * root /usr/sbin/logrotate /etc/logrotate.conf > /dev/null 2>&1
Finalmente reiniciaremos el proceso cron para que los cambios surtan efecto:
/etc/init.d/cron restart
No debemos olvidar rotar logs de apache posteriormente de actualizar nuestro sistema de estadísticas web (por ejemplo a la 1 am), ya que de no hacerlo perderíamos información.
El rotado de logs descrito anteriormente lo podemos aplicar a cualquier otra herramienta del sistema. De este modo, espero que este artículo os sea de gran utilidad no sólo para este caso sino para muchos otros.
Cualquier duda que tengáis podemos tratarla a través de los comentarios.
Tras escribir mi anterior artículo
El blog Alejandro Arco ha sido premiado hoy, día 12 de enero del 2009 como el mejor blog del día.
A finales del mes de diciembre e inmersos en las fiestas navideñas, los usuarios hemos visto como Google ha vuelto a actualizar el PR (PageRank) en periodo vacacional de nuestros sitios web.
Últimos Comentarios