Table of Contents
Cómo configurar y administrar la rotación de registros usando Logrotate en Linux
Uno de los directorios más interesantes (y quizás uno de los más importantes también) en un sistema Linux es/var/log. Según el Estándar de jerarquía del sistema de archivos, la actividad de la mayoría de los servicios que se ejecutan en el sistema se escribe en un archivo dentro de este directorio o en uno de sus subdirectorios.
Estos archivos se conocen como registros. y son la clave para examinar cómo está funcionando el sistema (y cómo se ha comportado en el pasado). Los registros. también son la primera fuente de información que los administradores e ingenieros buscan mientras solucionan problemas.
Si miramos el contenido de/var/log en un CentOS/RHEL/Fedora. y Debian/Ubuntu. (por variedad) veremos los siguientes archivos de registro y subdirectorios.
Tenga en cuenta que el resultado puede ser algo diferente en su caso dependiendo en los servicios que se ejecutan en su (s) sistema (s) y el tiempo que han estado ejecutándose.
En RHEL/CentOS y Fedora # ls/var/log
Archivos de registro y directorios en CentOS 7 en Debian y Ubuntu # ls/var/log
Archivos de registro y directorios en Debian 8
En ambos casos, podemos observar que algunos de los nombres de registro terminan como se esperaba en “ log ”, mientras que a otros se les cambia el nombre usando una fecha (por ejemplo, maillog-20160822. en CentOS. o comprimidos (considere auth.log.2.gz. y mysql.log.1.gz. en Debian. .
freesta r.config.enabled_slots.push
Este no es un comportamiento predeterminado basado en la distribución elegida, pero se puede cambiar a voluntad usando directivas en los archivos de configuración, como veremos en este artículo.
Si los registros se guardaran para siempre, eventualmente terminarían llenando el sistema de archivos donde reside /var/log. Para evitar eso, el administrador del sistema puede usar una buena utilidad llamada logrotate. para limpiar los registros de forma periódica.
En pocas palabras, logrotate. cambiará el nombre o comprimirá el registro principal cuando se cumpla una condición (más sobre eso en un minuto) para que el próximo evento se registre en un archivo vacío.
Además, eliminará Archivos de registro “antiguos”. y conservará los más recientes. Por supuesto, podemos decidir qué significa “antiguo”. y con qué frecuencia queremos que logrotate limpie los registros por nosotros.
Instalación de Logrotate en Linux
Para instalar logrotate. simplemente use su administrador de paquetes:
———- En Debian y Ubuntu. ———# aptitude update && aptitude install logrotate———- En CentOS, RHEL y Fedora. ———# yum update && yum install logrotate
Vale la pena señalar que el archivo de configuración (/etc/logrotate.conf) puede indicar que se pueden colocar otras configuraciones más específicas en archivos .conf individuales dentro de /etc/logrotate.d.
Lectura sugerida. administrar registros del sistema (configurar, rotar e importar a la base de datos) usando Logrotate
Este será el caso si y solo si la siguiente línea existe y es no comentado:
incluir/etc/logrotate.d
Seguiremos con este enfoque, ya que nos ayudará a mantener las cosas en orden, un Utilice el cuadro Debia. n para los siguientes ejemplos.
Configurar Logrotate en Linux
Al ser una herramienta muy versátil, logrotate proporciona muchas directivas para ayudarnos configure cuándo y cómo se rotarán los registros, y qué debería suceder inmediatamente después.
Insertemos el siguiente contenido en /etc/logrotate.d/apache2.conf. (tenga en cuenta que lo más probable es que tenga que crear ese archivo) y examinar cada línea para indicar su propósito:
apache2.conf/var/log/apache2/* rotate semanal 3 tamaño 10M compress delaycompress
La primera línea indica que las directivas dentro del bloque se aplican a todos los registros dentro de /var/log/apache2.
- semanalmente. significa que la herramienta intentará rotar los registros semanalmente. Otros valores posibles son diarios y mensuales.
- rotar 3. indica que solo se deben mantener 3 registros rotados. Por lo tanto, el archivo más antiguo se eliminará en la cuarta ejecución posterior.
- size = 10M. establece el tamaño mínimo para que la rotación se lleve a cabo en 10M. En otras palabras, cada registro no se rotará hasta que alcance los 10 MB.
- comprimir. y retardar compresión. se utilizan para indicar que todos los registros rotados, con el la excepción de la más reciente, debería estar comprimida.
Ejecutemos un ensayo para ver qué haría logrotate si realmente se ejecutara ahora. Utilice la opción-d seguida del archivo de configuración (puede ejecutar logrotate omitiendo esta opción):
# logrotate-d/etc/logrotate.d/apache2.conf
Los resultados se muestran a continuación:
Rotar registros de Apache con Logrotate
En lugar de comprimir los registros, podríamos cambiarles el nombre después de la fecha. en que se rotaron. Para hacer eso, usaremos la directiva de texto de datos. Si nuestro formato de fecha no es el aaaammdd. predeterminado, podemos especificarlo usando formato de fecha.
Lectura sugerida. Instale ‘encima’ para monitorear la actividad de registro de los procesos del sistema Linux
Tenga en cuenta que incluso podemos evitar que se produzca la rotación si el registro está vacío con notifempty. Además, digamos a logrotate que envíe el registro rotado al administrador del sistema ( [email protected]. en este caso) para su referencia (esto requerirá que se configure un servidor de correo, que es fuera del alcance de este artículo).
Si desea recibir correos electrónicos sobre logrotate, puede configurar el servidor de correo Postfix como se muestra aquí: Instale el servidor de correo Postfix
Esta vez lo haremos use /etc/logrotate.d/squid.conf. para rotar solo /var/log/squid/access.log.
squid.conf/var/log/squid/access.log creación mensual 0644 root root rotar 5 size = 1M dateext dateformat-% d% m% Y notifempty mail [email protected]
Como podemos ver en la imagen de abajo, este registro no necesitó para ser girado. Sin embargo, cuando se cumpla la condición de tamaño (tamaño = 1 M. , el registro rotado se llamará access.log-25082020. (si el registro se rotó el agosto 25, 2020. y el registro principal ( access.log. se volverá a crear con los permisos de acceso establecidos en 0644. y con root. como propietario y propietario del grupo.
Finalmente, cuando el número de registros finalmente llegue a 6. el registro más antiguo se enviará por correo a [email protected].
Rotar registros de Squid con Logrotate
Ahora supongamos que desea ejecutar un comando personalizado cuando se realiza la rotación. Para hacer eso, coloque la línea con dicho comando entre las directivas postrotate y endcript.
Por ejemplo, supongamos que queremos enviar un correo electrónico a root cuando alguno de los registros dentro de /var/log/myservice. se rota. Agreguemos las líneas en rojo a /etc/logrotate.d/squid.conf.
squid.conf/var/log/myservice/* {creación mensual 0644 root root rotar 5 size = 1M postrotate echo “Se acaba de realizar una rotación”. | mail root endcript.
Por último, pero no menos importante, es importante tener en cuenta que las opciones presentes en/etc/logrotate.d/*.conf anulan las del archivo de configuración principal en caso de conflictos.
Logrotate y Cron
De forma predeterminada, la instalación de logrotate crea un archivo crontab dentro de /etc/cron.daily. llamado logrotate. Como es el caso con los otros archivos crontab dentro de este directorio, se ejecutará diariamente a partir de las 6:25 am. si anacron no está instalado.
Lectura sugerida. 11 Ejemplos de tareas de programación Cron en Linux
De lo contrario, la ejecución comenzará alrededor de las 7:35 am. Para verificar, busque la línea que contiene cron.daily. en /etc/crontab. o /etc/anacrontab.
Resumen
En un sistema que genera varios registros, la administración de dichos archivos se puede simplificar enormemente usando logrotate. Como hemos explicado en este artículo, rotará, comprimirá, eliminará y enviará automáticamente los registros de forma periódica o cuando el archivo alcance un tamaño determinado.
Solo asegúrese de que esté configurado para ejecutarse como cron job y logrotate te facilitarán mucho las cosas. Para obtener más detalles, consulte la página de manual.
¿Tiene alguna pregunta o sugerencia sobre este artículo? No dude en hacérnoslo saber utilizando el formulario de comentarios a continuación.