2

Rotado de logs con logrotate

Hace poco tuve la necesidad de configurar un “housekeeping” para los servidores  de WordPress de un cliente. No tenían nada de extraordinario: un Red Hat Linux que servía desde el Apache instalado por defecto (y, lógicamente, el módulo PHP). Lo que había que controlar era que los logs de Apache no llenasen el FileSystem, así que antes de ponerme a desarrollar un script para rotar los logs le eché un vistazo al logrotate.

El proceso logrotate

Logrotate es un proceso encargado de rotar y comprimir los logs de sistema en Linux. Está ubicado en la ruta /etc/logrotate.conf y en él se definen las políticas de rotado comunes a todos los logs del sistema. Tiene esta pinta:

# see “man logrotate” for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 5

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp and btmp — we’ll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}

/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}

# system-specific logs may be also be configured here.

Aparte de este fichero, cada paquete que se instale en el sistema (como httpd, por ejemplo) crea un fichero de configuración adicional en la ruta /etc/logrotate.d, que permite sobrescribir la política definida en el primer fichero, permitiéndonos personalizar el rotado de logs específicos de una aplicación (por ejemplo).

[root@server logrotate.d]# cat /etc/logrotate.d/aplicacion
/var/log/aplicacion.log {
weekly
copytruncate
rotate 5
compress
missingok
}

En el ejemplo de arriba le estaríamos indicando lo siguiente:

  • weekly: el rotado de logs será semanal.
  • copytruncate: creamos una copia del fichero de log y truncaremos el original (esto evita problemas, ya que la aplicación trabaja apuntando siempre al mismo fichero).
  • rotate 5: dejará en el directorio los últimos seis ficheros, rotando cinco veces.
  • compress: comprime el fichero después de rotarlo.
  • missingok: permite que no exista el fichero de log, por lo que no da error si no existe el fichero.

Otras opciones que podrían ser interesantes serían estas dos:

  • size: rota los ficheros de log al llegar al tamaño indicado (ejemplo: size 4096k , size 256M).
  • prerotate y/o postrotate: ejecuta algún script antes o después de rotar.

Para ejecutar el comando manualmente haríamos lo siguiente:

logrotate -vf /etc/logrotate.conf

2 Comments

  1. Wao que productivo e interesante, me gusto mucho ya que vi y leí cosas que no sabia y ahora puedo hablar sobre algo muy interesante !!

  2. Este tema es muy interesante ya que muy pocos lo conosen y a muchos le interesara como a mi fue muy pero muy teresante nada aga la conocer cada dia mas 😌
    muchos

Deja un comentario

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