Cómo usar el comando logrotate – La guía definitiva

Administrar los archivos de registro de manera efectiva es una tarea esencial para cualquier administrador de sistemas Linux.

En este artículo, analizaremos cómo realizar las siguientes operaciones de archivo de registro utilizando la utilidad UNIX logrotate (rotación de registros):

  • Rotar el archivo de registro cuando el tamaño del archivo alcance un tamaño específico
  • Continuar escribiendo la información de registro en el archivo recién creado, después de rotar el archivo de registro anterior
  • Comprimir los archivos de registro rotados
  • Especificar la opción de compresión para los archivos de registro rotados
  • Rotar los archivos de registro antiguos con la fecha en el nombre del archivo
  • Ejecutar scripts de shell personalizados inmediatamente después de la rotación de registros
  • Eliminar archivos de registro rotados anteriores

Ejemplos de uso de logrotate

1. Archivos de configuración de Logrotate

Los siguientes son los archivos clave que debes tener en cuenta para que logrotate funcione correctamente.

/usr/sbin/logrotate: el comando logrotate en sí.

/etc/cron.daily/logrotate: este script de shell ejecuta el comando logrotate todos los días.

/etc/logrotate.conf: la configuración de rotación de registros para todos los archivos de registro se especifica en este archivo.

/etc/logrotate.d: cuando se instalan paquetes individuales en el sistema, eliminan la información de configuración de rotación de registros en este directorio. Por ejemplo, la información de configuración de rotación de registro de yum se muestra a continuación.

2. Opción size de logrotate: rotar el archivo de registro cuando el tamaño del archivo alcance un límite específico

Si deseas rotar un archivo de registro (por ejemplo, /tmp/output.log) por cada 1 KB, debes crear logrotate.conf como se muestra a continuación.

Esta configuración de logrotate tiene las siguientes tres opciones:

  • size 1k: logrotate se ejecuta solo si el tamaño del archivo es igual (o mayor) a este tamaño.
  • create: rota el archivo original y crea el nuevo archivo con el permiso, el usuario y el grupo especificados.
  • rotate: limita el número de rotación del archivo de registro. Por lo tanto, esto mantendría solo los 4 archivos de registro rotados recientemente.

Antes de la rotación de registros, el siguiente es el tamaño de output.log:

Ahora, ejecuta el comando logrotate como se muestra a continuación. La opción -s especifica el nombre de archivo para escribir el estado de logrotate

Nota: siempre que necesites logrotate para algunos archivos, debes preparar la configuración de rotación de registros y ejecutar el comando logrotate manualmente.
Después de la rotación de registros, el siguiente es el tamaño de output.log:

Eventualmente, esto se mantendrá después de la configuración de los archivos de registro rotados.

  • output.log.4.
  • output.log.3
  • output.log.2
  • output.log.1
  • output.log

Recuerda que después de la rotación del registro, el archivo de registro corresponde al servicio que todavía apuntaría al archivo rotado (output.log.1) y continúa escribiendo en él. Puedes usar el método anterior, si deseas rotar el archivo apache access_log or error_log cada 5 MB.

Idealmente, debes modificar /etc/logrotate.conf para especificar la información de logrotate para un archivo de registro específico.

3. Opción copytruncate de logrotate: continuar escribiendo la información de registro en el archivo recién creado después de rotar el archivo de registro anterior.

copytruncate indica a logrotate que cree la copia del archivo original (es decir, rote el archivo de registro original) y trunca el archivo original a un tamaño de byte cero. Esto ayuda al servicio respectivo que pertenece a ese archivo de registro a escribir en el archivo apropiado.

4. Opción compress de logrotate: comprimir los archivos de registro rotados

Si usas la opción compress como se muestra a continuación, los archivos rotados se comprimirán con la utilidad gzip.

Salida del archivo de registro comprimido:

5. Opción dateext de logrotate: rotar el archivo de registro anterior con la fecha en el nombre del archivo de registro

Después de la configuración anterior, notarás la fecha en el archivo de registro rotado como se muestra a continuación.

Esto funcionaría solo una vez al día. Porque cuando intentas rotar la próxima vez el mismo día, el archivo rotado anteriormente tendrá el mismo nombre de archivo. Por lo tanto, logrotate no tendrá éxito después de la primera ejecución el mismo día.

Por lo general, puedes usar tail -f para ver la salida del archivo de registro en tiempo real. Incluso puedes combinar múltiples salidas de tail-f y mostrarlas en una sola terminal.

6. Opción monthly, daily y weekly de logrotate: rotar el archivo de registro semanal/ diaria/mensualmente

Por hacer la rotación mensualmente debes realizar lo siguiente:

Debes agregar la palabra clave weekly como se muestra a continuación para la rotación del registro semanal.

Tienes que agregar la palabra clave daily como se muestra a continuación para una rotación diaria del registro. También puedes rotar registros cada hora.

7. Opción postrotate endscript de logrotate: ejecutar scripts de shell personalizados inmediatamente después de la rotación del registro

Logrotate te permite ejecutar tus propios scripts de shell personalizados después de completar la rotación del archivo de registro. La siguiente configuración indica que ejecutarás myscript.sh después de la rotación de registros.

8. Opción maxage de logrotate: eliminar los archivos de registro rotados más antiguos

Logrotate elimina automáticamente los archivos rotados después de un número específico de días. El siguiente ejemplo indica que los archivos de registro rotados se eliminaran después de 100 días.

9. Opción missingok de logrotate: no devolver el error si falta el archivo de registro

Puedes ignorar el mensaje de error cuando el archivo real no está disponible utilizando esta opción como se muestra a continuación.

10. Opción compresscmd y compressext de logrotate: especificar el comando de compresión para la rotación del archivo de registro

Las siguientes opciones de compresión se han especificado arriba:

  • compress: indica que se debe realizar la compresión.
  • compresscmd: especifica qué tipo de comando de compresión se debe usar. Por ejemplo: /bin/bzip2
  • compressext: especifica la extensión en el archivo de registro rotado. Sin esta opción, el archivo rotado tendría la extensión predeterminada como .gz. Entonces, si usas bzip2 compresscmd, debes especificar la extensión como .bz2 como se muestra en el ejemplo anterior.