rotate rotacion logs log forzar ejemplos ejecucion conf linux centos logrotate

linux - forzar - rotacion de logs centos



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

Como lo mencionó Zeeshan, las opciones logrotate size , size minsize , size maxsize son disparadores para 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 del archivo alcanzado o el tiempo adecuado, los registros no se rotarán.

Las opciones de tamaño no aseguran que sus registros rotados también sean del tamaño especificado. Para que estén cerca del tamaño especificado, debe llamar al programa logrotate con la frecuencia suficiente. Esto es crítico.

Para los 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 menudo a logrotate. esto es crítico

Por lo tanto, para evitar que el disco se llene con los archivos de registro de varios gigabytes, debe asegurarse de que se consiga con frecuencia la ejecución de logrotate, 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.

La opción de size ignora las opciones de tiempo diarias, semanales y mensuales. Pero minsize & maxsize téngalo en cuenta.

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

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

maxsize girará cuando el registro alcance un tamaño establecido o el tiempo apropiado haya pasado. Ej. maxsize 50MB + diariamente. Si el archivo es de 50 MB y aún no estamos al día siguiente, el registro se rotará. Si el archivo solo tiene 20 MB y pasamos al día siguiente, el archivo se rotará.

size girará cuando el registro> tamaño. Independientemente de si se especifica hora / día / semanal / mensual. Entonces, si tiene un tamaño de 100M, esto significa que cuando su archivo de registro sea> 100M, el registro se rotará si se ejecuta logrotate cuando esta condición es verdadera. 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, 50MB 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 máx. Y habría 8 de ellos a no más de 50MB cada uno. Ya que dice que está obteniendo varios gigabytes cada día y suponiendo que se acumulan a una velocidad bastante constante, y que se utiliza el tamaño máximo, terminará cerca del máximo alcanzado para cada archivo. Así que probablemente estarán cerca de 50MB cada uno. Dado el volumen que construyen, tendría que asegurarse de que logrotate se ejecute con la frecuencia suficiente para cumplir con el tamaño objetivo.

Desde que he puesto allí cada hora, necesitaríamos un ejecutotate para ejecutarse un mínimo de cada hora. Pero ya 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 imaginar que si ejecutamos logrotate cada hora, a pesar de establecer un tamaño máximo de 50, en ese caso terminaremos con 83 MB de registro. Entonces, en este caso, establecer la ejecución a cada 30 minutos o menos debería ser suficiente.

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

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

usamos logrotate y se ejecuta a diario ... ahora hemos tenido algunas situaciones en las que los registros crecieron significativamente (lea: gigbaytes) y mataron a nuestro servidor. Así que ahora nos gustaría establecer un tamaño de archivo máximo para los registros ...

¿Puedo añadir esto al logrotate.conf?

tamaño 50M

y luego se aplicaría a todos los archivos de registro? ¿O necesito establecer esto en una base por registro?

¿O algún otro consejo?

(ps. entiendo que si desea que se le notifique si el registro crece como se describe y lo que queremos hacer no es lo ideal, pero es mejor que no poder iniciar sesión porque no hay espacio disponible)

gracias, Sean


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

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 crecen más de 100k, y los archivos de registros antiguos se envían (sin comprimir) a [email protected] después de pasar por 5 rotaciones, en lugar de eliminarse. El sharedscripts significa que el script postrotate solo se ejecutará una vez (después de que se hayan comprimido los registros antiguos), no una vez por cada registro que se gire. Tenga en cuenta que las comillas dobles alrededor del primer nombre de archivo al principio de esta sección permiten que logrotate rote los registros con espacios en el nombre. Se aplican las reglas normales de comillas de shell, con, y / caracteres compatibles.