Guarda tus logs comprimidos con logrotate


Icono de una rotación Si mueves un log de /var/log no se comprimirán y se borrarán automáticamente al pasar un tiempo. Es fácil decirle a logrotate que lo haga. Si quieres tener tus logs organizados es más fácil de lo que parece. Logrotate es un software que existe preinstalado en los sistemas de Linux más comunes. Solo hay que acceder a /etc/logrotate.d/ para ver todos los ficheros de configuración ya creados.

Un caso para usar logrotate:Tenemos logs web en directorios fuera de /var/log/apache2/ o /var/log/nginx/ . El directorio en concreto es /home/usuario/web/log/ . Queremos ponerle los logs a este usuario en esa carpeta para que pueda consultarlos con sus permisos. Bien un ejemplo de fichero de configuración sería el siguiente.

/home/usuario/web/log/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 0640 www-data usuario
        sharedscripts
        maxsize 10G
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi; \
        endscript
        postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
        endscript
}

Esta configuración es especial para nginx, pero se puede encontrar fácilmente para apache2 buscando en el misma carpeta /etc/logrotate.d/apache2.

La configuración hace un campresión de cada log al día, llegando ha hacer 52 compresiónes antes de borrar la número 53 y crea los logs con los premisos "0640" y para el usuario "www-data" y grupo "usuario".

Luego los pasos para hacer la configuración serian los siguientes:

  1. Creamos el archivo en /etc/logrotate.d/
  2. Ejecutamos logrotate para que haga efectiva la configuración.
logrotate -f /etc/logrotate.d/fichero 

Si necesitais una información mas detalla la podéis encontrar aquí https://linuxconfig.org/logrotate.