File di log di grandi dimensioni possono causare enormi problemi: dalla consultazione allo stesso spazio occupato sulla macchina. La stessa gestione sarebbe veramente onerosa.
A tale inconveniente pone rimedio logrotate.
logrotate
è un software creato per facilitare l’amministrazione di sistemi che generano grandi numeri di file di log. Permette in maniera automatica la rotazione, la compressione, la rimozionee l’invio per email dei file di log. I file di log possono essere processati giornalmente, settimanalmente, mensilmente o quando crescono troppo.
logrotate
ha delle pagine di manuale molto chiare: questa guida non intende sostituirsi alla consultazione delle pagine di man
. Riporto solo una configurazione che ho avuto necessità di creare per una applicazione web-based creata per un cliente.
Applicazione pratica di logrotate
Dopo aver creato l’applicazione secondo le specifiche dell’azienda, è emersa la necessità di valutare i log con un particolare software che la stessa azienda ha fatto realizzare. Il software di analisi esamina file compressi ma di dimensioni non troppo grandi (rallenta il sistema e se si blocca va riprocessato da capo) e mette in relazione gli accessi al server web con i log personalizzati, generati dalla stessa applicazione. Inoltre l’azienda utilizza AWStats per le statistiche di accesso all’applicazione.
Nella cartella /etc/logrotate.d/
è stato creato un file di configurazione simile a quello che segue:
/www/myapp/logfiles/*.log {
size 300M
rotate 30
olddir /www/myapp/logfiles/parsed/
compress
delaycompress
create 777 user group
sharedscripts
prerotate
wget -O - http://myapp/cgi-bin/awstats.pl?config=myapp
\&framename=mainright\&update=1 > /dev/null
endscript
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
}
Analizziamo la configurazione riga per riga.
- Riga 1:
/www/myapp/logfiles/*.log {
:
indica il percorso dei file di log e apre le direttive di configurazione. - Riga 2:
size 300M
:
attiva la rotazione se il file è superiore ai 300 Mb - Riga 3:
rotate 30
:
indica il numero di rotazioni prima che i vecchi files siano cancellati, in questo caso 30. Se il numero viene impostato a zero 0, i vecchi file vengono rimossi durante la rotazione. - Riga 4:
olddir /www/myapp/logfiles/parsed/
:
sposta nella cartella parsed i vecchi file di log. - Riga 5:
compress
:
comprime i vecchi file congzip
. - Riga 6:
delaycompress
:
posticipa la compressione alla prossima esecuzione dilogrotate
. - Riga 7:
create 777 user group
:
ricrea il file di log con i permessi (777) attributiti alla coppia utente/gruppo. - Riga 8:
sharedscripts
:
normalmente i comandi nelle direttiveprerotate
epostrotate
vengono eseguiti per ciascun file di log. Questo significa che un singolo script viene eseguito tante volte quanti sono i file da analizzare. Nel nostro caso è meglio usare questa direttiva in modo da “dire” alogrotate
di eseguire lo script una volta sola. - Riga 9:
prerotate
:
attiva una serie di operazioni prima di eseguirelogrotate
. - Righe 10 e 11:
wget -O - http://myapp/cgi-bin/awstats.pl?config=myapp\&framename=mainright\&update=1 > /dev/null
:
le righe 10 e 11 fanno parte di un unico comando e vanno scritte senza spazi. Con questo comando andiamo a forzare l’aggiornamento di AWStats per non perdere righe utili alle statistiche di accesso. - Riga 12:
endscript
:
termine delle istruzioni diprerotate
. - Riga 13:
postrotate
:
attiva una serie di operazioni dopo l’esecuzione dilogrotate
. - Riga 14:
/etc/init.d/apache2 reload > /dev/null
:
ricarica il server web per rendere operativa la scrittura sui nuovi file di log. - Riga 15:
endscript
:
termine delle istruzioni dipostrotate
. - Riga 16:
}
:
chiusura delle direttive di configurazione.
Spero possa essere utile a voi come lo è stato a me 😉
Commenti recenti