ANALISI DI UN SITO WEB

La costruzione di un sito web viene completata con l'analisi degli accessi per verificare quanto il sito sia visitato e quanti e quali documenti siano tra i più richiesti. L'analisi delle stringhe per la ricerca digitate può inoltre aiutare a rendere i documenti più accessibili in base alle preferenze.

La comunità Open Source mette a disposizione due validi strumenti: ‘webalizer’ per le statistiche di accesso ed ‘ht://Dig’ (recensito nello scorso numero) come motore di indicizzazione delle pagine web. Questi prodotti sono distribuiti con licenza GPL (GNU public license) e sono reperibili per ogni distribuzione LiNUX agli indirizzi: http://www.webalizer.com e http://www.htdig.org.

Webalizer 2.01

Webalizer è un'applicazione client che legge e analizza i file di log generati da un applicativo server (tipo Apache o Squid) e produce statistiche in formato HTML. L’analisi dei risultati viene rappresentata in formato grafico per facilitarne la lettura ed anche in formato testuale con voci ripartite in più colonne.

I formati di file supportati sono lo CLF (common log format) generato da server web tipo `apache’,lo xferlog e lo squid proxy log generati dal server ftp tipo 'wu-ftp’ e dal proxy server ‘squid’.

Avvio ed uso di webalizer

L'avvio di webalizer avviene con il comando digitato al prompt di sistema:

[root@ /root]# webalizer

L’applicazione webalizer accetta sia una nutrita gamma di opzioni, sia più file di configurazione (quello per default è /etc/webalizer.conf) laddove i report da generare siano più di uno; per esempio uno per il web server ‘apache’, uno per il server ftp ‘wu-ftpd’ ed infine uno per il proxy server ‘squid’.

Allo scopo è preferibile l'opzione ‘-c’ come nel seguente comando.:

[root /root]# webalizer -c /etc/webalizer.conf /var/log/httpd/access_log

oppure per un file di log per server ftp:

[root /root]# webalizer -c /etc/webalizer-ftp.conf /var/log/xferlog

Tuttavia le opzioni da passare in linea di comando hanno una equivalente parola chiave nel file di configurazione, per questo ci limiteremo a descrivere solamente questo ultimo metodo.

Un file di history (statistiche precedenti) viene altresì generato se si abilita l'analisi incrementale, scelta indispensabile se i file di log sono ruotati da una applicazione cron; questo meccanismo comporta un tempo sensibilmente più lungo per completare l'operazione, tuttavia garantisce che le statistiche siano coerenti con i dati letti.

L'output generato da webalizer è composto da più report in formato html e grafici in formato PNG per ogni mese di attività ed una pagina di sommario che raccoglie gli ultimi dodici mesi di statistiche (index.html). Si veda la Figura 1.

In Figura 2 vi è il sommario dell'accesso giornaliero al server Web del mese corrente. Le tabelle con i valori numerici sono riassunte con un grafico ad istrogrammi. Uno a torta invece suddivide gli accessi per nazione di provenienza (Figura 3), mentre in Figura 4 si vedono le stringhe di ricerca digitate nel form della home page ed inviate all'applicazione htdig.

Per concludere nelle Figure 5 come il sito è (ben voluto e ricercato) dai motori di ricerca (sic!).




Fig. 1


Fig. 2




Fig. 3




Fig. 4




Fig. 5

File di configurazione standard

Se l'introduzione ha convinto il lettore parliamo di informatica seria! - Stop ai colori ed armatevi di vi o emacs... -

Di seguito un file di configurazione autoesplicativo.

# file /etc/webalizer.conf
#
# Il percorso completo del nome del file da analizzare.
# In questo esempio è il log generato dal server web apache
LogFile		/var/log/httpd/access_log

# Il tipo di formato di log da analizzare. Webalizer si
# aspetta in input un file CLF.
# i valori che può assumere sono:'clf', 'ftp' o 'squid'.
LogType		clf

# La directory di uscita dove memorizzare i file di output.
# Se non viene specificata viene usata la directory corrente.
OutputDir		/var/www/html/reports

# Rappresenta il nome del file che memorizza i dati degli ultimi
# dodici mesi di log per generare la pagina index.html.
# Se non viene specificato nessun percorso, ma solo il nome del
# file esso è relativo al parametro OutputDir.
HistoryName		webalizer.hist

# Porre a yes se si vuole usare il processo incremntale, utile
# in presenza di file di log che ruotano almeno due volte al mese.
Incremental		yes

# Come per il parametro HystroyName, solo relativo al processo
# incrementale.
IncrementalName	webalizer.current

# Il testo da visualizzare come titolo. In coda viene riportato
# anche il nome dell'host webalizer è localizzato.
ReportTitle		“Usage Statistics for”

# Definisce l'hostname per il report.
# Viene usato sia nel titolo che nella tabella degli URL.
# Questo parametro aiuta in presenza di virtual server o di
# web server remoti.
# Se non viene specificato viene usata la chiamata di sistema
# standard per determinarne il nome.
HostName		linuxdidattica.org

# L'estensione da postporre ai file di reports.
# Possibili valori possono essere: php, phtml...
HTMLExtension	html

# “PageType” specifica a webalizer i file di pagina.
# Per la spiegazione leggere la sezione “Analisi dei risultati”.
PageType		htm*
PageType		cgi
PageType		phtml
PageType		php3
PageType		php
PageType		pl


# “DNSCache” specifica il nome del file di cache utilizzato per
# lo reverse lookup se nei file di log viene individuato un
# numero IP.
# Se non viene speicficato un percorso il nome è relativo alla
# directory di uscita.
DNSCache		dns_cache.db

# Consente di specificare il numero di processi figli utilizzati
# per il reverse lookup degli indirzzi IP.
# Se viene specificato un numero diverso da zero, la cache verrà
# aggiornata ad ogni avvio di webalizer e prima del processo di
# analisi.
# Il valore zero disabila la cache DNS.
DNSChildren		5

# Elimina i messaggi di ouput, utile se webalizer viene avviato
# da un cron job.
Quiet			no

# A differenza del parametro “Quiet” disabilita anche i messagi di
# errore e tutti i messaggi in generale.
ReallyQuiet		no

# Imposta il default timeout in secondi per la visita o sessione.
# Leggere il paragrafo “Analisi dei risultati”.
VisitTimeout	1800

# Le parole chiave con “Top” definiscono il numero di entrate
# visualizzabile per ogni tabella. Il parametro di default varia
# secondo tabella.
# Il valore di zero disabilita la tabella corrispondente.
TopSites		30
TopURLs		30
TopAgents		15
TopCountries	50 
TopEntry		10
TopExit		10
TopSearch		20
TopUsers		20

# Le parole chiave con “All” generano delle pagine HTMl separate
# dove sono contenuti tutti gli URL, Sites, Referrers, User Agents,
# Search Strings e Usernames.
# Per raggiungere queste pagine viene aggiunto un link sotto alla
# tabella relativa.

AllSites		yes
AllURLs		yes
AllReferrers	yes
AllAgents		no
AllSearchStr	yes
AllUsers		yes

# Le parole chiave con “Hide”, “Group”, “Ignore” e “Include”
# consento di modificare il comportamento di “Sites”, “URL”,
# “Referrers”, “User Agents” e “Usernames”.
# “Ignore” impone a webalizer di ignorare in modo completo il
# recortd.
# “Hide” non visualizza il record nella tabella top, tuttavia
# viene contato nei totali.
# “Group” raggruppa oggetti simili nella tabella “Top”.
# questi oggetti non possono essere nascosti e non vengono contati
# nella tabella totale.
# Gli oggetti non vengono nascosti singolarmente, quindi si dovrà
# eventualmente considerare un record Hide.
# “Include” forza l'inserimento di record nel file di log.
# hanno precedenza rispetto ad “Ignore”.
# I valori possono essere completati per mezzo di wildcard “*”.

HideSite		localhost
HideSite		217.57.34.98
HideSite		*linuxdidattica.org
HideSite		217.57.34.100
HideSite		192.168.*
HideSite		*.inf.besta
HideSite		*.mat.besta

HideReferrer	*linuxdidattica.org
HideReferrer	217.57.34.98
HideReferrer	217.57.34.100
HideReferrer	192.168.*
HideReferrer	localhost
HideReferrer	*.inf.besta
HideReferrer	*.mat.besta

HideURL		*.gif
HideURL		*.GIF
HideURL		*.jpg
HideURL		*.JPG
HideURL		*.png
HideURL		*.PNG
HideURL		*.ra
HideURL		*.exe


HideUser		root
HideUser		admin

GroupURL		/cgi-bin/*		CGI Scripts
GroupURL		/images/*		Images

IgnoreURL		/scripts*
IgnoreURL		/*.exe
IgnoreURL		/c/*
IgnoreURL		/d/*
IgnoreURL		/MSADC/*
IgnoreURL		/msadc/*
IgnoreURL		/_vti_bin/*
IgnoreURL		/_mem_bin/*

IgnoreSite		*.inf.besta
IgnoreSite		*.mat.besta
IgnoreSite		192.168.*
IgnoreSite		*linuxdidattica.org
IgnoreSite		localhost

IgnoreURL 		/rapporti/*
IgnoreURL		*.css
IgnoreURL		/pagine_prova/

# “SearchEngine” viene usato per individuare la stringa immessa
# per ricercare il sito con i motori di ricerca.
SearchEngine	yahoo.com		p=
SearchEngine	altavista.com	q=
SearchEngine	google.com		q=
SearchEngine	eureka.com		q=
SearchEngine	lycos.com		query=
SearchEngine	hotbot.com		MT=
SearchEngine	msn.com		MT=
SearchEngine	infoseek.com	qt=
SearchEngine	webcrawler		searchText=
SearchEngine	excite		search=
SearchEngine	netscape.com	search=
SearchEngine	mamma.com		query=
SearchEngine	alltheweb.com	query=
SearchEngine	northernlight.com	qr=

Non sono state documentare le parole chiave con “Dump” le quali consentono di memorizzare l'output in un formato importatibile in database SQL.

Analisi dei risultati

Ogni richiesta inviata al server (pagine html, file immagine, ...) viene registrata e classificata nell'output delle statistiche come “Hits”.

Le pagine html, come i file di immagine richiedono l'invio al client del contenuto stesso, questa azione viene registrata come file ed il contatore corrispondente “Files”, viene incrementato. Le “Hit” rappresentano i “colpi” in entrata, i “Files” le risposte in uscita.

Il contatore “Pages” rappresenta qualsiasi cosa che genera un documento in formato HTML, o un documento HTML stesso; sono esclusi quindi immagini, suoni, file compressi,... Generalmente viene considerato pagine tutto quello che termina con .html, .htm, .cgi, .php, .php3, .php4, .cgi. Il comportamento è modificabile.

Le richieste pervenute al server da un unico indirizzo IP vengono registrate nel contatore “Sites”.

Legato al contatore “Sites” c'è il contatore “Visits”; esso lega un valore di timeout, generalmente 30 minuti primi, per ogni “Sites”; se un “Sites” ritorna superato questo periodo viene incremntato il contatore “Visits”. Da questa considerazione si evince che questo parametro non dà un'analisi accurata del numero delle visite.

Il contatore “Kbytes” visualizza il numro di bytes in uscita prodotti dal web server, ossia il traffico prodotto dallo stesso.

I contatori “Entry Pages” e “Exit Pages” stimano il numero di URL usati per entrare nel sito monitorato e quale è l'ultima pagina visitata. Anche questa indicazione può non essere rigorosa per i limiti intrinseci del protocollo HTTP, tuttavia indica i trend di entrata ed uscita.

Conclusioni

L'analisi dei log è molto importante soprattutto perché in caso di necessità potete subito verificare il traffico che il vostro server web genera e le stime di acceso ai contenuti in esso pubblicati.




Studentesse nel laboratorio Linux del “Besta”

Umberto Zanatta