Nei precedenti articoli sulla registrazione degli accessi di Apache e sulla gestione degli errori di Apache, abbiamo analizzato la struttura dei file di log che Apache produce nel suo infaticabile lavoro e abbiamo imparato a leggere le informazioni codificate in ciascuna riga. Benissimo, ma alla domanda: "quanti visitatori unici abbiamo avuto questo mese?" avremmo forse qualche difficoltà a rispondere.
Niente paura, esistono svariati programmi che ci permettono in un attimo (o quasi) di reperire questa ed altre utili informazioni. Sto parlando di quei software che, a partire dal file di registrazione degli accessi, generano dei report di semplice lettura in forma tabellare e grafica.
In quest'articolo prenderemo in considerazione The Webalizer la cui versione stabile corrente è 2.01-10. Il programma genera statistiche d'utilizzo in formato HTML consultabili mediante un qualsiasi browser. Fornisce dati annuali, mensili, giornalieri ed orari, dati d'accesso per sito, per URL, per referrer, user agent e paese, ovviamente se tali informazioni sono state registrate nei file di log. Per i dettagli sulle informazioni registrabili rimando al già citato articolo.
Il programma non è aggiornatissimo, malgrado ciò presenta alcune caratteristiche interessanti:
- è scritto in C per essere maggiormente veloce e portabile;
- è distribuito sia in formato sorgente che binario per varie piattaforme (Linux, Windows, Mac OS X);
- supporta svariate lingue tra cui l'italiano;
- analizza log in Common Log Format e Combined Log Format (non solo);
- può essere personalizzato mediante l'utilizzo di un semplice file di configurazione;
- è possibile utilizzare più file di configurazione uno per ciascun sito;
- può essere utilizzato anche in presenza di un sistema di rotazione dei log;
- è gratuito e distribuito con licenza GNU General Public License.
L'elenco non è completo, ma se tutto questo basta ad attirare la vostra attenzione, proseguite nella lettura.
Considerazioni preliminari
Webalizer richiede come prerequisito che le librerie grafiche GD siano presenti e funzionanti sul nostro sistema. Verificatelo e se non le avete sarà necessario scaricarle e installarle.
Procederemo installando Webalizer a partire dai sorgenti per poter personalizzare alcune opzioni e soprattutto, per migliorare la generazione di statistiche geografiche rispetto al metodo standard, useremo una patch, Geolizer, di Stanislaw Pusep. Tale patch si basa sulla libreria GeoIP di MaxMind che, oltre alla distribuzione commerciale, mette a disposizione una versione liberamente e gratuitamente utilizzabile chiamata GeoLite. Per maggiori informazioni vi rimando alla relativa documentazione ufficiale. Noi utilizzeremo le GeoIP C API che sono open source e includono il GeoLite Country database.
In breve dobbiamo scaricare i tre sorgenti:
- webalizer-2.01-10-src.tgz da http://www.mrunix.net/webalizer/download.html
- geolizer_2.01-10-patch.20050520.tar.gz da http://sysd.org/proj/log.php
- GeoIP.tar.gz da http://www.maxmind.com/download/geoip/api/c/
Le indicazioni di seguito riportate si riferiscono ad un'installazione su Fedora Core 4 anche se possono essere facilmente adattate ad altre distribuzioni. La shell usata sarà bash. Consiglio comunque ai meno frettolosi un'attenta lettura della documentazione di ciascuno dei tre software prima di passare alla fase operativa onde evitare possibili "intoppi" già noti.
Cominciamo scompattando i file appena prelevati nella directory /usr/src
, in modo da ottenere le tre directory GeoIP-1.3.15, geolizer_2.01-10-patch e webalizer-2.01-10.
Installazione
GeoIP
Dopo esserci loggati come root spostiamoci nella directory relativa a GeoIP e al prompt digitiamo:
# ./configure # make # make install
Naturalmente ciascuno step dell'operazione fornirà numerosi messaggi che dobbiamo verificare per essere sicuri che non ci siano problemi. Se non specifichiamo opzioni, l'installazione avverrà di default nelle directory /usr/local/bin
, /usr/local/man
e così via.
Geolizer
Passiamo ora ad applicare la patch:
# cd /usr/src # patch -p0 < geolizer_2.01-10-patch/geolizer.patch
Se tutto è andato come si deve possiamo procedere con il passo successivo.
Webalizer
Occupiamoci d'installare il pacchetto principale con le necessarie opzioni per utilizzare GeoIP e per impostare la lingua italiana:
# cd /usr/src/webalizer-2.01-10/ # ./configure --enable-geoip --with-language=italian # make # make install
Di default il programma verrà installato in /usr/local/bin
ed un file di configurazione di esempio, webalizer.conf.sample, sarà creato in /etc
.
Personalmente mi si è presentato un unico inconveniente (a parte la mancanza del componente gd-devel che ho dovuto installare): alla prima esecuzione ho ricevuto il messaggio d'errore di seguito riportato.
webalizer: error while loading shared libraries: libGeoIP.so.1: cannot open shared object file: No such file or directory
È risultato solo un problema di path, peraltro descritto nella documentazione di Geolizer. In pratica mancava /usr/local/lib
in /etc/ld.so.conf
. È bastato aggiungere al file una riga con il percorso ed eseguire ldconfig -v
controllando nell'output "verboso" che fosse presente libGeoIP.so.1.
Come usare Webalizer
La sintassi basilare è la seguente:
# webalizer [opzioni] [log_file]
Per l'elenco delle opzioni disponibili possiamo ricorrere ai comandi webalizer -h
o man webalizer
. Un esempio potrebbe essere il seguente:
# webalizer /var/log/httpd/access_log
L'effetto sarà la creazione nella directory corrente di pagine HTML riportanti le statistiche (in forma grafica e tabellare) ottenute dall'analisi del log file indicato. Tali dati saranno consultabili a partire da una pagina index.html che riporta i valori riepilogativi mensili ed i link ai relativi approfondimenti rappresentati da pagine del tipo usage_yyyymm.html.
In alternativa possiamo predisporre un file testuale di configurazione indicando al programma la sua posizione perchè possa leggerlo:
# webalizer -c miofile.conf
Il file di configurazione dovrà specificare, tra le altre cose, la posizione del file di registrazione degli accessi e la directory in cui verranno create le pagine con le statistiche. Per acquisire familiarità con questa modalità operativa basterà consultare il file webalizer.conf.sample abbondantemente commentato.
La configurazione
Analizziamo ora le principali opzioni di configurazione, ribadendo, a rischio di risultare noiosi, come il file webalizer.conf.sample
riporti per ciascuna di esse parecchie linee di spiegazione semplificando la vita a chi abbia la pazienza di scorrerlo con attenzione. Ciascuna direttiva, se preceduta dal simbolo #, risulta commentata si noti però come la maggior parte delle opzioni abbia un valore di default che verrà comunque applicato.
LogFile /percorso_del_file_di_log/access_log OutputDir /percorso_del_www/stats ReportTitle Statistiche del dominio HostName www.miosito.it
La prima opzione specifica dove trovare l'access_log, la seconda la directory in cui generare le pagine. È prassi comune creare una directory "stats" o simile all'interno della Document Root del nostro sito, magari proteggendola da occhi indiscreti mediante un .htaccess.
ReportTitle e HostName sono d'immediata comprensione si noti come il titolo delle pagine risulterà "Statistiche del dominio www.miosito.it".
HistoryName /var/lib/webalizer/miosito.hist
Il file miosito.hist
, sopra specificato, conterrà i dati totali dei mesi precedenti utilizzati dalla pagina principale, index.html, per costruire il sommario. Il valore di default è webalizer.hist
che verrebbe creato nella directory definita mediante la direttiva OutputDir.
Incremental yes IncrementalName /var/lib/webalizer/miosito.current
La prima direttiva abilita la funzione incrementale che ci permette di ruotare i log senza che webalizer perda informazioni. Ciò si ottiene salvando in un file lo stato delle elaborazioni tra un'analisi e la successiva e poi recuperandolo in modo che il programma riparta da dov'era arrivato. La seconda direttiva ci permette di specificare il nome del file usato per il salvataggio dei dati incrementali.
GeoIP yes GeoIPDatabase /usr/local/share/GeoIP/GeoIP.dat
Le ultime due direttive che prendiamo in considerazione permettono di abilitare GeoIP e specificare la posizione del database geografico. Accenno solo alla possibilità tramite il file di configurazione d'influire anche sul layout HTML delle pagine prodotte.
Webalizer in pratica
Nell'amministrare un server web ci si trova solitamente a gestire più domini, per ciascuno dei quali si dovranno produrre statistiche degli accessi. Partendo dal presupposto che Apache sia stato configurato per generare log separati per ciascun host virtuale, creiamo una directory /etc/webalizer
. All'interno di tale directory inseriamo i file di configurazione sito1.conf, sito2.conf, e così via uno per ciascun dominio debitamente personalizzati. Creiamo la directory /var/lib/webalizer
in cui andranno i file .hist e .current, se attiviamo la modalità incrementale.
A questo punto per automatizzare la generazione delle statistiche possiamo creare un piccolo script bash del tipo:
#! /bin/bash for i in /etc/webalizer/*.conf; do /usr/local/bin/webalizer -c $i; done exit 0
Esso, mediante un ciclo, passa in rassegna tutti i file con estensione conf
contenuti nella directory /usr/local/bin/webalizer
. Inserendo poi lo script testè realizzato in /etc/cron.daily
, imposteremo con scadenza giornaliera la sua esecuzione.
Una piccola nota: se decidete di utilizzare il metodo incrementale, fate attenzione a non modificare le opzioni di configurazione tra un'esecuzione e la successiva. Questo potrebbe determinare l'inconsistenza dei dati salvati. Se necessario è meglio agire nel passaggio da un mese all'altro, dopo l'elaborazione del mese corrente e prima dell'elaborazione del mese successivo.
Conclusioni
Dalla lettura di queste pagine dovreste aver colto le informazioni principali necessarie all'installazione ed alla configurazione di Webalizer. Eventuali approfondimenti potrete trovarli nella documentazione che accompagna i software analizzati. Ribadisco come il programma risulti un po' datato, ma presenti altri vantaggi in termini di semplicità e personalizzazione. Inoltre essendo open source ed avendo voglia e tempo è sempre possibile modificarlo a proprio piacimento. Il passo successivo sarà interpretare i risultati prodotti, ovvero cosa si intenda per contatti, visite, file e via dicendo, e valutarne il grado di attendibilità.