Logrotate è un'utilità progettata per gli amministratori che gestiscono server che producono un volume elevato di file di registro. Li aiuta a risparmiare spazio su disco, oltre a evitare il potenziale rischio di rendere un sistema non rispondente a causa della mancanza di spazio su disco.
Normalmente, una soluzione per evitare questo tipo di problema è l'installazione una partizione separata o un volume logico per un /var
punto di montaggio. Tuttavia, logrotate può anche essere una valida soluzione a questo problema, soprattutto se è troppo tardi per spostare tutti i log in partizioni diverse.
In questo tutorial, mostreremo come configurare il servizio logrotate su Red Hat Enterprise Linux, in modo da poter riprendere i file di log sotto il tuo controllo.
In questo tutorial imparerai:
- Come utilizzare l'utilità logrotate su RHEL
- Dove sono archiviati i file di configurazione di logrotate
- Come impostare una configurazione logrotate personalizzata
- Come testare un'implementazione logrotate

Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | Red Hat Enterprise Linux |
Software | logrotate |
Altro | Accesso privilegiato al tuo sistema Linux come root o tramite sudo comando. |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Cos'è logrotate?
Logrotate offre la possibilità a un amministratore di sistema di ruotare e archiviare sistematicamente tutti i file di registro prodotti dal sistema, riducendo così il requisito di spazio su disco del sistema operativo. Per impostazione predefinita, logrotate viene invocato una volta al giorno utilizzando uno scheduler cron dalla posizione /etc/cron.daily/
.
# ls /etc/cron.daily/ cups logrotate makewhatis.cron mlocate.cron prelink readahead.cron rhsmd tmpwatch
Configurazione logrotate
La configurazione di Logrotate viene eseguita modificando due file di configurazione separati:
- /etc/logrotate.conf
- file di configurazione specifici del servizio archiviati in /etc/logrotate.d/
Il principale logrotate.conf
contiene una configurazione generica. Ecco un file di configurazione logrotate predefinito logrotate.conf
:
weekly rotate 4 create dateext include /etc/logrotate.d /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 }
- Riga 1 – settimanale l'opzione di configurazione garantisce una rotazione settimanale di tutti i file di registro definiti nel file di configurazione principale e nella directory /etc/logrotate.d/.
- Riga 2 – ruota 4 assicura che logrotate mantenga un backup di 4 settimane di tutti i file di registro
- Riga 3 – crea opzione indica a logrotate di creare nuovi file di registro vuoti dopo ogni rotazione
- Riga 4 – dateext aggiunge un'estensione a tutti i file di registro ruotati sotto forma di data in cui ogni particolare file di registro è stato elaborato da logrotate
- Riga 5 – includi tutte le altre configurazioni dalla directory /etc/logrotate.d
- La riga 6 – 11 contiene una configurazione di rotazione del registro di servizio specifica
Al contrario di logrotate.conf
, una directory /etc/logrotate.d/
contiene uno specifico file di configurazione del servizio utilizzato da logrotate. Nella prossima sezione creeremo un esempio di configurazione logrotate dello scheletro.
Inclusi nuovi log di servizio da loggare
In questa sezione aggiungeremo un nuovo file di registro in una configurazione logrotate. Diciamo che abbiamo un file di registro chiamato /var/log/linuxserver.log
, seduto nel nostro /var/log
directory che deve essere ruotata su base giornaliera.
Per prima cosa dobbiamo creare un nuovo file di configurazione logrotate per ospitare il nostro nuovo file di registro:
# vi /etc/logrotate.d/linuxserver
Inserisci il seguente testo in /etc/logrotate.d/linuxserver:
/var/log/linuxserver.log { rotate 7 daily compress delaycompress missingok notifempty create 660 linuxuser linuxuser }
Questo file di configurazione verrà eseguito quotidianamente, creerà un massimo di 7 archivi di proprietà di linuxuser e linuxuser group con 660 autorizzazioni, comprimerà tutti i log ed escluderà solo i file di log vuoti e di ieri. Ecco alcune parole chiave di configurazione logrotate selezionate. Per un tutorial completo, controlla la pagina man di logrotate.
ogni giorno | I file di registro vengono ruotati ogni giorno. |
settimanale | I file di registro vengono ruotati se il giorno della settimana corrente è inferiore al giorno della settimana dell'ultima rotazione o se è trascorsa più di una settimana dall'ultima rotazione. Normalmente è lo stesso della rotazione dei registri il primo giorno della settimana, ma se logrotate non viene eseguito ogni notte, alla prima opportunità valida avverrà una rotazione del registro. |
mensile | I file di registro vengono ruotati la prima volta che logrotate viene eseguito in un mese (normalmente il primo giorno del mese). |
notifica vuota | Non ruotare il registro se è vuoto (questo ha la precedenza sull'opzione ifempty). |
nocompress | Le versioni precedenti dei file di registro non sono compresse. |
compressione del ritardo | Pospone la compressione del file di registro precedente al ciclo di rotazione successivo. Questo ha effetto solo se usato in combinazione con compress. Può essere utilizzato quando non è possibile dire a un programma di chiudere il proprio file di registro e quindi potrebbe continuare a scrivere sul file di registro precedente per un po' di tempo. |
comprimi | Le versioni precedenti dei file di registro sono compresse con gzip per impostazione predefinita. |
indirizzo e-mail | Quando un registro viene annullato a rotazione, viene inviato all'indirizzo. Se nessun messaggio di posta deve essere generato da un registro particolare, è possibile utilizzare la direttiva nomail. |
manca bene | Se manca il file di registro, passa a quello successivo senza emettere un messaggio di errore. |
Una volta che il tuo file di configurazione è pronto, copialo semplicemente nella directory logrotate e cambia proprietario e autorizzazioni:
# cp linuxserver /etc/logrotate.d/ # chmod 644 /etc/logrotate.d/linuxserver # chown root.root /etc/logrotate.d/linuxserver
Test di una nuova configurazione di Logrotate
Ora che la configurazione logrotate è stata implementata, segui i passaggi seguenti per testarla.
- Crea un file di log di esempio, se non esiste già:
# echo "rotate my log file" > /var/log/linuxserver.log
- Una volta che il file di registro è a posto, forza logrotate a ruotare tutti i registri con
-f
opzione.# logrotate -f /etc/logrotate.conf
Attenzione:il comando precedente ruoterà tutti i tuoi log definiti in
/etc/logrotate.d
directory. - Ora visita di nuovo la tua /var/log/directory e conferma che il file di registro è stato ruotato e che è stato creato un nuovo file di registro.
Pensieri conclusivi
Come già accennato in precedenza, il modo migliore per evitare che il tuo sistema venga intasato dai file di registro è creare una partizione/volume logico separato per il tuo /var/
o ancora meglio /var/log
directory. Tuttavia, anche in questo caso logrotate può aiutarti a risparmiare spazio su disco comprimendo i file di registro. Logrotate può anche aiutarti ad archiviare i tuoi file di registro per un riferimento futuro creando una copia aggiuntiva o inviandoti tramite e-mail tutti i file di registro appena ruotati.