GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo rotar archivos de registro de Apache en Linux

Pregunta: Me gustaría rotar automáticamente el apache access_log y error_log archivos. ¿Puedes explicar con un ejemplo cómo hacer esto?

Respuesta: Esto se puede lograr usando la utilidad logrotate como se explica a continuación.

Agregue el siguiente archivo al directorio /etc/logrotate.d.

# vi /etc/logrotate.d/apache
/usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log {
    size 100M
    compress
    dateext
    maxage 30
    postrotate
      /usr/bin/killall -HUP httpd
      ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" [email protected]
    endscript
}

Nota: Consulte nuestro tutorial de logrotate (con 15 ejemplos) que explica más detalles sobre cómo usar las opciones de logrotate.

En el ejemplo anterior de /etc/logrotate.d/apache:

  • tamaño 100M – Una vez que access_log y error_log alcancen los 100M, se rotará. También puede usar 100k (para Kb), 100G (para GB). En lugar de tamaño, también puede rotar los registros de apache usando la frecuencia (diaria, semanal, mensual).
  • comprimir – Indica que se comprimirá el archivo de registro rotado. Por defecto, esto usa gzip. Entonces, el archivo girado tendrá la extensión .gz.
  • texto de fecha – Agrega la fecha en formato AAAAMMDD a los archivos de registro rotados. es decir, en lugar de access_log.1.gz, crea access_log-20110616.gz
  • máximo – Indica cuánto tiempo deben conservarse los archivos de registro rotados. En este ejemplo, se mantendrá durante 30 días.
  • postrotar y guion final – Cualquier comando encerrado entre estos dos parámetros se ejecutará después de rotar el registro.

Importante: Una vez que rote los archivos de registro, querrá que apache escriba los nuevos mensajes de registro en los archivos access_log y error_log recién creados. Por lo tanto, debe enviar la señal HUP al apache como se muestra aquí. Asegúrese de hacer /usr/bin/killall -HUP httpd, que reiniciará apache después de rotar los archivos de registro (lea más sobre kill).

Además, es posible que desee enviarse un correo electrónico a sí mismo indicando que el archivo de registro está rotado, junto con la salida del comando ls -ltr como el cuerpo del correo electrónico. es decir, agregue lo siguiente entre las opciones "postrotate" y "endscript" (después del comando killall).

ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" [email protected]

El script /etc/cron.daily/logrotate se ejecuta todos los días y realizará la rotación de registros de todos los archivos como se especifica en /etc/logrotate.conf y todos los archivos en el directorio /etc/logrotate.d.

Después de agregar el archivo /etc/logrotate.d/apache anterior, con fines de prueba, puede llamar manualmente al script logrotate como se muestra a continuación.

# /etc/cron.daily/logrotate

Una vez que se rotan los archivos de registro, haga un ls para verificarlos. Como explicamos anteriormente, los archivos de registro rotados se conservarán durante 30 días.

# ls /usr/local/apache2/logs
access_log
error_log
access_log-20110716.gz
error_log-20110716.gz

Linux
  1. Cómo cambiar el nombre de los archivos en Linux

  2. Cómo administrar archivos de registro usando Logrotate en Linux

  3. Cómo usar rsyslog para crear un servidor de agregación de registros de Linux

  4. Cómo comprimir varios archivos en Linux

  5. Cómo vaciar un archivo de registro en Linux

Cómo descomprimir archivos en Linux

Cómo cambiar el nombre de un archivo (s) en Linux

Cómo agregar mensajes manualmente a los archivos de registro del sistema Linux

Cómo ver los archivos de registro de Nginx en Linux

Cómo ver los archivos de registro de Apache en Linux

Cómo comprimir un archivo en Linux