GNU/Linux >> Tutoriales Linux >  >> Linux

Configuración de Centos/Linux logrotate al tamaño máximo de archivo para todos los registros

Como mencionó Zeeshan, las opciones de logrotate size , minsize , maxsize son factores desencadenantes de la rotación.

Para explicarlo mejor. Puede ejecutar logrotate con la frecuencia que desee, pero a menos que se alcance un umbral, como el tamaño de archivo alcanzado o el tiempo apropiado transcurrido, los registros no se rotarán.

Las opciones de tamaño no garantizan que sus registros rotados también tengan el tamaño especificado. Para que se acerquen al tamaño especificado, debe llamar al programa logrotate con la suficiente frecuencia. Esto es crítico.

Para los archivos de registro que se acumulan muy rápidamente (por ejemplo, cientos de MB por día), a menos que desee que sean muy grandes, deberá asegurarse de que se llame a logrotate con frecuencia. esto es crítico.

Por lo tanto, para evitar que su disco se llene con archivos de registro de varios gigabytes, debe asegurarse de que se llame a logrotate con la frecuencia suficiente; de ​​lo contrario, la rotación de registros no funcionará tan bien como desea.

en Ubuntu, puede cambiar fácilmente a la rotación por hora moviendo el script /etc/cron.daily/logrotate a /etc/cron.hourly/logrotate

O agregar

*/5 * * * * /etc/cron.daily/logrotate 

A su archivo /etc/crontab. Para ejecutarlo cada 5 minutos.

El size La opción ignora las opciones de tiempo diarias, semanales y mensuales. Pero minsize y maxsize lo tienen en cuenta.

La página de manual es un poco confusa allí. Aquí está mi explicación.

minsize gira solo cuando el archivo ha alcanzado un tamaño adecuado y ha transcurrido el período de tiempo establecido. p.ej. minsize 50 MB + diario Si el archivo alcanza los 50 MB antes de que termine el tiempo diario, seguirá creciendo hasta el día siguiente.

maxsize rotará cuando el registro alcance un tamaño establecido o haya pasado el tiempo apropiado. p.ej. maxsize 50 MB + diario. Si el archivo tiene 50 MB y aún no estamos en el día siguiente, se rotará el registro. Si el archivo tiene solo 20 MB y lo trasladamos al día siguiente, se rotará el archivo.

size rotará cuando el registro> tamaño. Independientemente de si se especifica cada hora/diario/semanal/mensual. Entonces, si tiene un tamaño de 100M, significa que cuando su archivo de registro es> 100M, el registro se rotará si se ejecuta logrotate cuando esta condición es verdadera. Una vez que se rota, el registro principal será 0 y una ejecución posterior no hará nada.

Así que en el caso del op. Específicamente 50 MB como máximo, usaría algo como lo siguiente:

/var/log/logpath/*.log {
    maxsize 50M
    hourly
    missingok
    rotate 8
    compress
    notifempty
    nocreate
}

Lo que significa que crearía 8 horas de registros como máximo. Y habría 8 de ellos con no más de 50 MB cada uno. Dado que dice que obtiene varios gigabytes cada día y, asumiendo que se acumulan a un ritmo bastante constante, y se usa el tamaño máximo, terminará cerca del máximo alcanzado para cada archivo. Por lo tanto, es probable que tengan cerca de 50 MB cada uno. Dado el volumen que construyen, necesitaría asegurarse de que logrotate se ejecute con la frecuencia suficiente para alcanzar el tamaño objetivo.

Como puse cada hora allí, necesitaríamos que logrotate se ejecutara un mínimo de cada hora. Pero dado que se acumulan para decir 2 gigabytes por día y queremos 50 MB... asumiendo una tasa constante de 83 MB por hora. Así que puedes imaginarte si ejecutamos logrotate cada hora, a pesar de establecer maxsize en 50, terminaremos con 83 MB de registro en ese caso. Entonces, en este caso, configurar la ejecución cada 30 minutos o menos debería ser suficiente.

Asegúrese de que logrotate se ejecute cada 30 minutos.

*/30 * * * * /etc/cron.daily/logrotate 

Especifica el tamaño del archivo de registro para activar la rotación. Por ejemplo size 50M activará una rotación de registros una vez que el archivo tenga un tamaño de 50 MB o más. Puedes usar el sufijo M para megabytes, k para kilobytes, y G por gigas. Si no se usa sufijo, se entenderá que significa bytes. Puedes consultar el ejemplo al final. Hay tres directivas disponibles size , maxsize y minsize . Según la página de manual:

minsize size
              Log  files  are  rotated when they grow bigger than size bytes,
              but not before the additionally specified time interval (daily,
              weekly,  monthly, or yearly).  The related size option is simi-
              lar except that it is mutually exclusive with the time interval
              options,  and  it causes log files to be rotated without regard
              for the last rotation time.  When minsize  is  used,  both  the
              size and timestamp of a log file are considered.

size size
              Log files are rotated only if they grow bigger then size bytes.
              If size is followed by k, the size is assumed to  be  in  kilo-
              bytes.  If the M is used, the size is in megabytes, and if G is
              used, the size is in gigabytes. So size 100,  size  100k,  size
              100M and size 100G are all valid.
maxsize size
              Log files are rotated when they grow bigger than size bytes even before
              the additionally specified time interval (daily, weekly, monthly, 
              or yearly).  The related size option is  similar  except  that  it 
              is mutually exclusive with the time interval options, and it causes
              log files to be rotated without regard for the last rotation time.  
              When maxsize is used, both the size and timestamp of a log file are                  
              considered.

Aquí hay un ejemplo:

"/var/log/httpd/access.log" /var/log/httpd/error.log {
           rotate 5
           mail [email protected]
           size 100k
           sharedscripts
           postrotate
               /usr/bin/killall -HUP httpd
           endscript
       }

Aquí hay una explicación para ambos archivos /var/log/httpd/access.log y /var/log/httpd/error.log . Se rotan cada vez que crece más de 100k de tamaño, y los archivos de registro antiguos se envían por correo (sin comprimir) a [email protected] después de pasar por 5 rotaciones, en lugar de ser eliminado. El sharedscripts significa que el postrotate El script solo se ejecutará una vez (después de que se hayan comprimido los registros antiguos), no una vez para cada registro que se rota. Tenga en cuenta que las comillas dobles alrededor del primer nombre de archivo al comienzo de esta sección permiten que logrotate rote los registros con espacios en el nombre. Se aplican las reglas normales de cotización de shell, con , y \ caracteres admitidos.


Linux
  1. Transferencia de archivos de Android para Linux:envíe archivos a Linux sin límites de tamaño

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

  3. CentOS / RHEL:Cómo rotar el archivo /var/log/wtmp y /var/log/btmp usando logrotate

  4. PID máximo en Linux

  5. ¿Para qué sirve Linux test -a command test?

10 ejemplos de comandos Cat de Linux para principiantes

Tutorial de comando Linux df para principiantes (8 ejemplos)

Comando ls en Linux para listar archivos

Configurando logrotate en Linux

Reducir el tamaño del archivo PDF en Linux

ver tamaño de archivo en linux