logrotate no rotará mis registros automáticamente


8

Tengo dos cajas de Debian diferentes (i386 v AMD) y tengo el mismo problema. logrotate no rotará mis registros automáticamente. Funciona bien cuando lo fuerzo manualmente como

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

Pero no está bien para mí.

La configuración no se modificó (al menos no la modifiqué), la caja AMD es una instalación nueva pero no hará su trabajo.

Si ha notado un problema similar, por favor ayúdeme.

Actualización (alguna salida del servidor):

logrotate -d http://pastebin.com/e6AshtGq

ls -l /var/log http://pastebin.com/Y2A4Li59

cat /etc/logrotate.conf http://pastebin.com/1h7Uwctr

ls -l /etc/logrotate.d http://pastebin.com/NvUAeszM


¿Tienes algún tipo de error? Verifique que "incluir /etc/logrotate.d" no esté comentado.
Torian

1
¿Cómo sabes que no rotará tus registros? Errores? ¿No sucede después de 30 días? ¿Estas cajas están abiertas todo el tiempo? ¿Logrotate está programado en cron?
EightBitTony

Puedo verificar que "include /etc/logrotate.d" esté instalado en ambos sistemas. Sin errores, excepto alguna entrada interesante en syslog, como ...rsyslogd was HUPed...no estar seguro de que esto signifique algo.
fabrik

@EightBitTony Estos son servidores, por lo que están en funcionamiento continuamente. Las configuraciones son más o menos las predeterminadas (la configuración de logrotate no fue modificada por mí), solo las cosas habituales instaladas. logrotate está incluido en la cron.dailyrotación, pero no sucederá.
fabrik

@Fabrik por favor agregue logrotate -d /etc/logrotate.conf salida a la pregunta
EightBitTony

Respuestas:


8

Verifique que cronrotate esté ejecutando su logrotate.

Editar:

De la discusión de comentarios, parece que cron no funciona correctamente. Tenía un cronjob en mi crontab sin usuario pero esto solo salió a la luz cuando reinicié el demonio cron

Mis sistemas ubuntu y centos tienen un /etc/cron.daily/logrotatearchivo cuyo contenido es

#!/bin/sh

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

Mi / etc / crontab tiene la siguiente línea para ejecutar los trabajos diarios

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily 

Esto se parece totalmente a mi configuración, excepto el hecho de que el mío no funciona :(
fabrik

¿Se está ejecutando cron comprueba la salida de ps -ef | grep cron| grep -v grep? Agregue un eco al comienzo de /etc/cron.daily/logrotate echo "logrotate runing" >>/tmp/logrotate.outy vea si se crea.
user9517

Parece que algo salió mal con mi crontab. cronestá en funcionamiento pero no ejecutará el trabajo diario de logrotate. Si ejecuto /etc/cron.daily/logrotatemanualmente, rota mis registros, /tmp/logrotate.outtambién escritos.
fabrik

¡No olvides que el trabajo diario no volverá a funcionar hasta mañana!
user9517

por supuesto, pero ayer lo modifiqué, /etc/cron.daily/logrotateasí que agregué un -fparámetro para forzar la rotación, pero hoy por la mañana mis registros no giraron.
fabrik

10

Tuve un problema similar pero crontabestaba funcionando y para algunos de los directorios de registro logrotatefuncionó, pero para algunos no. Cuando intenté ejecutar el logrotate manualmente, recibí algunos mensajes de error.

user@server:/var/log/apache2$ sudo /usr/sbin/logrotate -f /etc/logrotate.conf
error: error creating output file /var/log/apache2/access.log.1.gz: File exists
error: error creating output file /var/log/apache2/error.log.1.gz: File exists
...

Todos los *.1.gzarchivos tenían un tamaño de 0. Eliminé manualmente todos los archivos mencionados en el mensaje de error, volví a ejecutarlos sudo /usr/sbin/logrotate -f /etc/logrotate.confy funcionó.

Pensé que también debería compartir esta solución alternativa aquí, ya que este fue el primer resultado de búsqueda que surgió cuando estaba buscando el problema, pero la solución sugerida no funcionó para mí. Quizás esto ayude también a otros que están en la misma situación que yo.


gracias, también tuve este problema. Eliminó todos los archivos 1.gz y finalmente volvió a funcionar. ¡Qué horrible código!
Florian Heigl el

2

Sé que sé. Hilo de 5 años.

Solo pensé que si todavía aparece bastante alto en las búsquedas, contribuiré y daré mi solución al problema que encontré. Mis trabajos de rotación de registros no se manejaron automáticamente en uno de mis servidores. Forzar la rotación funcionó bien. Se me ocurrió una solución después de ejecutar el comando de rotación diaria a mano:

( cd / && run-parts --report /etc/cron.daily )

Luego vi el error que impedía que se dispararan los trabajos de logrorate:

/etc/cron.daily/logrotate:
error: iptraf-ng:2 duplicate log entry for /var/log/iptraf/*.log

Sí, tan simple como eso. Tenía dos archivos que definen los mismos registros para rotar (iptraf e iptraf-ng). Simplemente eliminar una de las definiciones de logrotate en conflicto para iptraf hizo el truco.

rm /etc/logrotate.d/iptraf

Otro problema podría ser un archivo / etc / crontab fallido. Lo que significa doble o triple verificar la sintaxis en ese archivo, ya que no proporciona ningún resultado que podría encontrar si la sintaxis es incorrecta. Sale silenciosamente después de una validación de sintaxis fallida.

Espero que esto ahorre algo de tiempo.


1

OK, tuve un problema similar.

"los registros no se están girando?" pero ejecutando logrotate manualmente (o ejecutando /etc/cron.dailyy los gira muy bien.

Entonces parece que cron simplemente "no se está ejecutando" diariamente. Impar. Así que busqué en el archivo de registro donde cron emite sus datos y vi "El token de autenticación ya no es válido; se requiere uno nuevo" para solucionar ese problema en particular, vea aquí


1

He visto que esto sucede a menudo con el tiempo a medida que cambian los servicios, y las opciones utilizadas en logrotate se han eliminado, lo que hace que logrotate falle cada día.

Para darle una idea, la última solución implicó que la opción notifyempty en el archivo logrotate de apache ya no sea válida, lo que a su vez hizo que logrotate se detuviera por completo.

Si bien esto se ha cubierto hasta cierto punto, me gustaría compartir el proceso que sigo al rastrear estos problemas:

  1. comience ejecutando #/usr/sbin/logrotate -f /etc/logrotate.confpara buscar cualquier error (por ejemplo, postfix: 3 'missingok').
    El archivo y el número de línea al que hace referencia es el archivo en la carpeta logrotate.d.
  2. Edite el archivo en cuestión: # vi /etc/logrotate.d/postfixelimine la opción que causa el problema y guarde el archivo.
  3. Repita el primer paso para ver si rota el trabajo, o si hay otros problemas.

Hay momentos en que el primer paso simplemente genera algo, pero usted sabe que hay un problema. Dado que todo esto comenzó porque los archivos de registro de un servicio no se estaban rotando, puede ver el proceso de rotación de registros buscando ese servicio específico para ver qué lo detiene. Para hacer esto, agregue la etiqueta detallada a su comando logrotate y observe para ver qué sucede en esa carpeta (si corresponde).


1

¡Verifique si hay parámetros de configuración de rotación rotados en conflicto!

Estaba luchando con este problema y finalmente leí algo de documentación sobre logrotate muy de cerca, encontré documentación útil aquí .

Había especificado un parámetro de tamaño y un parámetro de intervalo de rotación , cuando en realidad no quería ninguno. Quería que mis rotaciones ocurrieran exactamente cuando estaban programadas en cron.

  1. El parámetro de tamaño anulará cualquier intervalo de rotación. Por lo tanto, mis registros debían superar este parámetro antes de que pudieran rotarse. (Puedo ver cómo esto sería útil cuando estaba más preocupado por el uso del disco. Pero no es así como quería usarlo).
  2. El intervalo de rotación verificará cuándo ocurrió la última rotación y se asegurará de que la próxima rotación se retrase en la cantidad especificada. Pero, no tengo claro cómo controlas cuándo ocurre ese tiempo, se basa en la última vez que ocurrió una rotación.

Por lo tanto, elimine el parámetro Intervalo de rotación y el parámetro Tamaño . Entonces obtendrá una rotación cada vez que se llame logrotate sin tener que forzarlo.

EDITAR : OK, incluso esto no funciona del todo! Si el archivo de registro está por debajo de cierto umbral, los registros no rotarán. Entonces, cuando ejecuté un trabajo cron que giraba cada 2 minutos, no giraba los registros.

Puede ver información de depuración detallada si ejecuta logrotate -d. Esto proporciona información de depuración muy útil.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.