A cura di Sean Carlos
Pubblicato da O'Reilly Media come Analyzing Web Logs with AWStats.
Un aspetto cruciale, purtroppo troppo spesso trascurato, della gestione efficace di un sito Internet è lo studio delle attività che avvengono al suo interno. Le informazioni scoperte portano ad una comprensione delle dinamiche utile per le iniziative di miglioramento continuo che vanno dall'architettura del sito ai contenuto del sito stesso sino alla generazione del traffico. Questo articolo, suddiviso in due parti, mostra come utilizzare lo strumento open source AWStats per eseguire l'analisi dei log file di un web server. Nella prima parte è mostrato come preparare un log file campione, eseguire un'installazione di base d'AWStats, generare report e comprendere la terminologia propria della web analytics; la seconda parte si concentrerà invece sull'interpretazione dei report. L'intento principale è far chiarezza su alcuni dei fraintendimenti più comuni riguardo gli accessi, le pagine e le visite. La lezione fornirà le basi per configurare il programma in modo da soddisfare le richieste della produzione.
L'analisi dei web log può essere impegnativa per le risorse del server e viene eseguita, di solito, su un sistema diverso dal web server di produzione. Questa separazione permette anche di sfruttare la maggiore flessibilità offerta da una architettura eterogenea, in cui i web server potrebbero girare su Linux mentre gli analizzatori log funzionare sotto Windows o vice versa. Abbiamo immaginato uno scenario minimalista in cui si sia installato AWStats su una workstation per analisi ad hoc. Anche se AWStats funziona su qualsiasi piattaforma che supporti un interprete Perl recente, questo articolo fa riferimento a AWStats 6.4 con utilizzo di Linux o MS Windows.
File eseguibili per Linux (.rpm) e Windows (.exe) sono disponibili sul progetto AWStats. Per prima cosa occorre scaricare l'eseguibile appropriato per la propria workstation. Nel caso di un'installazione Windows, uno script chiederà le informazioni sul proprio ambiente web. È sufficiente rispondere con N per saltare questo passo, e premere Invio fino a quando la finestra di richiesta si chiuderà.
Una volta terminata l'installazione, i programmi e la documentazione AWStats saranno installati sul proprio disco rigido, probabilmente in /usr/local/awstats/ o C:\Program Files\AWStats. A questo punto assicurarsi che Perl sia disponibile. Sulla riga di comando del sistema, scrivere:
$ perl -v
Nel caso Perl sia installato saranno disponibili le informazioni relative versione corrente. AWStats si interromperà nel caso che la versione sia minore della 5.005_03; è consigliabile l'ultima versione (5.8.X), poiché offre migliori prestazioni. Per installare o aggiornare Perl, scaricare una versione per Linux da Perl per Linux o per Windows da ActivePerl d'ActiveState.
Per produrre i report, occorre avere a disposizione i log di un web server di almeno un giorno. Se si sta utilizzando un server Apache, assicurarsi di avere impostato il formato logging del web server a Combinato. Nel caso del web server Microsoft IIS, impostare il formato su una versione modificata del W3C Extended Log File Format, seguendo le istruzioni in configurazione AWStats per IIS, Parte B, Passo 1. Queste configurazioni aggiungono alcuni dati necessari come user agent (browser) e referrer (provenienze accessi) alla configurazione di base. Per altri web server, consultare i valori del parametro AWStats LogFormat
per ottenere una lista dei dati richiesti per una reportstica completa.
Riavviare dunque il web server per attivare le nove impostazioni del logging (dopo avere salvato i vecchi log, se necessario). Se si ha accesso ai dati di un web server di produzione che non si può riavviare, è possibile utilizzare i dati così come sono, con due condizioni: se alcuni dei dati richiesti, come browser, non sono tracciati, i relativi report AWStats saranno vuoti. Inoltre, occorrerà mappare manualmente ogni campo tracciato utilizzando il parametro LogFormat
, altrimenti, la maggior parte del file apparirà ad AWStats come corrotto.
Una volta che il logging abbia funzionato per almeno un giorno di calendario, occorre copiare il file sul sistema su cui è installato AWStats, utilizzando la seguente sintassi:
$ cp /var/log/httpd/access_log /tmp/access.log
# o
> copy C:\WINDOWS\system32\Logfiles\W3SVC1\ex050623.log C:\temp\access.log
Adattare i percorsi di origine in base alla propria configurazione del web server.
È possibile combinare anche più log con date diverse utilizzando il commando type
(Windows) o cat
(Linux) (in un'impostazione di produzione, il nome del file sarebbe inserito in un parametro). Fare attenzione a combinare file in ordine cronologico:
$ cat logfile1 logfile2 logfile3 > access.log
Nel caso di più server in load balancing, unire i log con l'utilità AWStats logresolvemerge.pl.
Con l'installazione di AWStats viene fornito un esempio di file di configurazione: awstats.model.conf. Copiare il file, cambiando model
nel nome del dominio da analizzare. Solitamente viene utilizzato il nome del dominio, in realtà può essere qualsiasi cosa. L'esempio analizza i dati di antezeta.it, così il modello è antezeta
:
$ cp /etc/awstats/awstats.model.conf /etc/awstats/awstats.antezeta.conf
> copy "C:\Program Files\AWStats\wwwroot\cgi-bin\awstats.model.conf"
"C:\Program Files\AWStats\wwwroot\cgi-bin\awstats.antezeta.conf"
Aprire i file nell'editor di testo preferito, notepad.exe, vi o altro. Cambiare ognuno dei seguenti valori con quello corretto (in cui antezeta.it rappresenta il proprio dominio):
SiteDomain="antezeta.it"
HostAliases="antezeta.it localhost 127.0.0.1"
LogType=W
Mettere il parametro LogFormat
a 1
per Apache, 2
per Microsoft IIS < 6.0, o date time cs-method cs-uri-stem cs-username c-ip cs-version cs(User-Agent) cs(Referer) sc-status sc-bytes
per IIS 6.x. Per altri web server, consultare la documentazione nel file di configurazione AWStats.
LogFormat=1
Mettere il parametro DNSLookup
a 1
a meno che il web server non sia già impostato per la risoluzione degli indirizzi IP con i nomi degli Host (reverse DNS lookup), cioè, traducendo l'indirizzo IP ospite in user34.adsl.myisp.com o simile. Dal momento che la risoluzione del DNS è lenta, i web server, di solito, non la eseguono, poiché rallenterebbe la navigazione degli utenti.
DNSLookup=1
Salvare il file.
AWStats utilizza dei database intermedi per produrre i propri report; uno per ogni mese di ogni anno per ogni file di configurazione creato. Questi file rappresentano una versione ottimizzata dei dati dei web log grezzi, basata sulle impostazioni nel file di configurazione AWStats. Per generare un file per i log file del proprio web server occorre eseguire il comando appropriato per il proprio sistema operativo (sostituire antezeta con il proprio dominio):
$ perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=antezeta
-update -LogFile=/tmp/access.log
> perl "C:\Program Files\AWStats\wwwroot\cgi-bin\awstats.pl" -config=antezeta
-update -LogFile=C:\temp\access.log
Si vedrà una schermata simile al seguente esempio Windows:
Update for config "C:\Program Files\AWStats\wwwroot\cgi-bin\awstats.antezeta.conf"
With data in log file "C:\temp\access.log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 539
Found 1 dropped records,
Found 4 corrupted records,
Found 0 old records,
Found 534 new qualified records.
Sarà generato un file di statistica awstatsMMAAAA.antezeta.txt nella stessa cartella come awstats.pl (a meno che non si abbia indicato un valore diverso a DirData in awstats.antezeta.conf):
Directory of C:\Program Files\AWStats\wwwroot\cgi-bin\
06/23/2005 03:51 PM 6,633 awstats062005.antezeta.txt
dove MM è il mese e AAAA l'anno dei dati dei log del web server. Nel caso in cui i dati siano a cavallo di due mesi, la base dati statistica sarà composta da due file.
Eseguendo di nuovo il comando precedente verrà generata l'opportuna base dati per le statistiche. Invece di 534 nuovi record, se ne avranno 534 vecchi:
Update for config "C:\Program Files\AWStats\wwwroot\cgi-bin\awstats.antezeta.conf"
With data in log file "C:\temp\access.log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Jumped lines in file: 0
Parsed lines in file: 539
Found 1 dropped records,
Found 4 corrupted records,
Found 534 old records,
Found 0 new qualified records.
AWStats si accorge che è stato specificato un fileio vecchio e, correttamente, ignora i vecchi dati. Tuttavia AWStats è meno flessibile quando viene a trattare log file non ordinati – pertanto occorre elaborarli cronologicamente. Se si salta l'elaborazione di un giorno, AWStats li ignorerà quando si tenta di elaborarli dopo avere elaborato i giorni successivi. La soluzione è di cancellare il file di quel mese e rielaborare i dati dei log per l'intero mese fino all'ultimo giorno disponibile per quel mese. Allo stesso modo, alcuni cambiamenti al file di configurazione AWStats influiscono sulla generazione del file di statistiche. Se i file di log non sono grandi e si hanno dei dubbi, è possibile cancellare l'archivio di statistica e rielaborare i log.
LogFormat
. In questo caso, occorre confrontare le prime righe del file log con l'opzione LogFormat
, adattando, se necessario, la propria configurazione.La conservazione dei file di log originali per periodi estesi è una buona norma, a meno che non ci siano vincoli legali o una politica aziendale contraria. L'accesso ai log storici permette di rielaborare i report se successivamente viene fatto un cambiamento del file di configurazione o si decide di passare ad un altro analizzatore per le statistiche web.
Dopo aver creato una base dati statistica, è possibile creare i report. Dal momento che AWStats ha una buona interfaccia CGI per la reportistica su richiesta, è facile elaborare report Html statici per evitare la necessità di riconfigurare il proprio web server. I seguenti comandi genereranno i report nella cartella /tmp o C:\temp:
$ perl "/usr/local/awstats/tools/awstats_buildstaticpages.pl"
-config=antezeta -lang=en
-awstatsprog="/usr/local/awstats/wwwroot/cgi-bin/awstats.pl"
-dir="/tmp"
-diricons="/usr/local/awstats/wwwroot/icon"
> perl "C:\Program Files\AWStats\tools\awstats_buildstaticpages.pl"
-config=antezeta
-lang=en -awstatsprog="C:\Program Files\AWStats\wwwroot\cgi-bin\awstats.pl"
-dir="C:temp" -diricons="../Program%20Files/AWStats/wwwroot/icon"
AWStats genera i report Html nella cartella specificata dal parametro -dir
; il file principale è awstats.config.html (per questo esempio, awstats.antezeta.html). Aprirlo in un browser Web.
Se le immagini dovessero essere trasparenti invece che colorate, verificare il percorso specificato con il parametro -diricons. Questo valore è inserito nei file Html. Nell'esempio per Windows indicato sopra abbiamo dovuto codificare lo spazio nel nome del percorso con la notazione %20
. Abbiamo utilizzato anche barre inclinate Html piuttosto che barre inverse Windows.
Per contestualizzare i report, cominciamo con il guardare i dati grezzi di un log e, da quello, definiamo la terminologia di base per la web analytics.
Utilizzando il formato di configurazione specificato prima, ogni web log avrà più righe di testo, ciascuna contenente nove campi di dati. Per capire il lavoro che AWStats deve eseguire, consideriamo l'aspetto di un log file:
Campo | Esempio di dati | Spiegazione | |
---|---|---|---|
1 | IP Host (utente) | d81-211-134-62.cust.tele2.it | C'è stata una risoluzione DNS. Il web server può farlo, ma è possibile farlo anche successivamente. Visto l'host dell'utente, c'è una forte probabilità che la richiesta provenga dall'Italia. (Tuttavia, se l'host risultasse ad esempio proxy.alitalia.it, l'utente potrebbe aver lavorato per Alitalia a Boston!) |
2 | 1413 identità (nome utente) RFC del cliente determinato da identd . |
– | Raramente utilizzato. I clienti PC non eseguono, di solito, identd . Un trattino indica l'assenza di un valore. |
3 | Utente autenticato (nome del login) | – | Il nome del login per un login richiesto al web server. Di solito, non è valorizzato – la maggior parte dei siti web utilizzano login di application server, non login di web server. |
4 | La data e l'ora quando il server ha finito l'elaborazione della richiesta | [08/Jun/2005:19:03:22 +0200] |
Il tempo include l'offset UTC |
5 | La richiesta dell'utente | GET/HTTP/1.1 |
In questo caso, il client ha richiesto il documento di default / (index.html) utilizzando il metodo GET della versione 1.1 di protocollo HTTP. |
6 | Lo Stato della risposta inviato al client | 200 |
|
7 | I byte inviati escludendo le testate HTTP | 4544 |
|
8 | Referer (sic) URL, se ce n'è uno | https://antezeta.it/chisiamo.html |
L'URL da cui il client ha ottenuto la richiesta. Questo campo è vuoto se l'utente immette direttamente un URL, sceglie un segnalibro, o utilizza un software di privacy che impedisce che le informazioni vengano inviate. |
9 | Identificazione User Agent. Comprende, di solito, il sistema operativo, il browser e le relative versioni. | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Fedora/1.0.4-1.3.1 Firefox/1.0.4 |
Questo è un browser Firefox, versione 1.0.4, su un sistema Linux Fedora Core. Nota: alcuni browser, come Opera, permettono all'utente di scegliere quale identificazione inviare. Un utente può fare sembrare di utilizzare Microsoft Internet Explorer 6 anche quando utilizza Opera. Questa funzionalità di impostore è una risposta a tutti i siti progettati male – siti con la sigla "Ottimizzato per browser x" che rifiutano di lavorare con i browser conformi agli standard web. |
Questa era una riga del log di un web server corrispondente a una richiesta soddisfatta per https://antezeta.it/. Rappresenta quello che viene comunemente chiamato un accesso. Un utente anonimo ha navigato partendo dalla pagina https://antezeta.it/chisiamo.html.
Occorre considerare che la pagina Home del sito nell'esempio sopra è costituita in realtà da un gruppo di file – un file di testo (index.html), un foglio di stile per indicare la formattazione (CSS), sei file d'immagine (gif, ico e png) e del codice dinamico lato client (JavaScript) memorizzato in due file separati sul web server. Con una semplice richiesta per la pagina home si innescheranno dieci richieste di file al web server, e così dieci accessi:
Qtà |
Articolo |
---|---|
1 | File di testo Html; ad esempio, index.html |
1 | Le istruzioni di formattazione memorizzate nel CSS |
6 | Le immagini memorizzate in file GIF, ICO, e PNG |
2 | Il codice JavaScript js |
10 | Accessi Totali |
Probabilmente la misura più gettonata, gli accessi, è anche la misura meno significativa.
Insieme al consumo di banda, la misura degli accessi può essere utile per il dimensionamento del server e la pianificazione della capacità richiesta. Mentre il numero di accessi viene spesso citato come misura di successo di un sito, è fondamentale notare che gli accessi non hanno nessun valore intrinseco al business. Al contrario, indicano probabilmente soltanto una scarsa comprensione della loro significatività commerciale.
Poiché Internet è maturato, l'attenzione si è spostata dalla misura degli accessi a quella delle pagine viste. Sfortunatamente, questo nuova attenzione ha aperto un nuovo vaso di Pandora dal momento che non esiste alcuna definizione standard di pagina. Un log file di un web server contiene semplicemente informazioni sugli oggetti richiesti al web server. Dipende dal software di analisi dei log file dare un significato semantico a quegli oggetti.
AWStats, nella definizione di una pagina, lavora per esclusione. Per default, qualsiasi oggetto richiesto da un utente sul web server è una pagina a meno che non abbia un nome di file con un suffisso di css, js, classe, gif, jpg, jpeg, png, bitmap o ico. Occorre esplicitamente aggiungere qualsiasi altro oggetto che non si vuole contare come pagina nei report di AWStats. Ad esempio, per aggiungere i file ZIP e le animazioni Flash a questa lista è sufficiente inserire i loro suffissi nella direttiva AWStats NotPageList
nel file di configurazione di AWStats:
NotPageList="css js class gif jpg jpeg png bmp ico swf zip tgz gz tar"
Quindi AWStats conterà ogni oggetto non compreso nella lista seguente come pagina.
Suffisso | Descrizione |
---|---|
css |
Fogli di Stile a Cascata |
js |
Codice JavaScript |
class |
File di programma Java |
gif , jpg , jpeg , png , e bmp
|
Formati vari di immagini e fotografie |
ico |
File icona ; molti siti hanno un logo di società salvato come favicon.ico;; molti browser utilizzano questo per i segnalibri (preferiti) e le etichette |
swf |
Animazione Flash ShockWave |
zip , tgz , gz , e tar
|
Formati file compressi creati da PKZip, WinZip, tar, gzip o simili |
Uno dei vantaggi di questo tipo di approccio è che, se si sta utilizzando un CGI per generare pagine dinamiche, non occorre preoccuparsi della gestione di ogni richiesta CGI come se fosse una pagina – questo sarà automatico.
SkipFiles
per elencare i file da escludere.Come il concetto di pagina è aperto a molteplici interpretazioni, così il concetto di visitatore (e una visita, è anche detta sessione) è ancora più difficile da definire. I dati dei log non definiscono né tracciano l'entità visitatore. Si possono utilizzare numerosi approcci euristici per estrapolare i visitatori singoli dai dati dei log; ognuno aggiunge un piccolo di miglioramento.
Alcuni problemi significativi sono inerenti alla registrazione dei dati dei visitatori e alle loro visite con software d'analisi dei web log come AWStats.
Un ISP può riassegnare l'indirizzo IP a differenti utenti nel corso di una stessa giornata. Supponiamo, ad esempio, che Giacomo si colleghi ad Internet utilizzando il suo collegamento tramite modem alle 7.35 e che, dopo alcuni minuti, si disconnetta. Il suo indirizzo IP, dialup 062.libero.it, è ora libero. Alle 8.10, Patrizia si collega con il suo modem e le viene assegnato l'indirizzo IP dialup 062.libero.it. Se Patrizia visita un sito, è lei lo stesso visitatore della stessa visita (sessione) di prima?
La convenzione comunemente accettata è che una visita finisce se, dopo 30 minuti, non c'è alcuna attività ulteriore del visitatore. Così, la visita di Patrizia sarebbe una nuova sessione o visita – ma non c'è nessun modo di sapere che lei è una persona diversa da Giacomo. Quando Giacomo si collega più tardi lo stesso giorno, e supponiamo che lo faccia dall'ufficio, apparirà come un visitatore diverso dal Giacomo che ha fatto una visita alle 7.35, visto che pur avendo un IP fisso a casa, avrà senz'altro ricevuto un IP diverso dall'ufficio.
Malgrado queste limitazioni degli approcci euristici, il concetto di visitatori e le sessioni (ogni singola visita) rimangono strumenti validi come indicazioni di comportamento degli utenti e delle tendenze generali.
N. di visitatore | Visite (sessioni) | Visite uniche |
---|---|---|
1 | 2 | 1 |
2 | 1 | 1 |
3 | 12 | 1 |
3 | 15 | 3 |
La banda utilizzata interessa il personale tecnico, poiché c'è, di solito, un costo associato alla sua occupazione. A livello più macroscopico, le grandi dimensioni dei singoli file causeranno problemi di prestazioni, specialmente per utenti che facciano uso di modem.
La parte finale di questa serie riguarderà i report che abbiamo elaborato, utilizzando le definizioni di cui sopra per identificare metriche da monitorare sia dal punto di vista del proprio business sia per gli aspetti tecnici.
Indice completo
Lascia che Antezeta ti aiuti nella selezione, implementazione ed utilizzo di una soluzione per i tuoi Web Analytics! Contattaci per saperne di più su Statistiche Internet - Web Analytics e sul resto dell'ecosistema web.