[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 169.   Statistiche di accesso

Nella gestione di un sito che offre i suoi servizi attraverso il protocollo HTTP, può essere importante l'analisi dei file delle registrazioni del servente HTTP, per ottenere delle statistiche sugli accessi. L'analisi quotidiana di queste statistiche consente di capire meglio cosa cerca il pubblico e che tipo di reazione si ottiene a seguito di iniziative che fanno capo al proprio sito.(1)

169.1   File delle registrazioni

Dal momento che il protocollo HTTP è privo di stato, ogni operazione elementare inizia e conclude una connessione TCP, che può essere annotata nel file delle registrazioni del servente HTTP. Fortunatamente, i serventi più comuni utilizzano delle annotazioni abbastanza compatibili. L'esempio seguente riguarda alcune righe scritte dal servente Boa; si osservi che le righe appaiono spezzate per motivi tipografici:


127.0.0.1 - - [31/Aug/2002:14:01:22 +0000] "GET / HTTP/1.1" 304 0 "-"  (segue)
  "Mozilla/5.0 Galeon/1.2.5 (X11; Linux i686; U;) Gecko/20020623 Debian/1.2.5-0.woody.1" 192.168.1.1 - - [31/Aug/2002:14:01:53 +0000] "GET /a2/dist/CD2/HTML/a2.html HTTP/1.1" 304 0  (segue)
  "http://localhost/"  (segue)
  "Mozilla/5.0 Galeon/1.2.5 (X11; Linux i686; U;) Gecko/20020623 Debian/1.2.5-0.woody.1" 192.168.1.1 - - [31/Aug/2002:14:01:53 +0000] "GET /a2/dist/CD2/HTML/a2.css HTTP/1.1" 304 0  (segue)
  "http://dinkel.brot.dg/a2/dist/CD2/HTML/a2.html"  (segue)
  "Mozilla/5.0 Galeon/1.2.5 (X11; Linux i686; U;) Gecko/20020623 Debian/1.2.5-0.woody.1" 192.168.1.1 - - [31/Aug/2002:14:01:53 +0000] "GET /a2/dist/CD2/HTML/1.jpg HTTP/1.1" 304 0 "-"  (segue)
  "Mozilla/5.0 Galeon/1.2.5 (X11; Linux i686; U;) Gecko/20020623 Debian/1.2.5-0.woody.1" 192.168.1.1 - - [31/Aug/2002:14:01:53 +0000] "GET /a2/dist/CD2/HTML/2.jpg HTTP/1.1" 304 0 "-"  (segue)
  "Mozilla/5.0 Galeon/1.2.5 (X11; Linux i686; U;) Gecko/20020623 Debian/1.2.5-0.woody.1"

Si comincia dalla prima per osservare che si tratta di un accesso con una richiesta secondo il metodo GET, che ha origine dall'indirizzo 127.0.0.1 (localhost). Per la precisione, è stata prelevata la risorsa corrispondente a http://host/. Se si osserva attentamente, si può vedere che non esiste un punto di riferimento precedente; ovvero, l'indirizzo è stato ottenuto da un segnalibro oppure è stato scritto direttamente dall'utente:

analisi del primo record

Continuando l'osservazione dell'esempio, si può vedere che a partire da http://localhost/ è stata raggiunta la risorsa http://host/a2/dist/CD2/HTML/a2.html; evidentemente, da http://localhost/ c'è un riferimento ipertestuale che punta proprio a http://host/a2/dist/CD2/HTML/a2.html. Il terzo record indica il prelievo del foglio di stile http://host/a2/dist/CD2/HTML/a2.css, a partire da un riferimento contenuto in http://dinkel.brot.dg/a2/dist/CD2/HTML/a2.html; in pratica, si intuisce che la pagina http://dinkel.brot.dg/a2/dist/CD2/HTML/a2.html contiene il riferimento a quel foglio di stile che deve essere caricato dal navigatore. Infine, gli ultimi due record indicano il prelievo di due file JPG, senza un referente apparente; in realtà, si tratta di immagini richieste dalla pagina http://dinkel.brot.dg/a2/dist/CD2/HTML/a2.html, ma questa volta il programma di navigazione non lo ha fatto vedere al servente.

L'informazione sull'indirizzo referente, ovvero sull'indirizzo di partenza, permette di comprendere l'importanza che può avere il riferimento fatto da qualcun altro verso le pagine del proprio sito. In altri termini, Tizio che indica nelle sue pagine un riferimento a un certo sito esterno, fa una cortesia a quel sito, che può essere valutata nel numero di accessi che in questo modo vi vengono convogliati.

Tuttavia, le informazioni generate dal servente HTTP non sono sempre così dettagliate; spesso manca l'indicazione dell'indirizzo referente, a meno di richiedere espressamente tali notizie nella configurazione. L'esempio seguente riguarda una porzione della configurazione di Apache, in cui si dichiara il dominio virtuale linuxdidattica.org e gli si associa un file di registrazioni specifico (/var/log/apache/linuxdidattica.org-access.log) con tutte le informazioni che Apache è in grado di dare:


<VirtualHost 62.152.34.13>
Servername linuxdidattica.org
DocumentRoot /home/www/linuxdidattica.org
CustomLog /var/log/apache/linuxdidattica.org-access.log full
</VirtualHost>

Il fatto di poter ottenere un file delle registrazioni separato per gli accessi a un dominio virtuale, oppure a un ramo del proprio sito, diventa importante, proprio per facilitare il lavoro successivo di lettura delle statistiche.

Eventualmente, se non è possibile ottenere dal servente HTTP un file delle registrazioni selettivo per un certo dominio virtuale, o per un certo ramo del proprio sito, si può intervenire con un programma realizzato appositamente per filtrare l'unico file a disposizione:


#!/usr/bin/perl

$modello = $ARGV[0];
$riga = "";
while ($riga = <STDIN>)
  {
    if ($riga =~ m{\"[A-Z]+ $modello.* HTTP/[0-9.]+\"})
      {
        print STDOUT ($riga);
      }
  }

Se questo programma viene chiamato filtra e il file delle registrazioni è /var/log/boa/access_log, per ottenere un file con gli accessi che si diramano a partire da http://host/servizi/casa/, si potrebbe usare il comando seguente:

cat /var/log/boa/access_log | filtra /servizi/casa/ <-'
`->> /var/log/tmp_servizi_casa.log

In questo modo si creerebbe il file /var/log/tmp_servizi_casa.log con i soli record che interessano.

Naturalmente, ci potrebbe essere la necessità di filtrare il file delle registrazioni anche per altri motivi. Per esempio, il servente Boa utilizza un file unico anche in presenza di domini virtuali, limitandosi ad aggiungere all'inizio dei record l'indirizzo a cui è giunta la richiesta. Il programma Perl seguente, crea una serie di file, ognuno dei quali ha un nome che corrisponde all'indirizzo del dominio virtuale interpellato:


#!/usr/bin/perl

$riga = "";
$indirizzo = "";
while ($riga = <STDIN>)
  {
    if ($riga =~ m{^([0-9a-fA-F.:]+) (.*)$})
      {
        $indirizzo = $1;
        $riga = $2;
        open (TEMP_FILE, ">> $indirizzo");
        print TEMP_FILE ($riga);
        print TEMP_FILE ("\n");
        close (TEMP_FILE);
      }
  }

Se questo programma viene chiamato pre_filtro e il file delle registrazioni è /var/log/boa/access_log, per una serie di file delle registrazioni nella directory /var/log/boa/access_log/domini/, si potrebbero usare i comandi seguenti, per cancellare prima i file vecchi e per generare poi quelli nuovi:

rm -rf /var/log/boa/access_log/domini

mkdir /var/log/boa/access_log/domini

cd /var/log/boa/access_log/domini

cat ../access_log | pre_filtro

169.2   Webalizer

Webalizer (2) è un programma relativamente semplice per l'analisi di un file di registrazioni generato da un servente HTTP comune, dal quale produce un rapporto statistico che può essere letto anche attraverso lo stesso servizio HTTP. In pratica, il rapporto che si ottiene è fatto di pagine HTML e di immagini contenenti i grafici dei vari rapporti statistici generati; queste pagine possono essere consultate localmente o a distanza, con un navigatore comune.

169.2.1   Configurazione

Webalizer è un programma molto semplice che si avvale di un solo file di configurazione, che in condizioni normali corrisponde a /etc/webalizer.conf. Tuttavia, nel file di configurazione si possono indicare espressamente il file delle registrazioni da analizzare e la directory di destinazione dei file delle statistiche; pertanto, se si gestiscono diversi siti virtuali, o comunque se quello che serve sono statistiche diverse in base al contesto di interesse, potrebbe essere conveniente la predisposizione di file di configurazione differenti, ognuno per l'obiettivo desiderato. Segue un elenco parziale delle direttive di questo file di configurazione, a cui si affianca l'opzione corrispondente dell'eseguibile webalizer, quando disponibile.

Direttiva Opzione Descrizione

LogFile file

Permette di definire il file delle registrazioni da scandire.

LogType [clf|ftp<-'
`->|squid]

-F [clf|ftp|squid]

Webalizer è in grado di analizzare file delle registrazioni in formati diversi, specificandolo con questa direttiva. Il formato corrispondente alla parola chiave clf è quello dei serventi HTTP comuni.

OutputDir file

-o file

In questo modo si specifica la directory nella quale creare i file che compongono le statistiche.

HostName nome

-n nome

Permette di definire il nome del sito (reale o virtuale che sia) che viene inserito nei file delle statistiche.

ReportTitle nome

-t nome

Permette di modificare il titolo predefinito delle statistiche. Dopo il titolo si aggiunge il nome definito con la direttiva HostName o con l'opzione -n.

VisitTimeout n

-m n

Consente di stabilire il tempo di scadenza per la durata delle visite. In tal modo, un accesso proveniente dallo stesso indirizzo già visto più di n secondi prima, viene considerato una visita nuova e non semplicemente una richiesta di un accesso preesistente.

PageType modello

-P modello

Questo tipo di opzione, che può essere usato più volte, consente di specificare l'estensione dei file da considerare come «pagine». Di solito si usa una stringa del tipo htm*, per includere le pagine HTML comuni, ma può essere conveniente aggiungere anche altre estensioni, a seconda del modo in cui è organizzato il proprio sito.

CountryGraph yes|no

-Y yes|no

Abilita o disabilita la visualizzazione del grafico delle nazionalità degli accessi, basato sulla parte finale del nome di dominio.

DailyGraph yes|no

Abilita o disabilita la visualizzazione del grafico giornaliero degli accessi.

DailyStats yes|no

Abilita o disabilita la visualizzazione della statistica giornaliera degli accessi.

HourlyGraph yes|no

-G yes|no

Abilita o disabilita la visualizzazione del grafico orario degli accessi.

HourlyStats yes|no

-H yes|no

Abilita o disabilita la visualizzazione della statistica oraria degli accessi.

Incremental yes|no

-p yes|no

Abilitando questa opzione con la parola chiave yes, si fa in modo che Webalizer tenga conto anche delle statistiche precedenti, in modo da non perdere dati quando il sistema di rotazione dei file delle registrazioni riparte con file vuoti.

DNSCache file

Definisce il nome da dare a un file che Webalizer può usare per annotare degli indirizzi risolti in nomi. Questo file, assieme alla direttiva DNSChildern, consente di ottenere i nomi delle origini degli accessi, quando è possibile risolverli.

DNSChildren n

Assieme alla direttiva DNSCache abilita la risoluzione degli indirizzi in nomi di dominio, specificando il numero di processi elaborativi che devono occuparsi di questo lavoro.

HideReferer modello

-r modello

Fa in modo che nel resoconto dei referenti, non appaiano i nomi che corrispondono al modello.

IgnoreReferer modello

Fa in modo che i record contenenti dei referenti corrispondenti al modello indicato vengano ignorati completamente.

HideSite modello

-s modello

Fa in modo che nel resoconto dell'origine degli accessi, non appaiano i nomi che corrispondono al modello.

IgnoreSite modello

Fa in modo che i record contenenti origini corrispondenti al modello indicato vengano ignorati completamente.

HideURL modello

-u modello

Fa in modo che nel resoconto delle risorse richieste non appaiano i nomi che corrispondono al modello.

IgnoreURL modello

Fa in modo che i record contenenti la richiesta di una risorsa corrispondente al modello indicato vengano ignorati completamente.

169.2.2   Motori di ricerca

I motori di ricerca, quando vengono interpellati, utilizzano solitamente una modalità GET, in modo tale da riportare la stringa di ricerca nello stesso URI contenente l'elenco degli indirizzi che potrebbero corrispondere a ciò che si sta cercando. In tal modo, queste stringhe di ricerca possono apparire come indirizzi referenti; ma se Webalizer riesce a riconoscerle, genera una statistica speciale delle parole o delle stringhe cercate che hanno portato al sito.

169.2.3   Utilizzo pratico

Di solito, l'utilizzo di Webalizer è abbastanza semplice, salva l'attenzione che deve essere data al file di configurazione. L'eseguibile che compie il lavoro è webalizer, la cui sintassi generale è la seguente:

webalizer [opzioni] [file_delle_registrazioni]

Alcune delle opzioni sono state descritte a proposito della configurazione; inoltre, come già è stato visto, il file delle registrazioni da analizzare può essere specificato nella configurazione. Tuttavia, tra le opzioni già mostrate ne manca una di importante:

-c file_di_configurazione

Come si può intendere, si tratta della possibilità di indicare un file di configurazione diverso da quello predefinito, cosa che può essere utile per generare statistiche differenti, in base ai contesti di interesse.

In generale, conviene avviare l'eseguibile webalizer specificando sempre il file di configurazione, in modo tale da non dover mettere altro nella riga di comando, curando solo il contenuto della configurazione, come nell'esempio seguente:

webalizer -c /var/www/webalizer.conf

Naturalmente, in questo modo, nel file di configurazione bisogna stabilire necessariamente la directory in cui devono essere create le statistiche. Le figure seguenti mostrano alcune porzioni di un esempio di statistica generata da Webalizer.

Figura 169.2. La pagina index.html generata da Webalizer.

figure/a2-webalizer-index

La pagina iniziale delle statistiche che si ottengono, mostra un riassunto mensile, con una media giornaliera degli accessi. Selezionando il riferimento ipertestuale corrispondente al nome di un mese, se ne ottengono maggiori dettagli.

Figura 169.3. All'interno delle statistiche di un mese, è interessante sapere quali sono le risorse richieste più di frequente.

figure/a2-webalizer-top10-entry-pages

La figura precedente mostra in particolare le «pagine di ingresso», o presunte tali. Si tratta in pratica di quelle pagine a cui un utente accede all'inizio della sua visita. Si tratta probabilmente di risorse a cui si arriva attraverso dei segnalibri, oppure dei riferimenti da altri siti.

Figura 169.4. L'elenco dei referenti.

figure/a2-webalizer-referer

La figura precedente mostra l'elenco degli indirizzi di provenienza per l'ingresso dei visitatori. In questo caso, trattandosi delle statistiche di http://a2.swlibero.org, si manifesta una carenza nella configurazione, dove sarebbe stato meglio mascherare i referenti appartenenti al dominio a2.swlibero.org. Comunque, si può vedere nell'esempio che uno dei referenti è un noto motore di ricerca.

Non sempre i file delle registrazioni contengono le informazioni sui referenti. Spesso è necessario intervenire nella configurazione del servente HTTP per ottenere queste indicazioni.

Figura 169.5. L'elenco delle stringhe di ricerca estrapolate dagli indirizzi referenti.

figure/a2-webalizer-search-strings

La figura precedente mostra in pratica che Webalizer è riuscito a individuare delle stringhe di ricerca dagli indirizzi dei referenti, appartenenti a motori di ricerca noti.

169.3   Riferimenti

Appunti di informatica libera 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini -- daniele @ swlibero.org

1) Eventualmente, le statistiche di accesso possono servire anche per dimostrare la visibilità reale di pagine a contenuto pubblicitario, ma rimane il fatto che sia facile creare dei file di registrazioni fasulli per ingannare i finanziatori.

2) Webalizer   GNU GPL con l'uso di una libreria che ha una licenza differente


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome statistiche_di_accesso.html

[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]