¿En qué podemos ayudarte?

Logrotate – mantén tus archivos de log bajo control

Los archivos de registro (logs) son muy útiles para monitorizar el estado de un servidor, y es el sitio lógico donde mirar cuando necesitamos solucionar algún problema. Sin embargo, si no tomamos las medidas apropiadas pueden crecer de forma descontrolada e influir negativamente en el rendimiento del servidor. Es aquí donde una herramienta como logrotate, nos saca las castañas del fuego.

¿Qué es logrotate?

Logrotate es una herramienta diseñada gestionar los archivos de registro de registro. Nos permite comprimirlos y borrar los archivos antiguos, de esta forma podemos aprovechar la utilidad de los log, conservando los recursos del sistema.  Está disponible en muchas distribuciones de Linux y en Ubuntu 16 ya viene configurado para gestionar los acrhivos de registro de todos los paquetes instalados.

Sin embargo, al realizar una instalación personalizada, debemos asegurarnos de modificar su configuración para procesar los logs de nuestras aplicaciones. Por ejemplo si hemos seguido la guia de instalación de WordPress, nuestros logs no serán procesados por la configuración por defecto.

Podemos comprobar que logrotate está instalado mediante:
logrotate --version, la respuesta debería ser logrotate 3.8.7

Si recibimos un mesaje de error o la versión es muy diferente, debemos instalar y/o actualizar el paquete de logrotate, correspondiente a nuestra distribución.


Uso de logrotate

El comportamiento de logrotate está determinado por las opciones establecidas en /etc/logrotate.conf. Este archivo contiene las directivas globales y además incluye la directiva include /etc/logrotate. Gracias a esta última directiva, solo tendremos que incluir en la carpeta /etc/logrotate.d el archivo de configuración con nuestras personalizaciones.  

Directivas habituales de logrotate

Las directivas de uso más común son

  • Intervalos de rotación 
    • daily, weekly,  monthly, yearly - diario, semanal, mensual, anual
    • size valor - en este caso se rotarán el log cuando sobrepase el tamaño indicado en bytes. Podemos añadir sufijos: kilobytes. Megabytes o Gigabytes por ejemplo size 10M
  • Compresión de los archivos antiguos -  compress, si queremos dehabilitarla nocompress. En algunos caso podemos retardar la compresion la compresión, si necesitamos procesar los archivos rotados. En ese caso usaremos delaycompress.
  • Achivos a conservar - rotate numero, por ejemplo para guardar los últimos 5 archivos usaremos rotate 5.
  • Crear un nuevo archivo - si nesitamos que el archivo exista, con la directiva create modo usuario grupo, crearemos un nuevo archivo en blanco, por ejemplo create 640 www-data www-data.
  • Comandos a ejecutar antes y después del proceso de rotación:
    • prerotate ... endscript : comandos que se ejecutarán antes
    • postrotate ... endscript : comandos que se ejecutarán después
  • No rotar archivos vacios - notifempty
  • No hacer nada si no existe el archivo - missingok
  • Ejecutar los comandos una sola vez por cada grupo de archivos - sharedscripts. ​​​​

Por defecto los logs se rotan semanalmente, se conservan los 4 últimos y se crea un archivo en blanco con cada rotación.

Archivos de configuración de logrotate

La estructura de un archivo de configuración es sencilla

/ruta/del/archivo1
....
/ruta/del/archivon {
  directivas específicas a aplicar
  ...
}

Ponemos las rutas a los archivos a monitorizar y a continuacion las directivas que se aplicarán a este grupo de archivos. Las directivas específicas tienen precendencia sobre las directivas globales. Para los sitios virtales que hemos creado 


Ejemplo de configuracion para un virtual host

Para el virtual host de nuestro ejemplo crearemos el archivo sudo nano /etc/logrotate.d/virtual-host copiando el contenido del archivo para apache2

/var/www/carpeta-virtual-host/logs/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 640 root adm
  sharedscripts
  postrotate
    if /etc/init.d/apache2 status > /dev/null ; then \
      /etc/init.d/apache2 reload > /dev/null; \
    fi;
 endscript
 prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
    run-parts /etc/logrotate.d/httpd-prerotate; \
  fi; \
endscript
}


Conclusion

Adaptando el ejemplo anterior a nuestra configuración podemos respirar tranquilos. Tendremos a nuestra disposición los registros de las últimas 2 semanas y no necesitaremos preocuparnos por agotar los recusrsos de nuestro servidor.

0 0 votes
Valoración del artículo
Suscribir
Notificar de
guest
0 Comentarios
Inline Feedbacks
View all comments