Quale strumento di rotazione del registro preferisci?
Quale strumento di rotazione del registro preferisci?
Risposte:
Nella mia esperienza, logrotate è fantastico. È molto flessibile e funziona bene con la maggior parte dei software.
Tuttavia, ci sono alcuni problemi con esso, e poiché cronolog è principalmente una funzione di rotazione del registro web, scriverò la mia esperienza con logrotate + apache che è stata problematica:
Quando si ruotano i log, è necessario notificare ad apache che un log viene ruotato, come anche se logrotate rinomina access.log in access.log.1, apache continuerà a scrivere su access.log.1, mentre sta scrivendo sull'inode, e rinominare il file non influisce sul numero dell'inode.
Su debian etch (e probabilmente su molte altre distro), logrotate viene utilizzato per ruotare i log di apache. Ora, apache ha un riavvio grazioso che avvisa i processi figlio di apache di uscire una volta terminata la gestione delle connessioni esistenti, apache quindi rilegge la sua configurazione, genera nuovi processi figlio, che iniziano a scrivere in un nuovo file di registro (nel caso in cui il precedente fosse ruotato).
Sembra un'ottima soluzione, tuttavia il riavvio grazioso non funziona sempre in determinate condizioni (come un carico pesante), quindi gli sviluppatori debian hanno deciso di utilizzare un riavvio di Apache invece di un riavvio grazioso, nella configurazione di Apache Logrotate. Sfortunatamente questo fa sì che tutte le connessioni vengano interrotte in una sola volta, il che è molto male per i siti molto caricati. Inoltre, il riavvio di apache può anche causare problemi come l'arresto e il mancato avvio di apache (anche in determinate situazioni di carico), vedere i collegamenti ai bug di seguito per i dettagli.
La linea di fondo è che logrotate è eccezionale, ma può portare a determinati problemi per determinati programmi. Non ho molta esperienza con cronolog, ma mentre scrive i log attraverso una pipe, non richiede alcun ricaricamento di Apache quando ruota i file di log, il che sostanzialmente risolve tutto ciò che è descritto sopra.
Bug debian logrotate / apache correlati:
Preferisco cronolog, ma non è una preferenza molto forte.
logrotate dove viene avviato cron, e se un sistema è inattivo per qualche motivo quando dovrebbe avvenire la rotazione, i file di registro non verranno ruotati.
Mi piace anche che i file di registro abbiano la data (% Y% m.combined.access.log) nel nome perché tengo questi registri per molto tempo. Sulla maggior parte dei sistemi, per impostazione predefinita, apache logrotate nominerà i file access.log, access.log.1, ecc. Potrebbe essere possibile utilizzare una data nei file di log con logrotate, ma non sono riuscito a capire come fare l'ultima volta che ho guardato.
Logrotate usato sempre. È quello che Debian usa di default e non ho mai avuto lamentele con esso.
Io uso quasi esclusivamente cronolog
sopra logrotate
.
logrotate
viene fornito con Debian e gli consento di continuare a funzionare per i servizi di sistema come i log del server di posta. Ma per Apache e lighttpd
file di registro, è tutto cronolog
.
Uno dei motivi per cui utilizzo cronolog
è che tutta la configurazione avviene nella riga del file di registro della configurazione del server Web
ad esempio in un lighttpd
file di configurazione, è possibile inserire:
accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%W-access.log"
E tutti ottengono un nuovo file di registro ogni settimana senza alcuna altra configurazione. Oppure potresti essere creativo e fare qualcosa del tipo:
accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%m/%a-access.log"
E ottieni un file di registro che mostra il traffico per giorno della settimana. ad es. tutte le domeniche, tutti i martedì.
La cosa migliore è che anche se il server è inattivo per un certo periodo di tempo, al riavvio verrà utilizzato il file di registro corretto.