Qu'est-ce qu'Awstats ? A quoi sert-il ?

Awstats est un outil web de statistiques pour un serveur web, FTP ou mail. Il permet donc de voir, pour un site internet par exemple, s'il y a beaucoup de visites, quelles sont les pages les plus visitées, quelle quantité de données est transférée, et "qui" vient le plus souvent visiter son site. Awstats est un logiciel libre, sous licence GNU GPL. Il peut être appelé dynamiquement, générer des pages HTML de statistiques, ou, grâce à des contributions externes de créer des fichiers PDF. Autre détail qui a son importance : Awstats se base sur les fichiers de log de votre serveur, il n'est donc pas à ma connaissance compatible avec les hébergements mutualisés.

De quoi ai-je besoin pour le faire fonctionner ?

Awstats a avant tout besoin de Perl ! Ensuite, selon votre besoin ou vos désirs, il faut que votre serveur web puisse exécuter des scripts CGI. Dans le cas d'Apache donc, pas besoin de mod_perl pour afficher vos statistiques Awstats, mais il faudra activer mod_cgi si vous souhaitez afficher dynamiquement les statistiques.

De plus, selon les fonctionnalités que vous souhaiterez activer, il est nécessaire d'avoir quelques modules Perl. Si vous souhaitez suivre ces billets, il peut être de bon ton d'installer les modules Perl suivants : URI::Escape, Storable, Geo::IP (et non Geo::IPfree) et Net::XWhois . Concernant NetBSD, j'ai installé les paquets suivants :

  • p5-Business-ISBN
  • p5-Business-ISBN
  • p5-Geo-IP
  • p5-MIME-Base64
  • p5-Net-XWhois
  • p5-Test-Simple
  • p5-URI

Installation

Awstats est généralement fourni dans les paquets de votre distribution Linux ou BSD favorite. Si ce n'est pas dans les dépôts officiels, il est fort probable que des dépôts alternatifs soient disponibles. Ainsi, pour RHEL et ses clones tels que CentOS, vous pouvez utiliser le dépôt EPEL. Si vous ne connaissez aucun dépôt ou que ceux-ci fournissent une version trop ancienne, vous pouvez utiliser l'archive disponible sur le site d'Awstats. Point non négligeable : comme il s'agit d'un programme Perl, nul besoin de le compiler, ce qui est fort appréciable !

Pour la suite : tous les exemples et codes proviennent d'une machine NetBSD 5, et Awstats est installé grâce au paquet disponible sur pkgsrc.

Première configuration

Nous avons donc installé Awstats. Avant de configurer Awstats

La configuration se situe dans /usr/pkg/etc/awstats/' et on y trouve déjà un fichier : awstats.model.conf''. Copions ce modèle et éditons-le :

root@vhost:/usr/pkg/etc/awstats# cp -p awstats.model.conf awstats.blog.anotherhomepage.org.conf
root@vhost:/usr/pkg/etc/awstats# vi awstats.blog.anotherhomepage.org.conf

Examinons maintenant la configuration, nous allons renseigner :

  • l'emplacement du fichier de logs
  • le nom (dns) du site web, ainsi que ses alias
  • renseigner les pages d'index
  • exclure Awstats des statistiques
  • exclure notre adresse IP des statistiques
  • et bien d'autres trucs encore !

Attention :

  • je n'affiche par la suite que les options que j'ai modifiées par rapport au modèle
  • ma configuration date un peu : mon fichier a été créé à l'époque d'Awstats 6.6, et de nouvelles options ont fait leur apparition
# Emplacement du fichier de log
LogFile="/var/log/httpd/blog-access.log"
# Nom DNS de notre site internet
SiteDomain="blog.anotherhomepage.org"
# Autres noms DNS possibles, ou adresse IP directement
HostAliases="localhost 127.0.0.1 www.blog.anotherhomepage.org 188.40.96.170"
# Faire une recherche inverse DNS sur les IP des visiteurs, cela permet d'avoir une meilleure visibilité en voyant
# les DNS inversedes FAI, mais attention : sur un gros site, cela peut énormément ralentir Awstats !
# Si vous avez un doute, mettez cette valeur à 0
DNSLookup=1
# Localisation des bases de données des statistiques, ici le chemin NetBSD !
# Sous GNU/Linux, le chemin est généralement /var/lib/awstats
DirData="/var/www/awstats"
# Localisation du GCI appelé par notre page de statistiques (awstats.pl)
DirCgi="/awstats"
# ...
DirIcons="/awstats/icon"
# Awstats peut proposer de mettre à jour en direct les statistiques via un bouton.
# C'est risqué, donc on désactive
EnableLockForUpdate=1
# Je préfère générer la page web en XHTML plutôt qu'en HTML
BuildReportFormat=xhtml
# C'est toujours bien les sauvegardes :)
KeepBackupOfHistoricFiles=1
# Page d'index par défaut
DefaultFile="index.html index.php"
# On peut s'exclure des visites : si on est en IP fixe, mieux vaut exclure son IP
# ainsi que celle du serveur et la boucle locale
SkipHosts="127.0.0.1 188.40.96.170"
# Ici j'exclue des statistiques le panneau d'admin de Dotclear, le répertoire des thèmes et quelques fichiers
# en rapport  avec un plugin
SkipFiles="REGEX[^\/admin] REGEX[^\/awstats] REGEX[^\/themes] /?pf=partager2/img/delicious.png /?pf=partager2/img/digg.png /?pf=partager2/img/yahoomyweb.png /?pf=partager2/img/wikio.gif /?pf=partager2/img/sprite_partager2.png"
# Si vous avez des URL de type http://monsite.com/kikoo.php?variable=valeur
# vous pouvez différencier les requêtes selon ce que vaut "valeur"
# Mieux vaut faire de même pour votre referrer ;)
URLWithQuery=1
URLWithQueryWithoutFollowingParameters="PHPSESSID jsessionid"
URLReferrerWithQuery=1
# Je suis un peu parano sur les bord, je cherche à voir si des vers tentent d'accéder à mon site
LevelForWormsDetection=2
# Awstats affiche le top 10, sauf si on va dans le détail, où il affiche le top 1000 par défaut
# Moi j'en veux encore plus ! (mais la page est plus longue à charger)
MaxRowsInHTMLOutput=2000
# Je force la langue en Français, mais vous n'êtes pas obligé d'en faire autant
Lang="fr"
# J'affiche les stats sur les vilains vers qui polluent le Net
ShowWormsStats=HBL

Génération des statistiques de visites

Pour lancer la génération des statistiques, la commande est la suivante :

root@vhost:~# /usr/pkg/bin/perl /usr/pkg/awstats/bin/awstats.pl --config=blog.anotherhomepage.org --update

Affichage des statistiques de visites Par défaut, la configuration suivante existe pour Apache :

root@vhost:~# cat /usr/pkg/etc/httpd/conf.d/awstats.conf
Alias /awstats/icon/ /usr/pkg/awstats/icon/
Alias /awstats/css/ /usr/pkg/awstats/css/
Alias /awstats/js/ /usr/pkg/awstats/js/

Alias /awstats/ /usr/pkg/awstats/cgi-bin/

<Location /awstats/>
        DirectoryIndex awstats.pl
        Options ExecCGI FollowSymLinks
        AddHandler cgi-script .pl
        AddHandler cgi-script .cgi
        order allow,deny
        allow from all
</Location>

Sous NetBSD, les fichiers .conf présents dans /usr/pkg/etc/httpd/conf.d/ sont automatiquement inclus dans votre configuration, ce qui ajoute un certain confort. A noter que de cette manière, vos statistiques sont accessibles au monde entier ! Vous pouvez utiliser un fichier htaccess ou les directives Allow avec votre IP si vous êtes en IP fixe pour restreindre l'accès aux statistiques.

Automatisation, multiplication et gestion de la rotation des logs

Tout ça c'est bien, mais une fois qu'on a 2-3 sites internet qui tournent, on ne va pas se connecter chaque jour sur notre serveur pour lancer une mise à jour par site. Il est possible de remédier à cela grâce à un utilitaire fourni avec Awstats : awstats_updateall.pl permet de mettre à jour tous les sites configurés en une seule commande ! En utilisation dans une crontab, tout est automatisé :) Exemple :

root@vhost:~# crontab -l | grep -i awstats
# Awstats :
10      0-23/4  *       *       *       /usr/pkg/bin/perl /usr/pkg/awstats/bin/awstats_updateall.pl now -awstatsprog=/usr/pkg/awstats/cgi-bin/awstats.pl -configdir=/usr/pkg/etc/awstats/ > /dev/null

Et voici nos statistiques mises à jour toutes les quatre heures, à la dixième minute (00h10, 4h10, 8h10...)

Si vous effectuez une rotation de vos logs avec logrotate, le plus intelligent est encore d'ajouter votre mise à jour de statistiques dans la configuration de logrotate, comme le détaille la FAQ d'Awstats.

Au prochain épisode...

Cette configuration basique et fonctionnelle permet d'avoir des statistiques intéressantes, mais nous pouvons aller plus loin, comme par exemple avec la géolocalisation d'adresses IP et l'utilisation d'autres plugins, et même aller jusqu'à créer nos propres filtres pour avoir des statistiques sur certaines parties du site par exemple.