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 🙂

por Victor

Me llamo Víctor López y nací en Zaragoza el 16 de Diciembre de 1984. Esta web la monté exactamente el 23 de Mayo del 2005 con la idea de publicar mis experiencias personales, cosas curiosas que veía a mi alrededor (tanto en Internet como en mi vida) y el poder tener mi propio espacio web en la red. Si quieres puedes ver las estadísticas del año 2010. Ingeniero Superior en informática (terminé la carrera en 2006), desde pequeño ya estaba totalmente convencido a lo que me iba a dedicar en mi vida, la informática. Quizás porque mi padre tenía un Spectrum y me pegaba horas trasteándolo o quizás porque desde pequeño siempre me han gustado “los chismes”. El caso es que empezó a gustarme este mundo de la informática. Profesionalmente soy Analista-Programador Senior en PHP y me dedico al análisis, desarrollo y programación de páginas web y al desarrollo de aplicaciones (principalmente web en PHP, empecé a programar en el año 2002 en PHP), creación, alojamiento, optimización (diseño, SEO, publicidad), puesta en marcha de webs y potenciándolas. Actualmente soy Lead Integration Engineer en EnGrande.com – BudGetPlaces.com, además de formar parte de Homein.com (anteriormente he trabajado en Atrapalo.com, Camyna.com y Sync.es). Socio fundador de Coompy.es Alquilar habitación – Compartir piso. Partidario del software libre y usuario asiduo de Ubuntu y CentOS. Fui usuario de Mac pero ahora ya he vuelto al buen camino con Linux (Ubuntu distro). Sobre mi filosofía de vida, te invito a que leas este artículo: “Tu eres el resultado de ti mismo“. Si lo lees, entenderás mi punto de vista de la vida. Intento estar lo más lejos posible de la monotonía y considero mi trabajo como un hobby, me gusta aprender cosas nuevas cada día y afrontar nuevas metas y proyectos. En mi tiempo libre me gusta practicar cualquier deporte (el fútbol especialmente), me gusta competir (sea el ámbito que sea), los coches, las buenas películas/series y viajar. Personalmente considero que lo primero en esta vida es la salud y las personas, dejando atrás otras cosas, como puede ser el dinero, la fama y todas esas chorradas, que cuanto más las tienen las personas, más las quieren y menos les importan los demás. Y creo que el respeto y educación es fundamental. Pues eso es todo, un breve resumen de mi persona. Si te quieres anunciar en mi blog, contactar conmigo ya sea para la contratación de mis servicios, ofertas, agradecimientos, quejas, insultos, amenazas y/o similares, puedes mandarme un correo cuando quieras. Mi correo personal de contacto es: http://helektron.com/contacto-personal/ Puedes seguir este blog por Google Plus, Facebook, Twitter, RSS y por mail.

4 comentario en “[TUTORIAL] Configurar Logrotate en un servidor Linux/Unix después de generar las estadísticas”
  1. 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

  2. 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???

  3. 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!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *