GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo configurar y administrar la rotación de registros usando Logrotate en Linux

Uno de los directorios más interesantes (y quizás también uno de los más importantes) 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 uno de sus subdirectorios.

Dichos 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). Registros también son la primera fuente de información donde los administradores e ingenieros buscan mientras solucionan problemas.

Si miramos el contenido de /var/log en un CentOS/RHEL/Fedora y Debian/Ubuntu (para variar) veremos los siguientes archivos de registro y subdirectorios.

Tenga en cuenta que el resultado puede ser algo diferente en su caso según los servicios que se ejecuten en su(s) sistema(s) y el tiempo que hayan estado funcionando.

En RHEL/CentOS y Fedora

# ls /var/log

En Debian y Ubuntu

# ls /var/log

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 comprimido (considere auth.log.2.gz y mysql.log.1.gz en Debian ).

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 mantuvieran para siempre, eventualmente terminarían llenando el sistema de archivos donde /var/log reside Para evitar eso, el administrador del sistema puede usar una buena utilidad llamada logrotate para limpiar los registros periódicamente.

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á “old” log y conservará los más recientes. Por supuesto, podemos decidir qué “antiguo” medios 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:

---------- On Debian and Ubuntu ---------- 
# aptitude update && aptitude install logrotate 

---------- On CentOS, RHEL and Fedora ---------- 
# yum update && yum install logrotate

Vale la pena notar que el archivo de configuración (/etc/logrotate.conf ) puede indicar que se pueden colocar otras configuraciones más específicas en .conf individuales archivos 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 no está comentada:

include /etc/logrotate.d

Seguiremos con este enfoque, ya que nos ayudará a mantener las cosas en orden y utilizar Debia. n cuadro para los siguientes ejemplos.

Configurar Logrotate en Linux

Al ser una herramienta muy versátil, logrotate proporciona muchas directivas para ayudarnos a configurar cuándo y cómo se rotarán los registros, y qué debería suceder inmediatamente después.

Insertemos los siguientes contenidos en /etc/logrotate.d/apache2.conf (tenga en cuenta que lo más probable es que tenga que crear ese archivo) y examine cada línea para indicar su propósito:

apache2.conf
/var/log/apache2/* {
    weekly
    rotate 3
    size 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.
  • girar 3 indica que solo se deben mantener 3 troncos rotados. Por lo tanto, el archivo más antiguo se eliminará en la cuarta ejecución posterior.
  • tamaño=10M establece el tamaño mínimo para que se produzca la rotación en 10M. En otras palabras, cada registro no se rotará hasta que alcance los 10 MB.
  • comprimir y delaycompress se utilizan para indicar que todos los registros rotados, a excepción del más reciente, deben comprimirse.

Ejecutemos una ejecución en seco para ver qué haría logrotate si realmente se ejecutara ahora. Utilice el -d opción 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:

En lugar de comprimir los registros, podríamos cambiarles el nombre después de la fecha cuando fueron rotados. Para hacer eso, usaremos el dateext directiva. Si nuestro formato de fecha es diferente al predeterminado yyyymmdd , podemos especificarlo usando dateformat .

Lectura sugerida :Instale 'atop' para monitorear la actividad de registro de los procesos del sistema Linux

Tenga en cuenta que incluso podemos evitar que ocurra la rotación si el registro está vacío con notifempty . Además, dígale a logrotate que envíe por correo el registro rotado al administrador del sistema ([email protected] en este caso) para su referencia (esto requerirá que se configure un servidor de correo, lo cual está fuera del alcance de este artículo).

Si desea recibir correos electrónicos sobre logrotate, puede configurar el servidor de correo de Postfix como se muestra aquí:Instalar el servidor de correo de Postfix

Esta vez usaremos /etc/logrotate.d/squid.conf para rotar solo /var/log/squid/access.log :

squid.conf
/var/log/squid/access.log {
    monthly
    create 0644 root root
    rotate 5
    size=1M
    dateext
    dateformat -%d%m%Y
    notifempty
    mail [email protected]
}

Como podemos ver en la imagen de abajo, este registro no necesitaba ser rotado. Sin embargo, cuando se cumple la condición de tamaño (size=1M ), el registro rotado pasará a llamarse access.log-25082020 (si el registro se rotó el 25 de agosto de 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 llegue finalmente a 6 , el registro más antiguo se enviará por correo a [email protected] .

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 endscript.

Por ejemplo, supongamos que queremos enviar un correo electrónico a root cuando cualquiera de los registros dentro de /var/log/myservice se gira. Agreguemos las líneas en rojo a /etc/logrotate.d/squid.conf :

squid.conf
/var/log/myservice/* {
	monthly
	create 0644 root root
	rotate 5
	size=1M
    	postrotate
   		echo "A rotation just took place." | mail root
    	endscript
}

Por último, pero no menos importante, es importante tener en cuenta que las opciones presentes en /etc/logrotate.d/*.conf anula los del archivo de configuración principal en caso de conflicto.

Logrotate y Cron

Por defecto, 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 de Cron en Linux

De lo contrario, la ejecución comenzará alrededor de las 7:35 a. m. . Para verificar, observe 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 utilizando logrotate. Como hemos explicado en este artículo, rotará, comprimirá, eliminará y enviará automáticamente los registros periódicamente o cuando el archivo alcance un tamaño determinado.

Solo asegúrese de que esté configurado para ejecutarse como un trabajo cron y logrotate le facilitará mucho las cosas. Para obtener más detalles, consulte la página del manual.

¿Tienes alguna pregunta o sugerencia sobre este artículo? No dude en hacérnoslo saber utilizando el formulario de comentarios a continuación.


Ubuntu
  1. Rotar y archivar registros con el comando logrotate de Linux

  2. Cómo administrar y enumerar servicios en Linux

  3. Cómo instalar y usar logrotate para administrar archivos de registro en Ubuntu 18.04 LTS

  4. Cómo usar Logrotate para administrar registros en Ubuntu

  5. Cómo crear una rotación de archivo de registro personalizada por logrotate en Linux

Cómo configurar el servidor de respaldo usando Rsnapshot en Linux

Cómo ver archivos de registro estándar en servidores Ubuntu Linux

Cómo instalar s3cmd en Linux y administrar depósitos de Amazon s3

Cómo crear y administrar particiones de Linux usando Parted

Cómo ocultar carpetas y archivos en Linux usando un archivo de texto

Cómo configurar el servidor y el cliente VPN de Linux usando OpenVPN