Ejemplos de logrotate: agregar servicios a la rotación de logs

En el post anterior hablamos sobre algunas directivas de configuración de logrotate. También mencionamos que las directivas locales (para un servicio en particular) toman precedencia sobre las globales. Además, las directivas que se leen al final pueden llegar a invalidar otras anteriores, por lo que debemos ser cuidadosos al escribirlas. Sin más decir, veamos a continuación algunos ejemplos de logrotate.

Ejemplos de logrotate

Veamos el siguiente bloque de configuración:

/var/log/mariadb/* {
    weekly
    rotate 3
    size 10M
    compress
    notifempty
    create 640 mysql mysql
}

El uso del comodín permite especificar todos los archivos de logs que se encuentran en el directorio indicado.

Si insertamos el bloque anterior en /etc/logrotate.d/mariadb, se producirá lo siguiente:

  • Los archivos que se encuentran dentro de /var/log/mariadb se rotarán semanalmente.
  • Se conservarán en total 3 archivos rotados, los cuales serán comprimidos utilizando gzip.
  • Los archivos no se rotarán si están vacíos o si su tamaño es inferior a 10 MB.
    • Todas las condiciones anteriores deben cumplirse para que se efectúe la rotación.
  • Cuando se produzca una rotación, el nuevo archivo tendrá como dueño y grupo propietario a mysql. El primero tendrá permisos de lectura y escritura, mientras que los miembros del segundo solamente podrán leerlo. Finalmente, otros usuarios no tendrán ningún tipo de acceso.

A continuación consideremos este otro caso:

/var/log/httpd/* {
    monthly
    create 0644 apache apache
    rotate 5
    size 1M
    dateext
    dateformat -%d%m%Y
    notifempty
}

En este ejemplo:

  • Los logs se rotarán de forma mensual.
  • Cada nuevo archivo de log tendrá permisos 0644. Su dueño y grupo propietario será apache.
  • Se guardarán 5 archivos rotados.
  • Para que se efectúe la rotación es necesario que el tamaño del archivo haya alcanzado 1 MB.
  • En vez de comprimir los archivos rotados, se los renombrará agregándoles el sufijo -%d%m%Y. Por ejemplo, si el archivo access_log fuera a ser rotado hoy, recibiría el nombre access_log-07012017.

Espero que este post con ejemplos de logrotate les haya sido útil. En nuestra próxima publicación finalizaremos esta serie detallando otras directivas y opciones de configuración. ¡Nos leemos en breve!