GNU/Linux >> Linux Esercitazione >  >> Linux

Esempio di configurazione e risoluzione dei problemi di logrotate

Applicare la conoscenza

Un articolo precedente Comprendere l'utilità logrotate ha descritto cosa fa logrotate e come è possibile configurarlo. Questo articolo applica queste conoscenze alla creazione di una soluzione di rotazione dei registri per uno o più host virtuali personalizzati. Identifica anche alcune opzioni per il test e la risoluzione dei problemi di logrotate.

Collegando tutto insieme:log degli host virtuali

Per mostrare come puoi usare logrotate per le tue applicazioni, ecco un esempio che tornerà utile a molte persone:rotazione dei log per i tuoi host virtuali personalizzati. L'esempio utilizza Apache ®, ma puoi modificarlo per altri server web come nNinx® o Lighttpd® , di solito semplicemente modificando lo script di post-ruotazione.

Innanzitutto, crea un file per contenere la configurazione che dice a logrotate cosa fare con i file di registro dell'host virtuale. Non modificare il file mainconfig o il file di configurazione del server web perché un futuro aggiornamento del pacchetto potrebbe voler sovrascrivere la configurazione. Invece, crea il tuo file con il seguente comando:

/etc/logrotate.d/virtualhosts

Questo esempio lancia tutti gli host virtuali in un unico file, ma se hai un host più occupato di altri potresti voler creare file di configurazione separati per gestire le esigenze dei tuoi diversi domini. L'esempio specifica diversi elementi che probabilmente sono già impostati nella tua configurazione principale, solo per coprire tutte le basi.

I file

Supponi di avere due domini virtuali, domain1.com e dominio2.com e che i file di registro per ciascuno si trovano in /home/demo/public_html/(nome dominio)/log .Il tuo file di configurazione deve dire a logrotate dove trovare i file di registro, quindi avviare il blocco di configurazione per loro:

/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {

Se hai più directory o file di log da aggiungere, inseriscili in quell'elenco.

Ruota

Quindi, assicurati che logrotate conservi solo tutti i vecchi log che desideri:

rotate 14

L'esempio utilizza 14 file per conservare due settimane di registri, ma puoi modificare quel numero per soddisfare le tue esigenze.

Intervallo

Ora, dì al server web di ruotare questi registri ogni giorno (di nuovo, cambialo se preferisci un intervallo più lungo):

daily

Taglia (opzionale)

L'impostazione della dimensione specifica una dimensione massima per i tuoi log. Quando il registro raggiunge tale dimensione, viene attivata una rotazione del registro.

size 50M

L'impostazione della dimensione è facoltativa qui perché sovrascrive qualsiasi condizione di rotazione basata sul tempo. Puoi specificare sia un intervallo di tempo che una dimensione massima, ma se lo fai, logrotate ignora l'impostazione dell'intervallo di tempo.

Compressione

Specifica se desideri comprimere questi registri quando vengono nuovamente archiviati. Questo esempio usa delaycompress comando per tenere conto del riavvio regolare di Apache, il che significa che devi anche attivare la compressione:

compress
delaycompress

Script condivisi

Potresti avere diversi host virtuali e ciò significherebbe che diversi registri ruotano. Per assicurarti che il server web venga riavviato solo al termine di tutte le rotazioni, aggiungi la seguente riga:

sharedscripts

Postrota

Specifica uno script post-rotazione per riavviare il server web:

postrotate
        /usr/sbin/apachectl graceful > /dev/null
endscript

E infine, chiudi il blocco di configurazione con una parentesi graffa:

}

L'intero file

Di seguito è riportato il file di configurazione completo:

/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {
        rotate 14
        daily
        compress
        delaycompress
        sharedscripts
        postrotate
                /usr/sbin/apachectl graceful > /dev/null
        endscript
}

Testare lo script osservando le cose quando vengono eseguiti i lavori cron notturni o eseguendologrotate manualmente con il seguente comando:

/usr/sbin/logrotate /etc/logrotate.conf

Se non ricevi alcun errore, dovresti essere a posto. Ma se vuoi essere sicuro puoi eseguire alcuni dei seguenti test.

Test logrotate

Se sospetti che logrotate stia avendo qualche problema, o vuoi semplicemente assicurarti che una nuova configurazione che hai messo in atto funzioni, puoi passare alcuni utili flag per logrotate quando lo esegui dalla riga di comando:

Prolisso

Il flag dettagliato, -v , dice a logrotate di dire ogni operazione che esegue. Questo aiuta quando vuoi scoprire perché logrotate non ruota un registro come previsto.

Debug

Il flag di debug, -d , dice a logrotate di eseguire i movimenti dei registri rotanti, ma non effettivamente ruotali. Può essere utile se stai lavorando su un server di produzione e vuoi testare un nuovo file di configurazione ma non vuoi che venga eseguita alcuna rotazione del registro effettiva quando esegui il test.

Il debug verifica anche che il file di configurazione sia formattato correttamente e che logrotate possa trovare i file di registro che ruoterebbe. Tuttavia, poiché non esegue le rotazioni, non verifica alcune parti del processo come gli script di post-rotazione.

Forza

Il flag di forza, -f , forza logrotate a ruotare tutti i log durante l'esecuzione, indipendentemente dal fatto che debbano essere ruotati normalmente in quel momento. Se vuoi testare a fondo le configurazioni di logrotate, questa è la bandiera da usare. Ricorda solo che logrotate ruota i registri ed elimina quelli vecchi in base alla configurazione, quindi non ruotare accidentalmente un registro recente che devi conservare.

Può anche essere utile se ritieni che logrotate debba ruotare un registro, ma non lo è. Forzare il problema ti aiuta a identificare:

  • Se il problema è che logrotate ritiene che il log non necessiti di rotazione (se esegui il flag di forza e il log è ruotato)
  • Se il problema è che logrotate non è in grado di influenzare il file di registro (se lo esegui e non succede nulla al registro).

Nota: Se hai configurato logrotate per aggiungere una data al nome di un registro archiviato, anche usando il flag di forza logrotate crea un nuovo archivio lo stesso giorno. Poiché in tal caso il nome da utilizzare per un secondo archivio è già stato preso, potrebbe essere necessario rinominare l'archivio più recente prima di poter forzare una rotazione del registro.

Combinazione di flag

Puoi usare i flag di test insieme in modo abbastanza efficace. Per avere logrotate dirti cosa farebbe se lo facessi ruotare tutto, ma non in realtà rotateanything, puoi combinarli tutti e tre:

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

Questo comando fornisce un lungo elenco di cose che logrotate farebbe, inclusi i file di registro che ruoterebbe e cosa farebbe durante quel processo.

Se poi vuoi testare tutte le configurazioni di rotazione nella loro interezza, inclusi gli script eseguiti dopo le rotazioni, puoi eseguire logrotate senza il flag di debug:

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

Logrotate ruota tutti i log. Scremare l'output dovrebbe aiutarti a rilevare eventuali problemi evidenti. Dovresti anche assicurarti che tutti i tuoi servizi funzionino ancora bene, che non ci sia nulla di sbagliato negli script post-rotazione e che tutti i registri siano stati ruotati.

Come ricorda logrotate

Se scopri che un registro non sta ruotando anche se è abbastanza vecchio da poterlo fare, esegui manualmente logrotate con il -f bandiera. Ma se vuoi sapere perché qualcosa non va, c'è un altro file che puoi controllare prima di forzare una rotazione:

/var/lib/logrotate.status

Logrotate memorizza le informazioni sull'ultima rotazione di ciascun file di registro nel file di stato. Se guardi dentro, vedi qualcosa del tipo:

logrotate state -- version 2
"/var/log/acpid.log" 2010-6-18
"/var/log/iptables.log" 2010-6-18
"/var/log/uucp.log" 2010-6-29
...

È un formato semplice, la posizione del file di registro è a sinistra e la data dell'ultima rotazione è a destra. A volte, le date sul tuo server si confondono (se stavi armeggiando con un servizio NTP o simili) e la data in cui un registro è stato ruotato l'ultima volta finisce per essere una data futura. Se è successo, lo vedi in questo file di stato.

Se vuoi controllare logrotate con un particolare file di registro ma non vuoi forzare la rotazione di tutto, puoi eliminare la voce del registro dal file logrotatestatus. Quindi, quando esegui normalmente logrotate, dovrebbe creare una nuova voce per il registro con la data odierna (anche se potrebbe non ruotare effettivamente il registro:utilizza quella prima esecuzione come linea di base se è solo basato su intervalli).

Riepilogo

Per qualcosa che viene eseguito silenziosamente in background ed esegue solo un tipo di attività, logrotate fa un bel po'. Dovresti essere in grado di impostare i file di configurazione newlogrotate per i tuoi scopi, creandoli da zero o copiando le configurazioni esistenti e modificandole in modo appropriato. E, soprattutto, puoi evitare che i tuoi log sfuggano al controllo.


Linux
  1. Ruota e archivia i registri con il comando logrotate di Linux

  2. Risoluzione dei problemi e debug della rete Linux?

  3. Procedura:replica e configurazione DRBD

  4. Procedura:MTR – Comprensione e risoluzione dei problemi di connettività di rete

  5. Posizioni dei file di registro comuni e dei file di configurazione per i servizi cPanel

Come impostare e gestire la rotazione dei registri utilizzando Logrotate in Linux

Migliore configurazione PHP-FPM:calcolo facile e semplice

Configurazione e guida del bootloader Linux LILO

Bootloader e configurazione Linux di Ubuntu GRUB

Gestire i log con Logrotate su Ubuntu

Journalctl:come leggere e modificare i log di Systemd