Logrotate è un software preinstallato nella maggior parte delle distribuzioni Linux, che consente di gestire il salvataggio a lungo termine e l'organizzazione dei file di registro.
Le applicazioni nel sistema spesso registrano un registro delle operazioni o dei problemi del disco. Se non vengono eliminati periodicamente, questi file possono aumentare di dimensioni, riempire il disco e causare malfunzionamenti.
Logrotate è la soluzione più comune per controllare periodicamente i file di registro e gestirne automaticamente la rotazione, la compressione e l'eliminazione al superamento di una certa dimensione e/o età.
Configurazioni di base
Logrotate permette di definire alcuni parametri di base che verranno utilizzati da tutte le successive configurazioni del file nel percorso /etc/logrotate.conf:
# Set a weekly rotation
weekly
# Set the number of rotations to save
rotate 4
# make new log file
create
# Include all configurations files
include /etc/logrotate.d
In questo estratto di logrotate.conf, oltre ad applicare tutti i parametri sopra descritti, si consiglia anche di leggere tutte le configurazioni presenti nella directory /etc/logrotate.d. In questo modo, puoi dividere ogni configurazione per applicazione e/o contesto.
Le configurazioni Logrotate definiscono un set di regole per 1 o più file:
[FILE] [FILE?] [FILE?] {
[SETTINGS]
}
Un classico esempio è quello della configurazione di /var/log/messaggi:
/var/log/messages {
# Save 5 rotations
rotate 5
# Rotating files every week
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
Nell'esempio sopra, viene preso in considerazione solo il file del messaggio. . e la sua rotazione è fissata ogni settimana, p ad un massimo di 5. Pertanto, al termine della quinta rotazione, i log files:
-rw-r----- 1 root adm 1215 Jul 29 06:47 messages
-rw-r----- 1 root adm 3895 Jul 28 06:49 messages.1
-rw-r----- 1 root adm 454 Jul 21 06:37 messages.2.gz
-rw-r----- 1 root adm 506 Jul 15 06:40 messages.3.gz
-rw-r----- 1 root adm 456 Jul 7 06:41 messages.4.gz
Alcune delle impostazioni più importanti sono:
giornaliero, mensile, settimanale, annuale:indica la frequenza con cui ruotare il file di registro
compress, nocompress:se comprimere o meno le vecchie rotazioni dei file
maxage:Dopo quanti giorni vengono eliminate le vecchie rotazioni
dimensione:imposta la rotazione solo se i file indicati sono più grandi della dimensione specificata. I suffissi possono essere utilizzati per indicare il formato della dimensione (ad es. "k" per kilobyte, "M" per megabyte)
ruota:numero di registri ruotati che devono essere salvati prima di essere rimossi definitivamente. Se impostato su 0, i file di registro verranno cancellati senza essere ruotati.
Nel caso in cui desideri impostare le stesse regole per più file, puoi aggiungere più percorsi, separandoli con una virgola. Ad esempio:
/var/log/custom_log, /var/log/alternative_log_file, /var/log/another_log {
…
}
Questa configurazione verrà utilizzata per il file custom_log, alternative_log_file e un altro_log.
In alternativa puoi usare maschere di file come:
/var/custom/logs/*, /var/log/custom_log {
# This configuration will rotate all the files in the directory.
# /var/custom/logs/* e il file /var/log/custom_log
...
}
Utilizzo dell'impostazione dateext
L'impostazione dateext consente di aggiungere la data di rotazione al nome del file, in modo che i dati dei registri possano essere facilmente riconosciuti.
/var/log/custom.log {
size 100M
dateext
rotate 3
compress
maxage 100
}
La configurazione sopra indicata archivierà il file custom.log non appena raggiunge i 100M, fino ad un massimo di 3 volte o dopo 100 giorni. Tramite l'opzione comprimi, il file archiviato verrà compresso anche in formato gzip.
Una volta ruotati, i nomi dei file avranno la data di rotazione mostrata di seguito:
# ls /var/log
-rw-r--r-- 1 user user 8980 2019-06-09 22:10 custom.log-20180609.gz
-rwxrwxrwx 1 user user 0 2019-06-09 22:11 custom.log
Registri email
Logrotate consente di eseguire script personalizzati quando si verificano determinati eventi, ad esempio dopo ogni rotazione del registro, utilizzando le parole chiave postrotate / endscript.
Un possibile utilizzo potrebbe essere quello di inviare i log via e-mail al termine della rotazione. Per procedere, crea innanzitutto uno script per inviare i file al tuo indirizzo email:
#!/bin/bash
# Get all logs
tar -cvf /tmp/logpack.tar /var/log/messages*
# Send logs as attachment
echo "Log" | mail -s "log" [email protected] -A /tmp/logpack.tar
Salva il file sopra nella tua home directory, ad esempio /home/map.com username_s//endend.sh e assicurati di abilitare le autorizzazioni necessarie tramite:
# sudo chmod u+x /home/user/sendlog.sh
Ora, modifica il file di configurazione di logrotate come segue:
/var/log/messages {
...
postrotate
…
/home/user/sendlog.sh
endscript
}
Salva la configurazione per applicare le modifiche.
Una volta completato, riceverai un'e-mail con l'archivio dei log sopra descritto ad ogni rotazione dei log.