Home page de
Michel Casabianca

Actualité
oBlog
oNo Apple
oDebian sur Zotac Nano CI320
oDebian sur Acer C720P
oUn an avec un Raspberry Pi
oLes interfaces du GO
oParseurs YAML pour Go
oIntroduction à YAML
oNotes Formation Perl
oUtiliser le module Ruby MySQL
oUtiliser le module Ruby DBI
oScripts Python avec DB-API

Outils
oBabel
oBee
oTâches Ant
oInstalleur Java
oVisual SQL

MacOSX
oViewCVS sous MacOSX
oEmacs sous Panther

Conférences
oOutils J2EE Open Source
oDév. XML en Java sous Linux
oOutils de dév. Java sous Linux

Articles XML
oIntroduction à XML
oIntroduction à XSLT
oDéveloppement XML en Java
oGénérer des sites web avec Ant
oDTD Ant
oProject X

Articles Java
oTips CodeGuide
oKFM et Jars
oMails en Java
oJava et préprocesseur
oJava et images
oThreads
oÉvénements
oAstuces

Jeux
oAwele
oAtomX
oCore Warrior
oSolitaire
oSpiceWars
oTangram
oTaquin

Simulations
oJeu de la vie
oFourmi de Langton
oTri du couvain
oPiste de chasse

Graphisme
oFractales
oImages 3D
oPowered by ...
oEcce Duke
oTIE

À propos
oDe l'auteur
oDe ce site


Powered by

Powered by Debian
Blog SweetohmIndex Flux RSS

2014-10-18 : Webalizer sur Raspberry Pi

Mon site web (que vous lisez en ce moment même) étant hébergé sur mon Raspberry Pi, je me suis posé la question de la génération de statistiques à propos des fichiers servis par Apache. J'ai commençé par essayer awstats, mais ses performances ne permettent pas de l'utiliser dans de bonnes conditions sur un Raspberry Pi.

J'ai donc décidé d'installer Webalizer sur mon Raspberry Pi. Voici les étapes à suivre (tous les scripts présentés peuvent être téléchargés dans cette archive):

Installer webalizer

sudo apt-get install webalizer

Configurer webalizer

Corriger le nom des fichiers de log Apache dans la configuration webalizer. Éditer le fichier /etc/webalizer/webamizer.conf pour corriger la ligne suivante comme suit :

LogFile /var/log/apache2/access.log

Corriger la configuration webalizer pour la localisation des IPs en changeant comme suit les lignes suivantes (qui ne sont pas consécutives dans le fichier) :

GeoIP           yes
GeoIPDatabase   /usr/share/GeoIP/GeoIP.dat

Il faut ensuite changer le mode de webalizer en incrémental car les logs d'Apache sont répartis dans plusieurs fichiers du fait de leur rotation.

Incremental     yes

Pour finir, on peut configurer le nom du site pour lequel on calcule des statistiques :

HostName        sweetohm.net

Générer les statistiques

On peut maintenant lancer la génération de statistiques avec la commande suivante :

sudo webalizer

Cependant, ces statistiques sont générées en ne parsant que le fichier de logs /var/log/apache2/access.log, comme configuré dans la configuration de webalizer. Pour parser aussi les archives des logs (les fichiers /var/log/apache2/access.log.X.gz), il faut appeler webalizer en itérant sur ces fichiers. C'est ce que fait le script suivant :

#!/bin/sh

for file in `ls -tr /var/log/apache2/access.log*`
do
    echo "## $file ###########################################"
    sudo webalizer $file
done

Cette opération va remplir le répertoire /var/www/webalizer/ avec les données statistiques de webalizer. Reste à les servir avec Apache.

Configurer Apache

On placera la configuration Apache suivante dans le fichier /etc/apache2/sites-available/webalizer :

# Apache configuration file for webalizer. Put this file in directory:
# /etc/apache2/sites-available. To enable this site, type :
# 
#   sudo a2ensite webalizer
# 
# To disable it:
# 
#   sudo a2dissite webalizer

Alias /webalizer/ /var/www/webalizer/
<Directory /var/www/webalizer/>
    Options +Indexes
</Directory>

Pour activer le site, taper :

sudo a2ensite webalizer

Pour qu'Apache recharge sa configuration et active le site, on tapera ensuite :

sudo service apache2 reload

Il ne reste plus maintenant qu'à ouvrir l'URL http://localhost/webalizer/ pour consulter vos statistiques.

Automatisation du calcul

Pour terminer, il nous faut automatiser le calcul des statistiques avec cron. Pour ce faire, on placera le fichier webalizer suivant dans le répertoire /etc/cron.d/ :

# /etc/cron.d/pypi_stats
# cron configuration to update webalizer stats

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin

# update webalizer statistics every quarter
*/15 * * * *    root    webalizer

Il peut sembler excessif de mettre à jour les statistiques tous mes quarts d'heure, mais :

  • Ce calcul ne prend qu'une seconde sur mon Raspberry Pi !
  • Lors de la rotation des logs, on perd les logs qui n'ont pas été parsés par webalizer.

En effectuant le calcul tous les quarts d'heure et avec une rotation des logs tous les 10 jours environ, on perd en moyenne 0,05 % des logs, ce qui semble très acceptable.

Si l'on souhaite corriger des statistiques (parceque le cron n'a pas tourné un certain temps ou parce que l'on a changé la configuration), il suffit d'effacer les statistiques (dans le répertoire /var/www/webalizer/) et de relancer le script shell de rattrapage décrit ci-dessus.

Enjoy!


105 /117