Icono del sitio Karok Seo Web Master

Mantenimiento de LOGs con LOGROTATE

En Linux tenemos una utilidad llamada «logrotate» que es muy potente para ayudarnos a que los filesystems no se llenen a causa de los logs que van almacenando las aplicaciones.

Pongamos por caso que una aplicación va guardando sus logs en /test, a modo de ejemplo, Y estos logs nunca se eliminan. Llegará un momento en que el filesystem se llene y no se puedan guardar más logs, causando un problema de pérdida de información o funcionamiento de la aplicación.

Gracias a logrotate podemos automatizar el mantenimiento de los logs.

¿Cómo funciona logrotate?

[embedded content][embedded content]

Por defecto, la configuración de los logs del sistema operativo se almacena en /etc/logrotate.d/, en donde encontraremos una serie de políticas de rotación de logs para diferentes filesystems del sistema operativo.

IMPORTANTE: Todas las políticas que se almacenan en /etc/logrotate.d son ejecutadas por el usuario root, por lo que un usuario sin privilegios de administrador no lo debería utilizar, pues representa un grave problema de seguridad. Logrotate puede ejecutar cualquier comando del sistema operativo con privilegios de root.

Lo que puede hacer un usuario no privilegiado es llamar al comando logrotate desde el cron. Así no tendremos ningún problema de seguridad en el sistema, ya que logrotate se está ejecutando con un usuario que no es administrador del sistema.

logrotate -f mi_fichero_de_politicas_de_rotacion_de_logs

Veamos un ejemplo de logrotate en funcionamiento

Siguiendo con el ejemplo anterior del filesystem /test, he preparado una pequeña prueba para rotar los logs que allí se encuentran.

[[email protected] test]# ll |grep test
-rw-r--r-- 1 root root 107372544 Jan 1 2020 test_20201101.log
-rw-r--r-- 1 root root 107372544 Dec 3 15:33 test.log
[[email protected] test]# 

A continuación, un fichero de rotación de políticas de logs.

[[email protected] test]# cat /etc/logrotate.d/test /test/*.log
*
{ daily notifempty rotate 1 missingok copytruncate compress postrotate /usr/bin/find /test -name "*.gz" -mtime +30 -exec rm {} \; endscript
}
[[email protected] test]# 

La explicación de las directivas que aparecen en este fichero es:

Seguidamente, vamos a comprobar si las políticas de rotación de logs hacen lo que queremos que hagan.

[[email protected] test]# ll |grep test
-rw-r--r-- 1 root root 0 Dec 3 15:42 test_20201101.log
-rw-r--r-- 1 root root 0 Dec 3 15:42 test.log
-rw-r--r-- 1 root root 104228 Dec 3 15:33 test.log.1.gz
[[email protected] test]# 

Efectivamente, ha guardado el log actual y lo ha comprimido en gzip.

Logrotate es un comando extenso, así que ejecutaremos man logrotate para conocer todas sus posibilidades.

Espero que este tutorial te haya servidor para comprender su funcionamiento.

Salir de la versión móvil