[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 340.   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)

340.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.

Il formato in questione per la registrazione degli accessi, viene definito Common log format, che ha una variante più completa, definita come formato «combinato». In generale, se possibile, è meglio usare il formato combinato che contiene l'indicazione del referente, ovvero dell'indirizzo dal quale proviene il riferimento ipertestuale.

Eventualmente, nel caso di Apache, è una direttiva simile a quella seguente, quella che serve a dichiarare un tipo di registrazione che rappresenta espressamente questo tipo di tracciato standard:(2)

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

L'esempio seguente riguarda alcune righe di un registro di accesso; si osservi che le righe appaiono spezzate per motivi tipografici:

82.184.47.185 - - [28/May/2004:10:53:31 +0000] "GET /docs/samba/samba11.html HTTP/1.0" 200 32227 \
  \"http://www.google.it/search?q=creazione+utente+samba&ie=UTF-8&hl=it&lr=" \
  \"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020623 Debian/1.0.0-0.woody.1" 82.184.47.185 - - [28/May/2004:10:53:32 +0000] "GET /docs/samba/7.jpg HTTP/1.0" 200 29924 \
  \"http://linuxdidattica.org/docs/samba/samba11.html" \
  \"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020623 Debian/1.0.0-0.woody.1" 82.184.47.185 - - [28/May/2004:10:53:33 +0000] "GET /docs/samba/8.jpg HTTP/1.0" 200 30174 \
  \"http://linuxdidattica.org/docs/samba/samba11.html" \
  \"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020623 Debian/1.0.0-0.woody.1" 82.184.47.185 - - [28/May/2004:10:53:33 +0000] "GET /docs/samba/6.jpg HTTP/1.0" 200 39877 \
  \"http://linuxdidattica.org/docs/samba/samba11.html" \
  \"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020623 Debian/1.0.0-0.woody.1" 82.184.47.185 - - [28/May/2004:10:53:34 +0000] "GET /docs/samba/9.jpg HTTP/1.0" 200 16244 \
  \"http://linuxdidattica.org/docs/samba/samba11.html" \
  \"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020623 Debian/1.0.0-0.woody.1" 82.184.47.185 - - [28/May/2004:10:53:34 +0000] "GET /docs/samba/10.jpg HTTP/1.0" 200 21050 \
  \"http://linuxdidattica.org/docs/samba/samba11.html" \
  \"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020623 Debian/1.0.0-0.woody.1" 82.184.47.185 - - [28/May/2004:10:53:35 +0000] "GET /docs/samba/11.jpg HTTP/1.0" 200 20936 \
  \"http://linuxdidattica.org/docs/samba/samba11.html" \
  \"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020623 Debian/1.0.0-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 82.184.47.185. Per la precisione, è stata prelevata la risorsa corrispondente a http://nodo/docs/samba/samba11.html. L'utente che ha richiesto questa risorsa lo ha fatto a partire da un riferimento abbastanza complesso, che si intende essere una pagina generata da un motore di ricerca, come si vede nella figura successiva.

Figura 340.3. Un record di un registro di accesso secondo il formato combinato. Si può osservare che in questo caso i campi numero due e numero tre non contengono informazioni. Il formato CLF tradizionale, a differenza di quello combinato, non ha gli ultimi due campi.

analisi del primo record

Continuando l'osservazione dell'esempio, si può vedere che a partire da http://nodo/docs/samba/samba11.html sono state raggiunte le risorse /docs/samba/7.jpg, /docs/samba/8.jpg, /docs/samba/6.jpg, /docs/samba/9.jpg, /docs/samba/10.jpg e /docs/samba/11.jpg, che evidentemente sono immagini inserite nella pagina di partenza.

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/httpd/access.log, per ottenere un file con gli accessi che si diramano a partire da http://nodo/servizi/casa/, si potrebbe usare il comando seguente:

cat /var/log/httpd/access.log | filtra /servizi/casa/ \
  \> /var/log/tmp_servizi_casa.log
[Invio]

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

340.2   Webalizer

Webalizer (3) è un programma relativamente semplice per l'analisi di un file di registrazioni in formato CLF (Common log format) o in formato combinato, 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.

340.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
-c file
Permette di indicare un file di configurazione alternativo a quello predefinito.
Debug yes|no
-d
Permette di ottenere maggiori informazioni durante l'elaborazione delle statistiche.
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. La sigla clf sta per Common log format, che però vale anche per il formato «combinato», che contiene le informazioni sul referente e sul tipo di navigatore.
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.
AllSites yes|no
AllURLs yes|no
AllReferrers yes|no
AllAgents yes|no
AllSearchStr yes|no
AllUsers yes|no
Queste direttive, se attivate, fanno sì che rimanga disponibile un elenco completo delle informazioni a cui fanno riferimento. Si tratta, rispettivamente, dell'origine delle degli accessi, degli indirizzi richiesti, degli indirizzi referenti, dei programmi usati per accedere, delle stringhe di ricerca e degli utenti (ammesso che l'informazione sia disponibile).
TopAgents n
-A n
Mostra l'elenco dei programmi usati per accedere, contenente al massimo n voci.
TopReferrer n
-R n
Mostra l'elenco degli indirizzi referenti, contenente al massimo n voci.
TopSites n
-S n
Mostra l'elenco degli indirizzi di origine, contenente al massimo n voci.
TopURLs n
-U n
Mostra l'elenco degli indirizzi richiesti, contenente al massimo n voci.
TopCountries n
-C n
Mostra l'elenco delle nazioni di origine, contenente al massimo n voci.
TopEntry n
-e n
Mostra l'elenco delle pagine di ingresso, contenente al massimo n voci.
TopExit n
-E n
Mostra l'elenco delle pagine di uscita, contenente al massimo n voci.
TopKSites n
Mostra l'elenco degli indirizzi di origine, in ordine di dimensione dei dati prelevati, contenente al massimo n voci.
GroupAgent modello \
  \nome_gruppo
Dichiara il nome indicato come ultimo argomento della direttiva, al quale si associa tutto il traffico dei programmi che corrispondono al modello. Si osservi che questa direttiva non rimuove le indicazioni dei programmi che vengono raggruppati in questo modo.
HideAgent modello
Questa direttiva si usa normalmente dopo una direttiva GroupAgent corrispondente, con lo scopo di non mostrare i nomi dei programmi usati per accedere, che già vengono raggruppati in qualche modo.
MangleAgents n
-M n
Fa in modo di controllare una prima aggregazione dei programmi usati per accedere. Il numero va da zero a cinque, dove zero richiede di avere tutte le informazioni, mentre cinque le riduce al minimo.
CountryGraph no|yes
-Y
Consente di eliminare il grafico delle nazioni di origine. Ciò è utile in modo particolare quando gli indirizzi di origine non vengono trasformati in nome di dominio.

340.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.

340.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[Invio]

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 340.7. La pagina index.html generata da Webalizer.

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 340.8. All'interno delle statistiche di un mese, è interessante sapere quali sono le risorse richieste più di frequente.

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 340.9. L'elenco dei referenti (si ottiene questa informazione solo se i dati di partenza sono in formato «combinato»).

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 340.10. L'elenco delle stringhe di ricerca estrapolate dagli indirizzi referenti.

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.

340.3   Riferimenti

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) 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) Questa direttiva dichiara un tipo di registrazione, a cui poi si fa riferimento con altre direttive, nel momento in cui si stabilisce quale file deve contenere le registrazioni relative.

3) 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.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!