Ieri mi sono documentato su come far convivere Awstats e Logrotate. Awstats è un ottimo software di statistiche basato su log (si occupa di analizzare i log di un server web (o di posta o ftp)) mentre Logrotate si occupa di ruotare e comprimerei log, pratica necessaria per evitare che essi vadano ad intasare la macchina (giusto per fare un confronto, il livello di compressione di un file di log di Apache può raggiungere anche l'80%, il che rappresenta un bel risparmio di spazio).
I due sistemi, però, cozzano tra di loro quando si tratta di generare le statistiche in quanto il file di log potrebbe venir ruotato un'ora dopo la generazione delle statistiche, con conseguente perdita di un ora di dati. Per ovviare a questo problema, sul sito di awstats, viene suggerito di modificare la configurazione di logrotate per eseguire l'update di awstats prima della rotazione dei log. L'idea è corretta, ma si va incontro ad alcuni problemi quando la generazione delle statistiche richiede molto tempo e, soprattutto, lo si deve fare per tanti siti (la configurazione per la rotazione dei log di apache in Debian è generica e copre tutti i log presenti in /var/log/apache2/).
Come soluzione alternativa si può ricorrere all'utility logresolvemerge che prendendo in input uno o più file di log li ordina e produce sullo standard output un unico file di log. L'idea è quella di effettuare il merge del file di log del giorno attuale con quello del giorno precedente, così da includere l'eventuale "buco" causato dalla rotazione dei log. Awstats, inoltre, è in grado di rilevare i log vecchi (si basa sulla data dell'ultimo aggiornamento) e non riprocesserà le righe del log che ha già registrato.
Per applicare questa idea è sufficiente modificare il file di configurazione di awast sostituendo alla riga
LogFile="/var/log/apache2/sito_access.log"
la seguente:
LogFile="/usr/share/doc/awstats/examples/logresolvemerge.pl /var/log/apache2/sito_access.log /var/log/apache2/sito_access.log.1 |"
(Nota: prima di chiudere le virgolette c'è un | (PIPE))
Commenti
Invia nuovo commento