Warum wird mein CentOS-Logrotate zu zufälligen Zeiten ausgeführt?

9

Ich habe eine logrotateKonfigurationsdatei eingefügt /etc/logrotate.d/und erwartet, dass sich die Protokolle zu einem konsistenten Zeitpunkt drehen. Sie sind jedoch nicht ... Protokollrotationszeiten sind scheinbar zufällig +/- eine Stunde.

Warum sind die Startzeiten der Protokollrotation zufällig und wie kann ich dies ändern?


Information: Meine logrotate Konfigurationsdatei sieht so aus ...

/opt/backups/network/*.conf {
        copytruncate
        rotate 30
        daily
        create 644 root root
        dateext
        maxage 30
        missingok
        notifempty
        compress
        delaycompress
        postrotate
            ## Create symbolic links in daily/
            PATH=`/usr/bin/dirname $1`;
            FILE=`/bin/basename $1`;
            /bin/ln -s $1 $PATH/daily/$FILE
        endscript
}
Mike Pennington
quelle

Antworten:

10

Der Schlüssel ist , zu wissen , dass CentOS die Skripte in /etc/cron.{daily,weekly,monthly läuft} von anacron... /etc/anacrontabsetzt RANDOM_DELAY, das tut , was man erwarten könnte (es Verzögerungen bis RANDOM_DELAYMinuten vor Beginn der Arbeit) ...

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

Problem einstellen RANDOM_DELAY=0/ START_HOURS_RANGE=3behoben ...

BEARBEITEN

Nach weiteren Überlegungen werde ich anacronnormale Vixie entfernen und installieren cron...

Mike Pennington
quelle
Denken Sie daran, dass wenn Ihr Server aus irgendeinem Grund ausgeschaltet ist, wenn anacron ausgeführt werden soll, er irgendwann nach dem Start des Systems ausgeführt wird. So können Sie immer noch Protokollrotationen zu unterschiedlichen Zeiten erhalten. Wahrscheinlich kein großes Problem, aber erwähnenswert.
AngerClown
Das Setzen von START_HOURS_RANGE auf einen einzelnen Wert (= 3) funktioniert nicht, da dieser var-Erwartungsbereich nicht die einzelne Zahl ist. Im obigen Beispiel sollte es also 3-4 sein.
Slavik
6

Nicht die Antwort, aber ich habe kürzlich versucht, dies aus einem anderen Grund herauszufinden, und konnte keine Dokumentation darüber finden, wie Redhat 6, Centos usw. cron ausführen. Folgendes habe ich rückgängig gemacht:

  1. crond läuft noch beim Systemstart - es lädt alle Dateien in /etc/cron.d
  2. /etc/cron.d/0hourly führt alle Dateien in aus /etc/cron.hourly
  3. /etc/cron.hourly/0anacron läuft anacron
  4. Anakronlasten /etc/anacrontab
  5. /etc/anacrontabLäufe (über run-parts) /etc/cron.daily, /etc/cron.weeklyund/etc/cron.monthly

Es ist also komplizierter als in früheren Versionen.

Es ist möglich, das alte Verhalten wiederherzustellen, indem die stündlichen, wöchentlichen und monatlichen Einträge wieder in /etc/crontab(die jetzt leer sind) hinzugefügt anacrontabwerden. Sie müssen jedoch ebenfalls aktualisiert werden. Dies kann zukünftige Updates beschädigen oder nicht ...

AngerClown
quelle
4

Andere Antworten beziehen sich auf das Wie, aber nicht unbedingt auf das Warum . Der Grund dafür ist, dass gleichzeitig nächtliche Cron-Jobs Ihre Infrastruktur nicht beschädigen. (Stellen Sie sich gemeinsam genutzten Speicher oder vielleicht 1000 Server vor, die auf einem VM-Host ausgeführt werden, oder nur nächtliche Jobs, die einen Netzwerkdienst betreffen.)

Ich löse dieses Problem für die Protokollrotation immer auf meinen Systemen, indem ich den spezifischen Protokollrotationsjob von cron.dailyeinem Eintrag mit einer fest codierten Zeit in verschiebe cron.d. Auf diese Weise erhalten Sie immer noch die gestaffelten Läufe für Dienste wie updatedb, bei denen die Zeit nicht unbedingt erforderlich ist, sondern konsistente Zeiten für die Protokollrotation.

Wenn Sie eine bestimmte Größe erreichen, möchten Sie natürlich, dass alle Ihre Protokolle ohnehin vom Host an einen Protokollserver gesendet werden. Die Rotationszeit der Dateien auf den einzelnen Knoten ist dann weniger wichtig, da diese nur für diese Zwecke vorgesehen sind Bequemlichkeit (normalerweise nach dem Ende der Datei) oder als letzter Ausweg. Dann würden Sie die Rotation auf Ihrem Protokollserver definitiv so einstellen, dass sie systematisch ist.

mattdm
quelle