Awstats e analisi dei log

Generalmente l’analisi del traffico sui siti web viene fatto strumenti sul genere di google analytics che si basano su chiamate dei client, generate da javascript, a siti di terze parti che si occupano della raccolta e della reportistica dei dati.

I server web generano però enormi quantità di log che contengono molti dettagli su tutte le attività del sito web. Nel caso di problemi specifici gli strumenti per analizzarli sono i vari tool della shell e il magari il perl ma se quello che si vuole è monitorare l’andamento del sito la cosa migliore è ricorrere a tool specifici. Uno dei tool storici per questa attività in ambiente LAMP è awstats.

Awstats è un insieme di scripts che si occupa di analizzare i log che gli vengono serviti e genera dei report fruibili poi attraverso un server web. Awstats è in grado di lavorare molti tipi di log che spaziano da quelli di svariati tipi di web server (come Apache o anche IIS) a quelli di ftp server o mail server.

Awstats non è il solo tool e loro stessi riportano una tabella di comparazione con altri prodotti analoghi.

Passiamo ora ad esaminare come configurare awstats. Come iare sempre non troverete qui una guida completa ma un punto di partenza per poter iniziare ad esplorare le potenzialità di questo prodotto.

La prima cosa è ovviamente istallarlo. Anche awstats è presente in gran parte delle distribuzioni. Su debian/ubuntu potrete quindi procedere con:

aptitude update
aptitude search awstats
aptitude install awstats apache2

Alternativamente dal sito di awstats è possibile effettuare il download dell’ultima versione stabile.

Se si procede da pacchetto si avranno a questo punto nella directory

/usr/share/doc/awstats/examples

molti file di esempio utili.

Iniziamo ora dalla configurazione di apache necessaria per la visulizzazione dei report: bisogna infatti istruire apache a mostrare i report aggiungendo ad un vhost le seguenti direttive:

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

Alias /awstatsclasses "/usr/share/awstats/lib/"
Alias /awstats-icon "/usr/share/awstats/icon/"
Alias /awstatscss "/usr/share/doc/awstats/examples/css"
ScriptAlias /awstats/ /usr/lib/cgi-bin/
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

E’ necessario poi riavviare apache.

Passiamo ora all’anailsi dei file. Cominciamo facendo una copia del file /etc/awstats/awstats.conf rinominandolo in awstats.linuxandcompany.it.conf.
Le righe fondamentali da editare al suo interno sono

  • LogFile: che dovrà contenere il nome completo di path dei log da esaminare
  • SiteDomain: che conterrà il nome del dominio
  • HostAliases: per indicare, separati da spazi, eventuali nomi alternativi del dominio
  • LoadPlugin: vorremo probabilmente aggiungere almeno “ipv6”
  • LogFormat: permette di descrivere in dettaglio il formato dei log se non sio è utilizzato quello standard di apache o squid.

I parametri configurabili sono veramente molti e, se non la documentazione, il file merita almeno una scorsa per individuare elementi di interesse.

A questo punto non rimane che scaricare il file di log nella directory e far parsare il file ad awstats. Da sottolineare che i vari file di log devono essere processati nell’ordine in cui vengono generati e che il nome nella configurazione è univoco e bisognerà quindi o copiare giorno per giorno il file di log nella directory designata sovrascrivendo il precedente o sfruttare un link simbolico. Si tratta comunque di un’attività facilmente automatizzabile.

Procediamo quindi con il parse

/usr/lib/cgi-bin/awstats.pl -config=linuxandcompany.it -update

Se apache è stato configurato sulla propria macchina e se l’elaborazione è stata fatta localmente sarà possibile vedere il report sull’url

http://localhost/awstats/awstats.pl?output=main&config=linuxandcompany.it&framename=index

The Capitalist Game

In The Capitalist game si è alla guida di una società che dovrà produrre e vendere beni in un mercato simulato.

Il gioco è basato su turni di un’ora  che corrispondono ad un mese all’interno del gioco. Ogni società ha 40 anni (di gioco) per svilupparsi prima di venir cancellata. Lo stesso giocatore potrà poi dare vita ad altre società.

Si hanno a disposizione tre tipi di infrastrutture: fabbriche, magazzini e negozi per produrre beni, immagazzinarli e venderli. Non tutti i prodotti sono vendibili direttamente nei negozi essendoci numerosi semilavorati che servono come step intermedi per la produzione di altri beni.

Un sistema di licenze permette di sbloccare, con il crescere della società, sempre nuovi prodotti.

Parallelamente è presente una “borsa azioni” in cui il giocatore può comprare e vendere quote delle società in gioco.

E’ presente infine un mercato da cui è sempre possibile acquistare e vendere beni.

Le varie società attive non sono realmente in concorrenza e l’interazione si riduce quasi solo al confronto sulle classifiche.

Il gioco è comunque piacevole ed equilibrato.

MySql High Availability

Voglio qui parlare di “Mysql High Availability”, un libro scritto da Charles Bell, Mats Kindahl e Lars Thalmann ed edito da o’reilly, che ho trovato veramente utile ed illuminante.

Premesso che presuppone una buona conoscenza di MySql, affronta con notevole precisione e ricchezza tutta una serie di argomenti avanzati ma fondamentali se si ha la necessità di lavorare con architetture non banali.

In modo particolare viene affrontata nel dettaglio tutto quello che riguarda la replica e vengono esaminate tutta una serie di soluzioni per implementare architetture che scalano in lettura ma anche in scrittura.

Per meglio comprendere queste architetture vengono esaminati nel dettaglio il processo di replica ed i binary log ed il loro uso per nel Disaster Recovery.

La seconda parte del libro è dedicata al monitoraggio, al troubleshooting legato alla replica ed al disaster recovery.

Un ultima parte è dedicata all’uso di mysql in ambienti cloud e all’introduzione di MySQL Cluster.