Para poder configurar Logrotate en un servidor Linux/Unix después de generar las estadísticas, si uno de los (tantos) problemas que podemos tener a la hora de gestionar nuestro servidor, es que si no controlamos el tamaño de nuestros ficheros de registros (errores y accesos por ejemplo) de nuestros alojamientos web, puede ser un problema.
Para solucionarlo he creado este tutorial con los pasos a seguir y que a mí me ha funcionado. Como todo en la informática habrá muchas formas y colores para conseguir lo mismo y/o mejorar esta.
Lo importante a tener en cuenta, es que tenemos que hacer esta rotación de registros DESPUÉS de haber generado las estadísticas, ya que sino no nos sirve de nada.
Bueno, vamos al grano:
1-. Instalar el programa logrotate:
apt-get install logrotate
2-. Crear o comprobar que tenemos las carpetas y ficheros necesarios:
mkdir -p /var/lib/logrotate/
touch /var/lib/logrotate/status
mkdir -p /etc/logrotate.d/
3-. Crear el fichero logrotate.conf:
vi /etc/logrotate.conf
Copiar el siguiente contenido el fichero logrotate.conf que antes hemos creado:
# ejecutar “man logrotate” para más información
weekly
rotate 4
create
include /etc/logrotate.d
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
4-. Crear el fichero de rotación (en mi caso para los logs de acceso y errores):
vi /etc/logrotate.d/rotar_logs
Copiar el siguiente contenido en dicho fichero:
/www/*/logs/access_log {
daily
rotate 90
copytruncate
compress
notifempty
missingok
}
/www/*/logs/error_log {
daily
rotate 90
copytruncate
compress
notifempty
missingok
}
La ruta dependerá del servidor donde nos encontramos y el * lo que indica es que en todas las carpetas de dicha ruta las tenga en cuenta. Por ejemplo:
/www/pepito/logs/access_log
/www/juan/logs/access_log
/www/manuel/logs/access_log
/www/pepito/logs/error_log
/www/juan/logs/error_log
/www/manuel/logs/error_log
5-. Comprobar manualmente que funciona:
/usr/sbin/logrotate -d /etc/logrotate.conf
/usr/sbin/logrotate -f /etc/logrotate.conf
Creo recordar que se hace lo mismo con:
/usr/sbin/logrotate -d -f /etc/logrotate.conf
Si todo va bien y no se muestra ningún error es que todo ha ido bien.
6-. Ahora nos toca programar para que el servidor haga logrotate automáticamente, con ayuda de nuestro amigo crontab:
vi /etc/crontab
Copiar el siguiente contenido:
#Logrotate a las 1 AM
0 01 * * * root /usr/sbin/logrotate /etc/logrotate.conf > /dev/null 2>&1
Finalmente ejecutaremos en el terminal:
/etc/init.d/crond restart
Para que los nuevos cambios se apliquen.
La programación del crontab dependerá de cuando generemos nuestras estadísticas, ya que lo tendremos que programar momentos después de generarlas, ya que sino lógicamente no tendrá los registros de acceso correctamente al generarlas.
Si alguien conoce otros métodos o alguna forma de mejorar el mío, que deje un comentario. Espero que ayude a más de uno :)
Noticias relacionadas:
- Cómo configurar Pear para un servidor dedicado
- Cómo optimizar el servidor Mysql (configurando my.cnf) de un servidor dedicado
- Ubicación del log de errores de MySQL en un servidor
- Millares de tutoriales para Linux/Unix
- Cómo configurar un adaptador inalámbrico de red USB con ndiswrapper en Linux
Este noticia ha sido creada el 16 abril 2008 a las 9:06 en Sistemas, Trucos, Ubuntu (COMOs) con las etiquetas Al Grano, Alojamientos Web, carpetas, conf, configurar, Configurar Logrotate, copiar, de, generar, La Ruta, las, Lib, root, servidor, tutorial, un, unix, usr, var, Www, Ya y si quieres puedes comentarla. Te agradecería mucho que la compartieras con tus amigos:
Si te ha gustado [TUTORIAL] Configurar Logrotate en un servidor Linux/Unix después de generar las estadísticas y esta web, puedes seguirla a través de Facebook, Twitter y también puedes recibir las nuevas noticias de la web en tu correo pincha en este enlace para darte de alta. Además también puedes seguir las noticias por RSS.

24-diciembre-2008 a las 12:59 pm
Muy buena explicación, solo un pequeño apunte:
La última parte no sería extrictamente necesario hacerla (al menos en distribuciones Ubuntu/Debian), ya que el propio cron, dentro de sus tareas diarias (/etc/cron.daily) , lanza la tarea /usr/sbin/logrotate /etc/logrotate.conf y como bien dices, esto implica rotar todo lo que se haya configurado dentro del directorio /etc/logrotate.d.
No se hasta que punto se podría estar realizando la rotación dos veces al día en lugar de una, en caso de meter la tarea directamente en el crontab, pero bueno, en principio supongo que incluso en ese caso no habría demasiado problema.
Por otro lado, como aprendiz de sysadmin que soy, aconsejo emplear el comando “crontab” (man crontab, es muy sencillo de usar) para añadir las tareas de cron al crontab del usuario que lanzará la tarea, en vez de editar directamente el fichero crontab general. Aunque cualquiera de las dos cosas funciona, por supuesto :-)
Gracias por el post!
14-mayo-2010 a las 4:04 pm
[...] This post was mentioned on Twitter by Sam Hunt. Sam Hunt said: News Update: [TUTORIAL] Configurar Logrotate en un servidor Linux/Unix después de generar las estadísticas « Helekt… http://ow.ly/17n8TX [...]
23-julio-2010 a las 5:01 pm
Segui las instrucciones, pero al ejecutar el logrotate aparecio este error
/usr/sbin/logrotate -f /etc/logrotate.conf
/tmp/logrotate.2FCKJ5: line 4: /usr/sbin/accton/pacct: Not a directory
error: error running postrotate script
Veo que los archivosdel log no estan llegando al tamaño configurado (900M).
Podrian ayudarme???
17-septiembre-2010 a las 5:11 pm
Muy Buen tutorial, algunos crontab no tienen la tarea diaria para ejecutar el logrotate (Me paso con gentoo) por eso siempre es bueno verificar cuando se hace la configuración.
Saludos