GNU/Linux >> Tutoriales Linux >  >> Linux

Ejemplo de configuración y solución de problemas de logrotate

Aplicando conocimiento

Un artículo anterior Comprensión de la utilidad logrotate describía lo que hace Logrotate y cómo puede configurarlo. Este artículo aplica este conocimiento para crear una solución de rotación de registros para uno o más hosts virtuales personalizados. También identifica algunas opciones para probar y solucionar problemas de logrotate.

Atar todo junto:registros del host virtual

Para mostrar cómo puede usar logrotate para sus aplicaciones, aquí hay un ejemplo que será útil para muchas personas:rotar registros para sus hosts virtuales personalizados. El ejemplo usa Apache ®, pero puede modificarlo para otros servidores web como nNinx® o Lighttpd® , generalmente simplemente cambiando el script posterior a la rotación.

Primero, cree un archivo para contener la configuración que le dice a logrotate qué hacer con los archivos de registro del host virtual. No edite el archivo mainconfig o el archivo de configuración del servidor web porque una futura actualización del paquete podría querer sobrescribir la configuración. En su lugar, crea tu propio archivo con el siguiente comando:

/etc/logrotate.d/virtualhosts

Este ejemplo incluye todos los hosts virtuales en un solo archivo, pero si tiene un host que está más ocupado que otros, es posible que desee crear archivos de configuración separados para manejar las necesidades de sus diferentes dominios. El ejemplo especifica varios elementos que probablemente ya estén configurados en su configuración principal, solo para cubrir todas las bases.

Los archivos

Digamos que tiene dos dominios virtuales, domain1.com y dominio2.com y que los archivos de registro de cada uno están en /home/demo/public_html/(domain name)/log .Su archivo de configuración necesita decirle a logrotate dónde encontrar los archivos de registro, luego inicie el bloque de configuración para ellos:

/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {

Si tiene más directorios de registro o archivos para agregar, insértelos en esa lista.

Rotar

A continuación, asegúrese de que logrotate solo conserve tantos registros antiguos como desee:

rotate 14

El ejemplo utiliza 14 archivos para mantener dos semanas de registros, pero puede ajustar ese número para satisfacer sus necesidades.

Intervalo

Ahora, dígale al servidor web que rote estos registros diariamente (nuevamente, cámbielo si prefiere un intervalo más largo):

daily

Tamaño (opcional)

La configuración de tamaño especifica un tamaño máximo para sus registros. Cuando el registro alcanza ese tamaño, se activa una rotación de registros.

size 50M

La configuración de tamaño es opcional aquí porque anula cualquier condición de rotación basada en el tiempo. Puede especificar tanto un intervalo de tiempo como un tamaño máximo, pero si lo hace, logrotate ignora la configuración del intervalo de tiempo.

Compresión

Especifique si desea comprimir estos registros cuando se vuelvan a archivar. Este ejemplo usa delaycompress Comando para tener en cuenta el reinicio correcto de Apache, lo que significa que también debe activar la compresión:

compress
delaycompress

Scripts compartidos

Es posible que tenga varios hosts virtuales, y eso significaría que varios registros rotan. Para asegurarse de que el servidor web solo se reinicie después de que se hayan realizado todas las rotaciones, agregue la siguiente línea:

sharedscripts

Postrotar

Especifique un script posterior a la rotación para reiniciar el servidor web:

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

Y finalmente, cierre el bloque de configuración con una llave:

}

El archivo completo

A continuación se muestra el archivo de configuración completo:

/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {
        rotate 14
        daily
        compress
        delaycompress
        sharedscripts
        postrotate
                /usr/sbin/apachectl graceful > /dev/null
        endscript
}

Pruebe el script observando las cosas cuando se ejecutan los trabajos cron nocturnos o ejecutando logrotate manualmente con el siguiente comando:

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

Si no recibe ningún error, debería estar bien. Pero si quiere estar seguro, puede ejecutar algunas de las siguientes pruebas.

Probando logrotate

Si sospecha que logrotate está teniendo algún problema, o simplemente quiere asegurarse de que la nueva configuración que ha implementado funcione, puede pasar algunos indicadores útiles a logrotate cuando lo ejecuta desde la línea de comando:

Detallado

La bandera detallada, -v , le dice a logrotate que diga cada operación que ejecuta. Esto ayuda cuando desea averiguar por qué logrotate no rota un registro como se esperaba.

Depurar

El indicador de depuración, -d , le dice a logrotate que siga los movimientos de los registros giratorios, pero no en realidad girarlos. Puede ser útil si está trabajando en un servidor de producción y desea probar un nuevo archivo de configuración, pero no quiere que se ejecute ninguna rotación de registro real cuando ejecuta la prueba.

La depuración también verifica que el archivo de configuración tenga el formato adecuado y que logrotate pueda encontrar los archivos de registro que rotaría. Sin embargo, dado que no ejecuta las rotaciones, no prueba algunas partes del proceso, como los scripts posteriores a la rotación.

Fuerza

La bandera de fuerza, -f , obliga a logrotate a rotar todos los registros cuando se ejecuta, ya sea que normalmente necesiten rotarse o no en ese momento. Si desea probar a fondo las configuraciones de logrotate, esta es la bandera que debe usar. Solo recuerde que logrotate rota los registros y elimina los antiguos de acuerdo con la configuración, así que no rote accidentalmente un registro reciente que necesita conservar.

También puede ser útil si cree que logrotate debería rotar un registro, pero no es así. Forzar el problema te ayuda a identificar:

  • Si el problema es que logrotate no cree que el registro necesite rotación (si ejecuta el indicador forzado y el registro se rota)
  • Si el problema es que logrotate no puede afectar el archivo de registro (si lo ejecuta y no sucede nada en el registro).

Nota: Si configuró logrotate para agregar una fecha al nombre de un registro archivado, ni siquiera usar el indicador forzado hace que logrotate cree un nuevo archivo el mismo día. Debido a que el nombre que debe usar para un segundo archivo ya está tomado en ese caso, es posible que deba cambiar el nombre del archivo más reciente antes de poder forzar una rotación de registros.

Combinando banderas

Puede usar las banderas de prueba juntas de manera bastante efectiva. Hacer que logrotate te diga qué haría si lo hicieras rotar todo, pero no realmente rotar cualquier cosa, puede combinar los tres:

/usr/sbin/logrotate -vdf /etc/logrotate.conf

Este comando proporciona una larga lista de cosas que haría logrotate, incluidos los archivos de registro que rotaría y lo que haría durante ese proceso.

Si luego desea probar todas las configuraciones de rotación en su totalidad, incluidas las secuencias de comandos que se ejecutan después de las rotaciones, puede ejecutar logrotate sin el indicador de depuración:

/usr/sbin/logrotate -vf /etc/logrotate.conf

Logrotate rota todos los registros. Desnatar la salida debería ayudarlo a detectar cualquier problema obvio. También debe asegurarse de que todos sus servicios sigan funcionando correctamente, que no haya ningún problema con los scripts posteriores a la rotación y que todos los registros se hayan rotado.

Cómo recuerda logrotate

Si encuentra que un registro no está rotando a pesar de que es lo suficientemente antiguo como para hacerlo, ejecute manualmente logrotate con -f bandera. Pero si quiere saber por qué algo salió mal, hay un archivo más que puede verificar antes de forzar una rotación:

/var/lib/logrotate.status

Logrotate almacena información sobre la última vez que giró cada archivo de registro en el archivo de estado. Si miras dentro, ves algo como:

logrotate state -- version 2
"/var/log/acpid.log" 2010-6-18
"/var/log/iptables.log" 2010-6-18
"/var/log/uucp.log" 2010-6-29
...

Es un formato sencillo, la ubicación del archivo de registro está a la izquierda y la fecha de la última rotación está a la derecha. A veces, las fechas en su servidor se confunden (si estaba jugando con un servicio NTP o similar), y la fecha en que se rotó por última vez un registro termina siendo una fecha futura. Si eso sucedió, lo verá en este archivo de estado.

Si desea verificar logrotate con un archivo de registro en particular pero no quiere forzar que todo gire, puede eliminar la entrada del registro del archivo logrotatestatus. Luego, cuando ejecuta logrotate normalmente, debería crear una nueva entrada para el registro con la fecha de hoy (aunque es posible que en realidad no rote el registro; usa esa primera ejecución como línea de base si solo se basa en intervalos).

Resumen

Para algo que se ejecuta silenciosamente en segundo plano y realmente solo realiza un tipo de tarea, logrotate hace bastante. Debería poder configurar archivos de configuración newlogrotate para sus propios fines, ya sea creándolos desde cero o copiando configuraciones existentes y modificándolas adecuadamente. Y lo que es más importante, puede evitar que sus registros se salgan de control.


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

  2. ¿Resolución de problemas y depuración de redes Linux?

  3. Cómo:replicación y configuración de DRBD

  4. Cómo:MTR:comprender y solucionar problemas de conectividad de red

  5. Deshabilitar avisos y advertencias de obsolescencia de PHP

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

La mejor configuración de PHP-FPM:cálculo fácil y simple

Guía y configuración del gestor de arranque LILO Linux

Ubuntu GRUB Linux Bootloader y configuración

Administrar registros con Logrotate en Ubuntu

Journalctl:Cómo leer y editar registros de Systemd