Perché il mio logrotate CentOS viene eseguito in orari casuali?


10

Ho inserito un logrotatefile di configurazione /etc/logrotate.d/e mi aspettavo che i registri ruotassero in un momento coerente; tuttavia, non ... i tempi di rotazione del registro sono apparentemente casuali +/- un'ora.

Perché gli orari di inizio della rotazione del registro sono casuali e come posso modificarlo?


Informativo: il mio file di configurazione logrotate è simile a questo ...

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

Risposte:


10

La chiave è sapere che CentOS esegue gli script in /etc/cron.{daily,weekly,monthly} da anacron... /etc/anacrontabè l'impostazione RANDOM_DELAY, che fa ciò che ci si potrebbe aspettare (ritarda fino a RANDOM_DELAYpochi minuti prima di iniziare il lavoro) ...

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

Impostazione RANDOM_DELAY=0/ START_HOURS_RANGE=3risolto il problema ...

MODIFICARE

Dopo ulteriori riflessioni, ho intenzione di rimuovere anacrone installare normale vixie cron...


Ricorda che se il tuo server è spento per qualche motivo quando si suppone che anacron sia in esecuzione, verrà eseguito una volta dopo l'avvio del sistema. In questo modo è ancora possibile ottenere le rotazioni del registro in momenti diversi. Probabilmente non è un grosso problema, ma vale la pena notare.
AngerClown

L'impostazione di START_HOURS_RANGE su un valore singolo (= 3) non funzionerà, poiché questo var prevede un intervallo, non il singolo numero. Quindi dovrebbe essere 3-4 nell'esempio sopra.
Slavik il

6

Non è la risposta, ma di recente stavo cercando di capirlo per un altro motivo e non sono riuscito a trovare documentazione su come Redhat 6, Centos, ecc. Eseguano cron. Ecco cosa ho invertito:

  1. crond funziona ancora all'avvio del sistema - carica tutti i file /etc/cron.d
  2. /etc/cron.d/0hourly esegue tutti i file /etc/cron.hourly
  3. /etc/cron.hourly/0anacron piste anacron
  4. carichi di anacron /etc/anacrontab
  5. /etc/anacrontabpiste (via run-parts) /etc/cron.daily, /etc/cron.weeklye/etc/cron.monthly

Quindi, è più complicato rispetto alle versioni precedenti.

È possibile ripristinare il vecchio comportamento aggiungendo nuovamente le voci orarie, settimanali e mensili in /etc/crontab(che ora è vuota), ma anacrontabdovrà essere aggiornato anche. Questo potrebbe o meno interrompere futuri aggiornamenti ...


4

Altre risposte riguardano come ma non necessariamente perché . Il motivo è di impedire che processi cron contemporanei simultanei uccidano la tua infrastruttura. (Immagina l'archiviazione condivisa, o forse 1000 server in esecuzione su un host di macchine virtuali, o solo lavori notturni che colpiscono un servizio di rete.)

Risolvo sempre questo problema per la rotazione dei registri in modo specifico sui miei sistemi spostando il processo di rotazione dei registri specifico da cron.dailyuna voce con un tempo programmato cron.d. In questo modo, ottieni ancora scaglioni scaglionati per servizi come gli aggiornamentib dove il tempo non è davvero essenziale, ma i tempi coerenti per la rotazione dei registri.

Naturalmente, quando arrivi a una certa dimensione, vorrai comunque che tutti i tuoi log vengano inviati dall'host a un log server, e quindi il tempo di rotazione dei file sui singoli nodi è meno importante, dal momento che quelli sono lì solo per praticità (in genere seguendo la coda del file) o come fallback di ultima istanza. Quindi, imposteresti sicuramente la rotazione sul tuo log server in modo che sia sistematica.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.