Saltar al contenido

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

Queremos mostrarte la mejor respuesta que hemos encontrado en todo internet. Nosotros queremos que te sea de mucha utilidad y si deseas aportar cualquier detalle que nos pueda ayudar a crecer puedes hacerlo..

Solución:

Como mencionó Zeeshan, las opciones de logrotate size, minsize, maxsize son 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 que se haya alcanzado o el tiempo apropiado, los registros no se rotarán.

Las opciones de tamaño no garantizan que los registros rotados también sean del tamaño especificado. Para que se acerquen al tamaño especificado, debe llamar al programa logrotate con la suficiente frecuencia. Esto es fundamental.

Para archivos de registro que se acumulan muy rápidamente (por ejemplo, en cientos de MB al 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 suficiente frecuencia; de lo contrario, la rotación del registro no funcionará tan bien como desea.

en Ubuntu, puede cambiar fácilmente a la rotación horaria 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.

los size La opción ignora las opciones de tiempo diario, semanal y mensual. Pero minize y maxsize lo tienen en cuenta.

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

minsize gira solo cuando el archivo ha alcanzado un tamaño apropiado y ha pasado el período de tiempo establecido. por ejemplo, tamaño mínimo 50 MB + al día Si el archivo alcanza los 50 MB antes de que se supere el tiempo diario, seguirá creciendo hasta el día siguiente.

maxsize rotará cuando el tronco alcance un tamaño establecido o haya pasado el tiempo apropiado.

por ejemplo, un tamaño máximo de 50 MB o más al día. 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 pasamos al día siguiente, el archivo se rotará.

size rotará cuando el registro> tamaño. Independientemente de si se especifica por 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 true. Una vez que se gira, el registro principal será 0 y una ejecución posterior no hará nada.

Así que en el caso de la operación. 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. Como está diciendo que está obteniendo varios gigabytes cada día y asumiendo que se acumulan a un ritmo bastante constante, y se usa el tamaño máximo, terminará con 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 generan, debería asegurarse de que logrotate se ejecute con la frecuencia suficiente para alcanzar el tamaño objetivo.

Como he puesto las horas allí, necesitaríamos que logrotate se ejecute al menos 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. Entonces, puede imaginar que 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, establecer la ejecución en 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 de la archivo de registro para activar la rotación. Por ejemplo size 50M activará una rotación de registro una vez que el archivo tenga un tamaño de 50 MB o más. Puedes usar el sufijo M por megabytes, k por kilobytes, y G por gigabytes. Si no se utiliza ningún sufijo, se entenderá por bytes. Puede 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 en tamaño, y los archivos de registros antiguos se envían por correo (sin comprimir) a [email protected] después de pasar por 5 rotaciones, en lugar de ser eliminado. los 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 por cada registro que se haya rotado. Tenga en cuenta que las comillas dobles alrededor del primer nombre de archivo al principio de esta sección permiten que logrotate gire los registros con espacios en el nombre. Se aplican las reglas de cotización de shell normales, con ,, y caracteres admitidos.

Te mostramos reseñas y puntuaciones

Si haces scroll puedes encontrar las notas de otros desarrolladores, tú asimismo eres capaz dejar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *