Cómo configurar logrotate en sistemas Red hat

En sistemas Red Hat y todas sus variantes tenemos la opción de manejar la rotación de logs con logrotate, para evitar que los ficheros de log de los distintos servicios ( web,email,ftp,etc) ocupen una gran cantidad de espacio en disco o generen ficheros de gran tamaño.

La configuración de logrotate se encuentra en el fichero /etc/logrotate.conf, en el cual podemos especificar directivas generales para la rotación de logs, toda la información disponible en ‘man logrotate‘, un ejemplo de directivas asignadas en dicho fichero:

$ cat /etc/logrotate.conf
# see "man logrotate" for details
# rotar logs semanalmente
weekly

# Mantener los logs rotados cuatro semanas
rotate 4

# crear un nuevo fichero para el log vacío tras rotar
create

# Descomentar si deseas que los logs se roten comprimidos
#compress

# Directorio en el cual incluiremos los ficheros de configuración
# de cada servicio para rotacion de logs

include /etc/logrotate.d

Como indica la última directiva, haremos un Include a la carpeta /etc/logrotate.d, donde incluiremos los ficheros de configuración para la rotación de logs de servicios, ejemplo:

$ ls -ltr

-rw-r--r--   1 root root   32 feb 23  2001 up2date
-rw-r--r--   1 root root  228 feb 21  2005 syslog
-rw-r--r--   1 root root  144 feb 21  2005 acpid
-rw-r--r--   1 root root  136 feb 21  2005 ppp
-rw-r--r--   1 root root  571 feb 21  2005 mgetty
-rw-r--r--   1 root root  789 dic 14  2006 mysql
-rw-r--r--   1 root root  319 ene 17  2007 psacct
-rw-r--r--   1 root root  163 nov 17  2007 named
-rw-r--r--   1 root root   61 nov 17  2007 rpm
-rw-r--r--   1 root root   89 nov 18  2007 yum
-rw-r-----   1 root root   86 ene 23 12:58 apf
-rw-------   1 root root   65 may 20 11:06 bfd
-rw-r--r--   1 root root  161 jun  7 14:51 cups
-rw-r--r--   1 root root  405 jun 10 18:00 exim
-rw-r--r--   1 root root  154 jun 12 16:48 snmpd

Vamos a coger como ejemplo la configuración para los logs de exim:

$ cat exim
/var/log/exim_mainlog {
create 0640 mailnull mail
compress
postrotate
/usr/bin/killall -HUP exim
endscript
}
/var/log/exim_paniclog {
missingok
create 0640 mailnull mail
compress
postrotate
/usr/bin/killall -HUP exim
endscript
}
/var/log/exim_rejectlog {
create 0640 mailnull mail
compress
postrotate
/usr/bin/killall -HUP exim
endscript
}

Lo primero que especificamos es la ruta al log, en este caso se encuentran en /var/log/exim_*.
Después le indicamos que cree un nuevo fichero para el log, vacío al rotar, con permiso 0640 y usuario/grupo mailnull/mail. Posteriormente, queremos los logs comprimidos, indicamos compress.

Cuando veamos en un script de logrotate las líneas postrotate y endscript, significa que lo que hay entre ellas se ejecutará tras rotar los logs. En caso de este script para el MTA de exim, lo que hacemos es ejecutar:

/usr/bin/killall -HUP exim

Lo que hace esta línea es reiniciar exim.

Esto es básicamente lo que debemos saber para tener configurado en nuestras máquinas logrotate, y funcionando para los servicios que necesitemos, de modo que ni se nos llene el disco debido al tamaño de los logs, ni tengamos ficheros log de gran tamaño.

Para información más detallada, ‘man logrotate’ nos explica detalladamente todas las directivas y configuraciones posibles.

Falta comentar que lógicamente, logrotate debe ir configurado en un cron para que se ejecute periódicamente, no obstante por defecto ya viene asignado, en caso de querer lanzarlo manualmente para probar si está correctamente configurado se hace del siguiente modo:

logrotate /etc/logrotate.conf -f

Le especificamos el fichero de configuración (en este caso /etc/logrotate.conf), y forzamos con -f. Y el resultado si todo va bien (para exim):

-rw-r-----  1 mailnull mail      10938 jul  8 14:15 exim_mainlog
-rw-r-----  1 mailnull mail    7256521 jul  8 14:15 exim_mainlog.1.gz
-rw-r-----  1 mailnull mail        648 jul  8 14:15 exim_paniclog
-rw-r-----  1 mailnull mail       7425 jul  8 14:15 exim_paniclog.1.gz
-rw-r-----  1 mailnull mail     151527 jul  6 04:02 exim_paniclog.2.gz
-rw-r-----  1 mailnull mail      17052 jun 29 04:03 exim_paniclog.3.gz
-rw-r-----  1 mailnull mail       5847 jun 22 04:02 exim_paniclog.4.gz
-rw-r-----  1 mailnull mail       1766 jul  8 14:15 exim_rejectlog
-rw-r-----  1 mailnull mail    3022844 jul  8 14:15 exim_rejectlog.1.gz
-rw-r-----  1 mailnull mail    9933138 jul  6 04:02 exim_rejectlog.2.gz
-rw-r-----  1 mailnull mail    9427375 jun 29 04:03 exim_rejectlog.3.gz
-rw-r-----  1 mailnull mail    8896721 jun 22 04:03 exim_rejectlog.4.gz

Cualquier duda que tengáis podemos tratarla a través de los comentarios. Por supuesto existen muchas más opciones y configuraciones disponibles, todo es cuestión de revisar la documentación.

5 comentarios en “Cómo configurar logrotate en sistemas Red hat

  1. Consulta, como se configura logrotate para que guarde los logs de alguna direccion en otra direccion y los borre de la original.?

  2. Solo para agradecerte la información.
    Me ha sido muy util para unos sitios en producción de mi trabajo que tienen un trafico intenso y en donde los logs del apache crecen muchisimo.
    Saludos cordiales.

Comments are closed.