Dopo aver visto come tenere sotto controllo la dimensione e la quantità dei files di logs grazie all'utility logrotate, in questo articolo vedremo un esempio pratico di come poter sfruttare questa funzione per altri scopi.
L'obiettivo del nostro esercizio è quello di attivare le statistiche di accesso di un nostro sito web
che, per evidenti motivi pubblicitari, chiameremo uielinux.
Per effettuare tali statistiche esistono svariati programmi che, leggendo il log di accesso del web server (solitamente chiamato access_log.xxxx),
riescono ad elaborarlo e a rappresentare, in un formato grafico umanamente leggibile, informazioni sugli accessi della nostra applicazione.
Per raggiungere il nostro scopo utilizzaremo la direttiva prerotate del logrotate per archiviare i files prima di ruotarli eliminando i più vecchi.
Per quanto riguarda le statistiche invece utilizzaremo webalizer, uno degli analizzatori di files di log più conosciuti in ambito opensource
che per i nostri scopi è più che adatto.
Nel nostro esercizio assumiamo che l'applicazione web gira nella directory /var/www e il log di apache viene messo sotto /var/log/apache2.
Qeste sono le impostazioni di default su una Ubuntu 8.04.
Bene, ora possiamo iniziare.
Installazione del software necessario
La prima cosa che dobbiamo fare è installare tutto il software necessario, quindi digitiamo:
sudo apt-get install logrotate webalizer apache2
Ora creiamo nel nostro sito la cartella che conterra' le statistiche.
Digitiamo quindi:
mkdir /var/www/statistiche
Configurazione webalizer
Ora andiamo nella directory /etc/webalizer, che è il posto in cui troveremo i settaggi preimpostati di webalizer, e creiamo uno script
chiamato agg_stats.sh.
Incolliamoci il seguente testo:
#!/bin/bash
for i in /etc/webalizer/*.conf
do
echo ""
echo Elaboro: $i
echo "------------------------------------------------"
webalizer -c $i
done
exit 0
Questo script, quando eseguito, lancia il comando webalizer per tutti i files di configurazione esistenti nella directory /etc/webalizer
Ora creiamo a un file di configurazione di webalizer per la nostra aplicazione.
Il file suddetto lo chiamiamo uielinux.conf e al suo interno incolliamo il seguente testo:
LogFile /var/log/apache2/access_log
OutputDir /var/www/statistiche
HistoryName webalizer.hist
Incremental yes
IncrementalName webalizer.current
ReportTitle Statistiche su
HostName uielinux
Le opzioni configurabili in questo files sono tantissime e vi rimandiamo alla documentazione del webalizer per approfondirle.
Le impostazioni che interessano a noi sono:
- Logfile è la cartella in cui sono presenti i file da analizzare
- OutputDir è la cartella in cui webalizer creerà i files html consultabili via browser per accedere alle statistiche
Ora che abbiamo configurato il nostro webalizer, mettiamo la chiamata a agg_stat.sh nel prerotate del logrotate, quindi aggiungiamo:
prerotate
/etc/webalizer/agg_stats.sh
endscript
Configurazione Logrotate
nell'esistente file apache2 che contiene già una serie di impostazioni predefinite. Quindi avremo:
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
prerotate
/etc/webalizer/agg_stats.sh
endscript
postrotate
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
/etc/init.d/apache2 reload > /dev/null
fi
endscript
}
Bene.
A questo punto abbiamo terminato.
Con cadenza giornaliera, accadra' che:
- lo script logrotate presente nella cartella /etc/cron.daily verrà eseguito, e con esso tutte le configurazioni definite nella cartella /etc/logrotate.
- Se si verificano le condizioni per far ruotare i files di log di apache, la direttiva prerotate del logrotate eseguira' lo script /etc/webalizer/agg_stats.sh
- Lo script agg_stats.sh, per tutti i files .conf che troverà nella cartella /etc/webalizer lancerà il webalizer e aggiornarà le statistiche configurate.
- L'aggiornamento delle statistiche genererà nella cartella /var/www/statistiche un file html con le statistiche del webserver.
Le statistiche saranno accessibili dal browser digitando http://nomeserver/statistiche/index.html
Di nuovo, buona rotazione a tutti
 |