Dlaczego mój logrotat CentOS działa losowo?

10

I umieścić logrotateplik konfiguracyjny w /etc/logrotate.d/i oczekuje dzienniki obracają się spójny czas; jednak nie ... czasy rotacji dziennika są pozornie losowe +/- jedna godzina.

Dlaczego czasy rozpoczęcia rotacji dziennika są losowe i jak mogę to zmienić?


Informacyjny: mój plik konfiguracyjny Logrotate wygląda następująco ...

/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
źródło

Odpowiedzi:

10

Kluczem jest wiedza, że ​​CentOS uruchamia skrypty w /etc/cron.{daily,weekly,monthly} od anacron... /etc/anacrontabjest ustawienie RANDOM_DELAY, które robi to, czego można się spodziewać (opóźnia się nawet RANDOM_DELAYkilka minut przed rozpoczęciem zadania) ...

# /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

Ustawienie RANDOM_DELAY=0/ START_HOURS_RANGE=3naprawiono problem ...

EDYTOWAĆ

Po dalszych przemyśleniach zamierzam usunąć anacroni zainstalować normalne vixie cron...

Mike Pennington
źródło
Pamiętaj, że jeśli twój serwer jest wyłączony z jakiegoś powodu, kiedy anacron ma się uruchomić, uruchomi się, gdy jakiś czas po uruchomieniu systemu. Dzięki temu nadal możesz otrzymywać rotacje dzienników w różnych momentach. Prawdopodobnie nie jest to duży problem, ale warto zauważyć.
AngerClown,
Ustawienie START_HOURS_RANGE na pojedynczą wartość (= 3) nie będzie działać, ponieważ ta zmienna oczekuje zakresu, a nie pojedynczej liczby. W powyższym przykładzie powinno to być 3-4.
Slavik
6

Nie odpowiedź, ale ostatnio próbowałem to rozgryźć z innego powodu i nie mogłem znaleźć żadnej dokumentacji na temat tego, jak Redhat 6, Centos itp. Działają cron. Oto, co zaprojektowałem wstecz:

  1. crond nadal działa przy starcie systemu - ładuje wszystkie pliki do /etc/cron.d
  2. /etc/cron.d/0hourly uruchamia wszystkie pliki w /etc/cron.hourly
  3. /etc/cron.hourly/0anacron biegnie anacron
  4. ładunki anakronowe /etc/anacrontab
  5. /etc/anacrontabtrasy (VIA run-parts) /etc/cron.daily, /etc/cron.weeklya/etc/cron.monthly

Jest to więc bardziej skomplikowane niż w poprzednich wersjach.

Możliwe jest przywrócenie starego zachowania poprzez dodanie z powrotem wpisów godzinnych, tygodniowych i miesięcznych /etc/crontab(które są teraz puste), ale anacrontabnależy je również zaktualizować. To może, ale nie musi, złamać przyszłe aktualizacje ...

AngerClown
źródło
4

Inne odpowiedzi pokrycie jak ale niekoniecznie dlaczego . Powodem jest utrzymanie jednoczesnych nocnych crona od zabijania infrastruktury. (Wyobraź sobie pamięć współdzieloną, a może 1000 serwerów działających na jednym hoście VM lub tylko nocne zadania, które uderzyły w niektóre usługi sieciowe).

Zawsze rozwiązuję ten problem dotyczący rotacji logów w moich systemach, przenosząc konkretne zadanie rotacji logów z cron.dailypozycji na sztywno określony czas cron.d. W ten sposób nadal masz rozłożone biegi dla usług takich jak updatedb, gdzie czas naprawdę nie jest niezbędny, ale spójny czas dla rotacji logów.

Oczywiście, kiedy osiągniesz określony rozmiar, i tak wszystkie twoje dzienniki będą wysyłane z hosta do serwera logów, a wtedy czas rotacji plików w poszczególnych węzłach jest mniej ważny, ponieważ są one tylko dla wygoda (zwykle po ogonie pliku) lub w ostateczności. Następnie zdecydowanie ustawiłeś rotację na swoim serwerze logów na systematyczne.

mattdm
źródło