Come configurare logrotate per l'archiviazione automatica dei log e il salvataggio dello spazio sul server
La gestione dei log è una parte cruciale del lavoro di qualsiasi amministratore di sistema. I log che non vengono ruotati possono rapidamente occupare tutto lo spazio disponibile sul disco, rallentare il server e causare errori imprevedibili. In questo articolo, spiegheremo come configurare e utilizzare logrotate per la pulizia e la rotazione automatica dei log su un server.
Cos'è logrotate e perché è importante usarlo?
Logrotate è uno strumento progettato per la gestione automatica dei log. Aiuta a:
- Cancellare vecchi log — elimina o archivia automaticamente i vecchi file di log.
- Risparmiare spazio su disco — comprime e rimuove i log non necessari.
La rotazione dei log impedisce ai log di accumularsi e causare overflow del disco, il che potrebbe comportare crash e perdita di dati. Logrotate archivia automaticamente i vecchi log e libera spazio per i nuovi dati.
Come funziona logrotate?
Quando logrotate è attivo, esegue automaticamente i seguenti passaggi:
- Rotazione dei log — i vecchi log vengono rinominati e archiviati, mentre vengono creati nuovi file al loro posto.
- Compressione — i vecchi log possono essere compressi nel formato .gz per risparmiare spazio.
- Eliminazione — i log obsoleti possono essere eliminati se non sono più necessari.
Esempio: Un file di log chiamato access.log può essere trasformato in access.log.1, quindi compresso in access.log.1.gz ed infine eliminato dopo un periodo di conservazione specificato.
---
Come configurare logrotate
1. Installazione di logrotate
Sulla maggior parte dei sistemi Linux, logrotate è preinstallato. Per verificare se logrotate è installato, esegui il comando:
sudo logrotate --version
Se logrotate non è installato, può essere installato tramite un gestore di pacchetti.
- Per Debian/Ubuntu:
sudo apt update && sudo apt install logrotate
- Per CentOS/RockyLinux/AlmaLinux:
sudo yum install logrotate
2. Configurazione di logrotate
La configurazione di logrotate è solitamente memorizzata in /etc/logrotate.conf. Questo file contiene i parametri generali per tutti i log sul server. Per configurare la rotazione di singoli log, è possibile creare file di configurazione separati per diversi servizi nella directory /etc/logrotate.d/.
Esempio di una configurazione Nginx standard:
/var/log/nginx/*.log {
daily # I log vengono ruotati quotidianamente
missingok # Non mostrare un errore se il log è mancante
rotate 7 # Conserva 7 file archiviati
compress # Comprime i vecchi log
delaycompress # Ritarda la compressione fino alla prossima rotazione
notifempty # Non ruotare file vuoti
create 0640 www-data adm # Crea nuovi log con permessi specifici
}
3. Parametri chiave di configurazione
- daily/weekly/monthly — definisce la frequenza con cui il file di log verrà ruotato (giornalmente, settimanalmente o mensilmente).
- rotate [N] — specifica il numero di log archiviati da conservare.
- compress — abilita la compressione del file di log (tipicamente in .gz).
- missingok — impedisce errori se un file di log è mancante.
- notifempty — salta la rotazione per i file vuoti.
- create — crea nuovi log con permessi specifici.
4. Esecuzione di logrotate
Logrotate viene solitamente eseguito automaticamente tramite cron. Tuttavia, puoi eseguirlo manualmente se hai bisogno di controllare la configurazione o eseguire una rotazione immediatamente:
sudo logrotate -f /etc/logrotate.conf
5. Verifica del funzionamento di logrotate
Per assicurarti che logrotate funzioni correttamente, puoi controllare le ultime voci nel suo log di servizio:
sudo journalctl -u logrotate -n 10