#format wiki
#LANGUAGE it
<
>
<>
<>
= Introduzione =
Questa guida spiega le configurazioni di base per '''logrotate''', utilità di sistema che gestisce la rotazione automatica e la compressione dei [[AmministrazioneSistema/LogDiSistema|file di log]].<
>
È preinstallata in Ubuntu, come '''rsyslog''' e gli altri strumenti che servono per il funzionamento dei log di sistema.
= Descrizione =
A intervalli di tempo predefiniti, i file di log vengono "''ruotati''". La rotazione, in sostanza, è quel processo in cui i file di log vengono:
* rinominati automaticamente
* sostituiti da nuovi file di log
* compressi con '''[[AmministrazioneSistema/FormatiDiCompressione#gzip|gzip]]''' allo scopo di ridurre lo spazio necessario alla loro memorizzazione, mantenendoli comunque disponibili per controlli futuri
'''logrotate''' è quindi il comando che si occupa della rotazione dei file di log. Di norma viene lanciato a intervalli periodici dal servizio [[AmministrazioneSistema/Cron|cron]].<
>
Le informazioni generali (versione, strumenti in uso per mail e compressione ecc.) possono essere ottenute digitando nel [[AmministrazioneSistema/Terminale|riga di comando]] il comando:{{{
logrotate --version
}}}
= Configurazioni generali =
Le configurazioni di '''logrotate''' risiedono in questi file o directory:
* '''/etc/logrotate.conf''': contiene le configurazioni principali di logrotate, fra cui le istruzioni sulla rotazione dei file di log, se non diversamente specificato nei file presenti nella directory `/etc/logrotate.d/` (punto successivo).
* '''/etc/logrotate.d/''': directory che contiene i file di configurazione dei log dei programmi che necessitano di essere ruotati (sia quelli installati dall'utente, sia a quelli preinstallati di sistema come apt, dpkg, ecc.).
* '''/etc/cron.daily/logrotate''': è lo [[Programmazione/Script|script]] di [[AmministrazioneSistema/Cron|cron]] che si occupa di verificare il funzionamento di '''logrotate''' per poi eseguirlo con le impostazioni contenute in `/etc/logrotate.conf`. Ovviamente viene eseguito quotidianamente del demone cron poiché posizionato nella cartella `cron.daily`.
* '''/var/lib/logrotate/status''': è il file in cui vengono salvati data e ora (''timestamp'') in cui è avvenuta l’ultima rotazione per un ogni file di log.
In questo guida verranno descritti prevalentemente i primi due.
Di seguito un esempio di file `/etc/logrotate.conf`:{{{
# see "man logrotate" for details
# rotate log files weekly
weekly
# use the adm group by default, since this is the owning group
# of /var/log/syslog.
su root adm
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
#dateext
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# system-specific logs may be also be configured here.
}}}
Si noti che di default è configurata la rotazione settimanale (parametro '''weekly''') con un file di log appartenente all'utente '''root''' e al gruppo '''syslog''', con quattro file di log conservati per volta (parametro '''rotate 4''') e con nuovi file di registro vuoti creati dopo la rotazione di quello corrente (parametro '''create''').
= Parametri =
Di seguito vengono elencate alcune delle istruzioni più utili:
||<:-2>'''Parametro'''||
|| '''hourly / daily / weekly / monthly / yearly''' || Imposta la frequenza della rotazione (oraria, giornaliera, settimanale, mensile, annuale). ||
|| '''rotate [n]''' || Specifica il numero di copie dei file di log che devono essere mantenute nelle successive rotazioni. Il file eccedente verrà eliminato. ||
|| '''create''' || Crea un nuovo file di log vuoto al termine della rotazione. È inoltre possibile specificare modalità di accesso, proprietario e gruppo. ||
|| '''dateext''' || Nomina i file con la data all'interno del nome. ||
|| '''compress''' || Comprime le vecchie versioni del file di log tramite gzip. ||
|| '''delaycompress''' || Rimanda la compressione alla successiva esecuzione di logrotate. ||
|| '''prerotate''' || Esegue un comando/programma prima della rotazione. ||
|| '''postrotate''' || Esegue un comando/programma dopo la rotazione. ||
|| '''size [dimensione]''' || Imposta un limite raggiunto il quale il file viene ruotato. ||
|| '''minsize [dimensione]''' || Ruota i file quando più grandi della dimensione indicata, fermo restando il parametro temporale (daily, weekly, ecc.). ||
|| '''notifempty''' || Non esegue la rotazione se il file è vuoto. ||
|| '''copy''' || Crea una copia del file di log, non modificando l'originale che non viene mai rimosso. ||
|| '''olddir [/percorso/directory]''' || Sposta i file di log nella directory indicata prima di eseguire la rotazione. ||
Per un elenco completo dei parametri digitare:{{{
man logrotate
}}}
= Rotazione singole applicazioni =
Come detto precedentemente, i file di configurazioni per la rotazione delle singole app risiedono nella directory `/etc/logrotate.d/`.<
>
Di seguito un esempio del contenuto della cartella:{{{
ls /etc/logrotate.d/
alternatives bootlog cups-daemon lightdm rsyslog ubuntu-advantage-tools unattended-upgrades
apt btmp dpkg ppp speech-dispatcher ufw wtmp
}}}
I vari file nella directory seguono la sintassi seguente:{{{
/var/log/nome_app.log {
parametro 1
parametro 2
}
}}}
Un esempio per `/etc/logrotate.d/apache2` potrebbe essere il seguente:{{{
/var/log/dpkg.log {
weekly
rotate 3
size 100M
compress
delaycompress
}
}}}
{{{#!wiki note
Il file `/etc/logrotate.d/rsyslog` contiene le impostazioni di log importanti di sistema, fra cui `/var/log/syslog`, `/var/log/kern.log` e `/var/log/auth.log`.
}}}
= Esempio di personalizzazione =
È possibile modificare e personalizzare ''ad hoc'' i file descritti in precedenza per venire incontro a specifiche esigenze o per prevenire/risolvere dei problemi.
Di seguito un esempio per impostare un'applicazione in modo tale che venga eseguita una rotazione giornaliera, con file di dimensione massima di 200 MB, lasciando le dieci copie precedenti:{{{
/var/log/[mio_programma].log
{
daily
missingok
rotate 10
compress
notifempty
size 200M
compress
create 0600 root root
endscript
}
}}}
Tale configurazione evita che i file di log diventino di dimensioni eccessive, cosa che nei casi più gravi può impedire il normale avvio del sistema a causa dello spazio in esaurimento.
{{{#!wiki important
È bene tener presente che le dimensioni eccessive dei file di log, in particolare di quelli importanti di sistema, sono quasi sempre il risultato di problematiche ben più gravi, che tuttavia __non__ vengono risolte applicando i parametri sopra indicati.
}}}
= Ulteriori risorse =
* [[https://guide.debianizzati.org/index.php/Logrotate:_configurare_la_rotazione_automatica_dei_log|Debianizzati]]
* [[https://linux.die.net/man/8/logrotate|Linux man page]]
* [[https://www.redhat.com/sysadmin/setting-logrotate|Articolo Red Hat]]
* [[https://www.tecmint.com/install-logrotate-to-manage-log-rotation-in-linux/|Tutorial su Tecmint]]
* [[https://www.digitalocean.com/community/tutorials/how-to-manage-logfiles-with-logrotate-on-ubuntu-20-04|How To Manage Logfiles with Logrotate on Ubuntu 20.04]]
* [[https://docs.rackspace.com/support/how-to/understanding-logrotate-utility/|Understanding logrotate utility]]
* [[https://docs.rackspace.com/support/how-to/sample-logrotate-configuration-and-troubleshooting|Sample logrotate configuration and troubleshooting]]
----
CategoryAmministrazione