Skip to content
Home » Howto: logrotate

Howto: logrotate

Traducido de phpkitchen.com

¿ Estás administrando un sistema Linux o Unix que tiene poco espacio? La utilidad logrotate te puede resolver muchos problemas. Especialmente cuando se trata de los logs de Apache, tu disco duro puede llenarse rápidamente si tu servidor soporta sitios con un tráfico elevado. Un simple ejemplo, un log de 100MB cuando lo gzipeamos se reduce a 5MB, asi que por qué no usar logrotate para controlar tus logs.

Lo Principal
Todo lo que necesitas saber para manejar tus logs son 3 cosas elementales:


  1. la utilidad logrotate está instalada por defecto en muchas instalaciones de Linux/Unix, la mía en RedHat 7.3 está ubicada en /usr/sbin/logrotate.  Normalmente viene configurada y arranca por defecto, pero no siempre con la mejor configuración que tú necesitas
  2. el fichero de configuración genérico de logrotate puedes encontrarlo en /etc/logrotate.conf
  3. las configuraciones para log para servicios individuales están en el directorio /etc/logrotate.d/ con un ejemplo típico /etc/logrotate.d/apache

Logrotate.conf
Un fichero de configuración común sería algo como esto:

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


# keep 4 weeks worth of backlogs
rotate 4


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


# 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 — we’ll rotate them here
/var/log/wtmp {
    monthly
    create 0664 root utmp
    rotate 1
}


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

Deberías prestar especial atención a la directiva compress, en RedHat 7.3 se recomienda por defecto. Una configuración para periocidad semanal weekly debería ser suficiente a no ser que mantengas sitios con mucha carga. El rest del fichero es bastante descriptivo.

Configurando las rutas para Servicios Individuales Como se ha comentado antes, puedes configurar la forma en que deseas que logrotate proceso los logs, para, Apache. Esto puede hacerse editando el fichero /etc/logrotate.d/apache y añadiendo tus propias directivas de rutas a la lista existente. Una configuración por defecto sería algo como esto:

/var/log/httpd/access_log /var/log/httpd/agent_log /var/log/httpd/error_log /var/log/htt
pd/referer_log {
    missingok
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}


En mi caso he añadido en la ruta (*) para incluir todos los sitios de mi máquina:


/var/www/html/*/logs/access_log


también he añadido la directiva size=30M para fijar el tamaño máximo que un log puede tener antes de rotarlo y comprimirlo.