introduzione
Logrotate è un'utilità Linux che semplifica l'amministrazione dei file di registro. Di solito viene eseguito una volta al giorno tramite un processo cron e gestisce i log in base a regole / impostazioni personalizzate dal suo file di configurazione.
Alcune delle sue utili impostazioni includono rotazione automatica, compressione, rimozione e invio di file di registro.
Installazione
La maggior parte dei sistemi Linux viene fornita con Logrotate installato per impostazione predefinita. Verifica di averlo installato sulla tua istanza Vultr eseguendo il logrotate
comando. Vedrai un output con la versione di Logrotate in esecuzione sul tuo server.
Se non lo hai installato, esegui i passaggi seguenti per procedere con l'installazione.
Sui sistemi Debian / Ubuntu:
sudo apt-get update
sudo apt-get install logrotate
Sui sistemi Redhat / CentOS:
sudo yum update
sudo yum install logrotate
Comprensione di Logrotate
Le parti mobili che fanno funzionare logrotate sono:
-
Lo strumento reale logrotate
.
-
Il file di configurazione di Logrotate si trova in /etc/logrotate.conf
. Questo file contiene la configurazione per tutti i file di registro gestiti da Logrotate.
-
Un cron job giornaliero /etc/cron.daily/logrotate
che emette il comando logrotate per essere eseguito in base alle impostazioni nel suo file di configurazione. Se questo cron job non esiste sul tuo sistema, crealo e aggiungi lo snippet di codice qui sotto.
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
Altro sulla configurazione
Se dai una sbirciatina dentro /etc/logrotate.conf
, vedrai che ha la linea include /etc/logrotate.d
in esso. Quello che fa questa linea è dire a Logrotate di guardare all'interno della /etc/logrotate.d
directory ed eseguire tutti i file di configurazione in essa contenuti. Questa directory è in genere dove le applicazioni installate sul tuo sistema linux aggiungeranno le loro configurazioni logrotate. Ad esempio, Apache2 in genere crea un /etc/logrotate.d/apache
file di configurazione al momento dell'installazione.
Gestione dei registri
Per testare Logrotate, dovremo:
-
Crea un nuovo file di registro di prova con 1 MB o dati casuali:
sudo base64 /dev/urandom | head -c 1000000 > /tmp/testfile.log
-
Crea una nuova configurazione di Logrotate eseguendo sudo nano /etc/logrotate.d/testlog
. Copia il seguente frammento in un file vuoto e premi Ctrl + X per salvare ed uscire.
/tmp/testfile.log {
size 1k
copytruncate
missingok
rotate 5
}
Le opzioni di configurazione nello snippet sopra indicano a Logrotate di:
size 1k
: Ruota il file di registro se la dimensione è maggiore o uguale a 1k.
missingok
: Ignora i messaggi di errore se testfile.log
non esiste.
copytruncate
: Crea una copia del file di registro corrente e poi tronca. Ciò risulta utile quando un'applicazione non può chiudere il suo file di registro perché viene continuamente aggiunta ad esso.
rotate 5
: limita il numero di rotazioni dei file di registro a 5. Ciò eliminerà le vecchie versioni dei file di registro superiori a 5 giorni.
NOTA: è possibile visualizzare tutte le opzioni di configurazione per logrotate qui .
-
Esegui il comando Logrotate manualmente:
sudo logrotate /etc/logrotate.conf
Dopo aver eseguito il comando sopra, elencare tutti i file nella directory tmp ls -l /tmp
per confermare che testfile.log è stato effettivamente ruotato. Dovresti vedere un elenco simile al seguente che mostra che testfile.log
è stato effettivamente ruotato. Questo continuerà ogni giorno e manterrà le ultime 5 copie.
[root@vultr ~]# ls -l /tmp
-rw-r--r-- 1 root root 0 Nov 14 23:31 testfile.log
-rw-r--r-- 1 root root 1000000 Nov 14 23:30 testfile.log-20141114
-rw-r--r-- 1 root root 634 Nov 10 00:23 vultr_ipv6
-rw-------. 1 root root 0 Oct 15 20:44 yum.log
Conclusione
I registri possono creare rapidamente problemi su un server diventando troppo grandi e causando problemi di spazio su disco. La gestione dei registri è fondamentale per qualsiasi sistema, ma ancora meglio sta automatizzando questa gestione. Logrotate semplifica la rotazione, l'archiviazione e l'eliminazione dei registri.
Scritto da Lami Adabonyan