GNU/Linux >> Tutoriales Linux >  >> Linux

Entendiendo la utilidad logrotate

Los registros son útiles cuando desea realizar un seguimiento del uso o solucionar problemas de una aplicación. Sin embargo, a medida que se registra más información, los archivos de registro utilizan más espacio en disco. Con el tiempo, un archivo de registro puede crecer hasta un tamaño difícil de manejar. Quedarse sin espacio en disco debido a un archivo de registro grande es un problema, pero un archivo de registro grande también puede ralentizar el proceso de cambio de tamaño o copia de seguridad de su servidor virtual. Además, es difícil buscar un evento en particular si tiene un millón de entradas de registro para hojear. Por lo tanto, es una buena idea mantener los archivos de registro en un tamaño manejable y eliminarlos cuando envejecen demasiado para ser de mucha utilidad.

Afortunadamente, la utilidad logrotate facilita la rotación de registros. La "rotación de registros" se refiere a la práctica de archivar el registro actual de una aplicación, comenzar de nuevo y eliminar los registros más antiguos. El sistema generalmente ejecuta logrotate una vez al día, y cuando se ejecuta verifica las reglas que se pueden personalizar por directorio o por registro.

Cómo funciona logrotate

El sistema ejecuta logrotate en un horario, generalmente diario. En la mayoría de las distribuciones, el script que ejecuta logrotate diariamente se encuentra en /etc/cron.daily/logrotate .

Algunas distribuciones usan una variación. Por ejemplo, en Gentoo, el script logrotate se encuentra en /etc/cron.daily/logrotate.cron .

Si desea que logrotate se ejecute con más frecuencia (para la rotación de registros por hora, por ejemplo), debe usar cron para ejecutar logrotate a través de un script en /etc/cron.hourly .

Cuando se ejecuta logrotate, lee sus archivos de configuración para determinar dónde encontrar los archivos de registro que necesita rotar, con qué frecuencia se deben rotar los archivos y cuántos registros archivados conservar.

logrotate.conf

El archivo de configuración principal de logrotate se encuentra en /etc/logrotate.conf .

El archivo contiene los parámetros predeterminados que utiliza logrotate cuando rota los registros. El archivo está comentado, por lo que puede hojearlo para ver cómo está configurada la configuración. Varios de los comandos específicos de ese archivo se describen más adelante en este artículo.

Tenga en cuenta que una línea en el archivo dice:

include /etc/logrotate.d

Ese directorio contiene la mayoría de los archivos de configuración específicos de la aplicación.

logrotado.d

Utilice el siguiente comando para enumerar el contenido del directorio que almacena la configuración de registro específica de la aplicación:

ls /etc/logrotate.d

Dependiendo de cuánto esté instalado en su servidor, este directorio puede no contener archivos o varios. En general, las aplicaciones que se instalan a través de su administrador de paquetes también crearán un archivo de configuración en /etc/logrotate.d .

Por lo general, el directorio contiene un archivo de configuración para su servicio syslog, que logrotate lee cuando rota los registros del sistema. Este archivo contiene una entrada para varios registros del sistema, junto con algunos comandos similares a los contenidos en logrotate.conf .

NOTA: En las versiones de los sistemas operativos Ubuntu anteriores a Karmic Koala (9.10) no hay entrada para un servicio syslog. Antes de ese lanzamiento, los registros del sistema fueron rotados por un savelog comando ejecutado desde /etc/cron.daily/sysklogd guión.

Dentro de un archivo de aplicación

Como ejemplo, considere el contenido de un archivo de configuración logrotate que podría implementarse cuando instala Apache en un sistema Fedora:

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
    /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
  }

Cuando se ejecuta logrotate, busca cualquier archivo en /var/log/httpd que terminan en log y los rota, si no están vacíos. Si comprueba el directorio httpd y no encuentra ningún archivo de registro, no genera un error. Luego ejecuta el comando en el postrotate/endscript bloque (en este caso, un comando que le dice a Apache que se reinicie), pero solo después de haber procesado todos los registros especificados.

Este archivo de ejemplo no contiene algunas configuraciones que se incluyen en el logrotate.conf expediente. Los comandos en logrotate.conf actúan como valores predeterminados para la rotación de registros. Puede especificar diferentes configuraciones para cualquier aplicación cuando desee anular los valores predeterminados. Por ejemplo, si ejecuta un servidor web ocupado, es posible que desee incluir un daily Comando en el bloque de configuración de Apache para que los registros de Apache roten diariamente en lugar de la rotación semanal predeterminada.

La siguiente sección describe algunos de los comandos más comúnmente utilizados en un archivo de configuración logrotate.

Comandos de configuración

Puede obtener una lista completa de los comandos utilizados en los archivos de configuración de logrotate consultando la página del manual:

man logrotate

Esta sección describe los comandos más utilizados.

Recuerda, los archivos de configuración de las aplicaciones en /etc/logrotate.d hereda sus valores predeterminados del /etc/logrotate.conf principal archivo.

Archivos de registro

Un archivo de registro y su comportamiento de rotación se definen enumerando el archivo (o archivos) de registro seguido de un conjunto de comandos encerrados entre corchetes. La mayoría de los archivos de configuración de aplicaciones contendrán solo uno de estos bloques, pero es posible colocar más de uno en un archivo o agregar bloques de archivos de registro al logrotate.conf principal. archivo.

Puede listar más de un archivo de registro para un bloque usando un comodín en el nombre o separando los archivos de registro en la lista con espacios. Por ejemplo, para especificar todos los archivos en el directorio /var/foo que terminan en .log , y el archivo /var/bar/log.txt , configuraría el bloque de la siguiente manera:

 /var/foo/*.log /var/bar/log.txt {
        rotate 14
        daily
        compress
        delaycompress
        sharedscripts
        postrotate
                /usr/sbin/apachectl graceful > /dev/null
        Endscript
}

Rotar cuenta

El rotate El comando determina cuántos registros archivados se devuelven antes de que logrotate comience a eliminar los más antiguos. Por ejemplo:

rotate 4

Este comando le dice a logrotate que mantenga cuatro registros archivados a la vez. Si existen cuatro registros archivados cuando el registro se rota nuevamente, el más antiguo se elimina para dejar espacio para el nuevo archivo.

Intervalo de rotación

Puede especificar un comando que le diga a logrotate con qué frecuencia rotar un registro en particular. Los posibles comandos incluyen:

daily
weekly
monthly
yearly

Si no se especifica un intervalo de rotación, el registro se rotará cada vez que se ejecute logrotate (a menos que otra condición como size se ha establecido).

Si desea usar un intervalo de tiempo diferente a los definidos, debe usar cron para crear un archivo de configuración separado. Por ejemplo, si desea rotar un archivo de registro particular cada hora, puede crear un archivo en /etc/cron.hourly (es posible que también deba crear ese directorio) que contendría una línea como la siguiente:

/usr/sbin/logrotate /etc/logrotate.hourly.conf

Luego, colocaría la configuración para esa ejecución por hora de logrotate (la ubicación del archivo de registro, si se comprimen o no los archivos antiguos, etc.) en /etc/logrotate.hourly.conf .

Tamaño

Puedes usar el size Comando para especificar un tamaño de archivo para logrotate para verificar al determinar si se debe realizar una rotación. El formato del comando le dice a logrotate qué unidades está usando para especificar el tamaño:

size 100k
size 100M
size 100G

El primer ejemplo rotaría el registro si supera los 100 kilobytes, el segundo si supera los 100 megabytes y el tercero si supera los 100 gigabytes. No recomiendo usar un límite de 100 G, eso sí, el ejemplo se salió un poco de control allí.

El comando de tamaño tiene prioridad sobre un intervalo de rotación y lo reemplaza si ambos están configurados.

Compresión

Si desea comprimir los archivos de registro archivados (en formato gzip), puede incluir el siguiente comando, generalmente en /etc/logrotate.conf :

compress

La compresión suele ser una buena idea, porque los archivos de registro suelen ser todo texto y el texto se comprime bien. Sin embargo, si tiene algunos registros archivados que no desea comprimir, pero desea que la compresión esté activada de forma predeterminada, puede incluir el siguiente comando en una configuración específica de la aplicación:

nocompress

Otro comando a tener en cuenta con respecto a la compresión es el siguiente:

delaycompress

Este comando es útil si desea comprimir los registros archivados, pero desea retrasar la compresión. Cuando delaycompress está activo, un registro archivado se comprime la próxima vez que se rota el registro. Esto puede ser importante cuando tiene un programa que aún puede escribir en su archivo de registro anterior durante un tiempo después de que se haya rotado uno nuevo. Tenga en cuenta que delaycompress funciona solo si tiene compress en su configuración.

Un ejemplo de un buen momento para usar delaycompress sería cuando se le dice a logrotate que reinicie Apache con la directiva "elegante" o "recargar". Debido a que los procesos antiguos de Apache no finalizan hasta que finalizan sus conexiones, podrían intentar registrar más elementos en el archivo antiguo durante algún tiempo después del reinicio. Retrasar la compresión asegura que no perderá esas entradas de registro adicionales cuando se rotan los registros.

Postrotar

Logrotate ejecuta el postrotate script cada vez que gira un registro especificado en un bloque de configuración. Por lo general, desea usar este script para reiniciar una aplicación después de la rotación del registro para que la aplicación pueda cambiar a un nuevo registro.

postrotate
    /usr/sbin/apachectl restart > /dev/null
endscript

>/dev/null le dice a logrotate que canalice la salida del comando a ninguna parte. En este caso, no necesita ver el resultado si la aplicación se reinició correctamente.

El postrotate El comando le dice a logrotate que el script a ejecutar comienza en la siguiente línea y el endscript el comando dice que el script está listo.

Scripts compartidos

Normalmente logrotate ejecuta postrotate script cada vez que gira un registro. Esto también se aplica a varios registros que utilizan el mismo bloque de configuración. Por ejemplo, un bloque de configuración del servidor web que hace referencia tanto al registro de acceso como al registro de errores, si gira ambos, ejecutará el postrotate script dos veces (una vez por cada archivo girado). Si se rotan ambos archivos, el servidor web se reinicia dos veces.

Para evitar que logrotate ejecute ese script para cada registro, puede incluir el siguiente comando:

sharedscripts

Este comando le dice a logrotate que verifique todos los registros de ese bloque de configuración antes de ejecutar postrotate guion. Si se rota uno o ambos registros, el postrotate el script se ejecuta solo una vez. Si ninguno de los logs gira, el postrotate la secuencia de comandos no se ejecuta.

Dónde ir después

Este artículo proporciona una descripción general de lo que hace logrotate y qué tipo de opciones de configuración están disponibles para usted. Ahora debería poder explorar las configuraciones existentes y adaptarlas a sus necesidades. Para obtener información sobre cómo crear una configuración de ejemplo (para rotar los registros de los hosts virtuales personalizados), consulte Ejemplos de configuración y solución de problemas de logrotate.


Linux
  1. Linux:¿comprensión de los permisos y tipos de archivos de Unix?

  2. Comprender el archivo de configuración /etc/profile en Linux

  3. cp -L frente a cp -H

  4. Comprensión de los permisos y tipos de archivos de UNIX

  5. Logrotate Correcto, el archivo original vuelve a su tamaño original

Comprender los permisos de archivos de Linux

Administrar registros con Logrotate en Ubuntu

Comprender las rutas múltiples de Linux (dm-multipath)

Entendiendo el archivo /etc/group

Entendiendo la utilidad separada de Linux

Entendiendo la utilidad fdisk de Linux