web analytics

[Guida] Sysadmin GNU/Linux: la manutenzione dei log tramite logrotate

sysadmin logrotate

Una delle principali competenze di un sysadmin, è sicuramente la capacità di comprendere i file di log. Questi possono essere considerati la bussola da seguire, per scoprire eventuali malfunzionamenti del sistema. Dopo le guide su systemctl e sulla gestione dei servizi, oggi continuiamo il percorso nella sistemistica GNU/Linux esplorando le opzioni di logrotate.

Logrotate e la rotazione dei log

I vari demoni di sistema registrano in appositi file gli eventi degni di nota per futura memoria. Nelle moderne distribuzioni i programmi più diffusi per questo scopo sono journald e rsyslogd. Come è facile intuire, la dimensione dei file di log è direttamente proporzionale alla frequenza e alla verbosità delle registrazioni chiamate dai processi. Serve quindi un qualcosa per manutenerli, evitando così la saturazione di intere partizioni.
sysadmin logrotate log
Per effettuare la rotazione dei file di registro, è stato creato un apposito programma chiamato logrotate. Configurarlo ci permette di automatizzare una serie di operazioni quali la compressione dei file di registro o la rimozione delle loro versioni obsolete. Le direttive per il suo funzionamento generale sono contenute, come suole, nel file /etc/logrotate.conf.

Riassumiamo le principali istruzioni:

  • daily, weekly, monthly: indicano i tempi di rotazione;
  • rotate n: specifica il numero n di copie dei file di log che devono essere mantenute in una successione di rotazioni. Il file n+1 esimo sarà cancellato;
  • create: crea un nuovo file di log vuoto al termine della rotazione;
  • compress: comprime le vecchie versioni del file di log tramite gzip;
  • prerotate, postrotate: per eseguire dei comandi precedentemente o successivamente una rotazione.

sysadmin logrotate linux

Il file contenente le direttive specifiche per ciascun servizio è invece /etc/logrotate.d. Ad esempio su Linux Mint, se vado a studiare la rotazione dei log del servizio mintupdate, l’output sarà il seguente:

/var/log/mintupdate.log {
  rotate 12
  monthly
  compress
  missingok		// se il file di registro è assente non genera errore
  notifempty		// non effettua la rotazione se il file è vuoto
  nocreate		
}

Come sempre, per una trattazione puntuale della sintassi e di tutte le opzioni possibili, basterà fare riferimento all’apposita pagina del manuale che torna sempre utile ai sysadmin: man logrotate.

sharing-caring-1Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.