En matière d'analyse de fichiers log, AWStats surpasse plus d'un logiciel payant.
AWStats est écrit en Perl, et est donc facilement installable sous Unix/Linux + Apache.
Sous Windows + IIS, la procédure est un peu plus complexe, je vais donc la décrire dans ce billet.
Le système de référence est Windows Server 2003 SP1 + IIS 6.0.

Installation de Perl

La première étape consiste à installer Perl sur le système Windows.
ActiveState propose un package Perl complet avec installeur graphique.
La version gratuite est suffisante pour faire fonctionner AWStats.

Lancer l'installation et accepter la license.
L'écran suivant vous permet de choisir les fonctionnalités qui seront installées:

  • Si l'install se fait sur un serveur en production, désactiver la documentation et les exemples.
  • Le module ISAPI est recommandé si vous voulez profiter pleinement des fonctionnalités d'AWStats.
  • PPM signifie 'Perl Package Manager', un outil qui permet d'installer facilement des packages Perl. Recommandé.

A l'écran suivant, décocher 'Create IIS virtual directory for PerlEx examples' s'il s'agit d'un serveur en production.

Voilà ! Si tout se passe bien, Perl est installé dans C:\Perl.

Création de la structure de répertoires

J'ai choisi de reproduire partiellement la structure de répertoires de Linux pour éviter certains problèmes d'accès aux fichiers.

J'obtiens la structure suivante:

  • C:\etc
    • C:\etc\awstats
    • C:\etc\cron.d
    • C:\etc\cron.daily
  • C:\usr
    • C:\usr\local
      • C:\usr\local\awstats
        • C:\usr\local\awstats\tools
        • C:\usr\local\awstats\wwwroot
          • C:\usr\local\awstats\wwwroot\cgi-bin (+ classes, css, etc...)
      • C:\usr\local\blat
      • C:\usr\local\share
        • C:\usr\local\share\GeoIP
    • C:\usr\share
      • C:\usr\share\awstats
        • C:\usr\share\awstats\lang
      • C:\usr\share\doc
        • C:\usr\share\doc\awstats
          • C:\usr\share\doc\awstats\html
  • C:\var
    • C:\var\lib
      • C:\var\lib\awstats

Pour le bon fonctionnement d'AWStats, les répertoires C:\etc\awstats, C:\usr\local\awstats\tools, C:\usr\local\awstats\wwwroot, C:\usr\share\awstats\lang et C:\var\lib\awstats sont nécessaires.

Installation de AWStats

  • Télécharger la dernière version d'AWStats (dans mon cas 'awstats-6.5.zip') et décompresser le fichier.
  • Copier les fichiers et répertoires se trouvant dans 'docs' vers 'C:\usr\share\doc\awstats\html'.
  • Copier les fichiers et répertoires se trouvant dans 'tools' vers 'C:\usr\local\awstats\tools'.
  • Copier les fichiers et répertoires se trouvant dans 'wwwroot' vers 'C:\usr\local\awstats\wwwroot'.
  • Déplacer les fichiers et répertoires se trouvant dans 'wwwroot\cgi-bin\lang' vers 'C:\usr\share\awstats\lang'.

Configuration de AWStats

Un modèle de fichier de configuration est disponible dans 'wwwroot\cgi-bin\awstats.model.conf'.
Le copier dans 'C:\etc\awstats' et renommer la copie en 'awstats.www.domaine.tld.conf' - remplacer 'www.domaine.tld' par le nom du site à analyser.

Editer ce fichier avec un éditeur texte brut comme Notepad, PsPad, UltraEdit, Crimson Editor, etc.

Le premier paramètre 'LogFile' détermine le chemin d'accès aux fichiers log.
Si votre serveur crée périodiquement un nouveau fichier, AWStats propose un outil permettant de fusionner les fichiers log d'un site: logresolvemerge.pl.
Ce qui donne:

LogFile="perl C:/usr/local/awstats/tools/logresolvemerge.pl C:/path/to/logs/* |"

Remplacer C:/path/to/logs par le répertoire où sont stockés les fichiers log.

Paramètre LogType:

LogType=W

Paramètre LogFormat:

J'ai l'habitude d'enregistrer dans les logs le plus d'informations possible, du moment que cela ne diminue pas trop les performances du serveur. Je configure donc IIS 6.0 pour qu'il enregistre les champs suivants:

date time s-sitename s-computername s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Cookie) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken

AWStats ne reconnaît pas par défaut ce format, il faut lui indiquer les emplacements des valeurs:

LogFormat="%time2 %other %other %other %method %url %query %other %logname %host %other %ua %other %referer %virtualname %code %other %other %bytesd %other %other"

Paramètres suivants:

LogSeparator=" "
SiteDomain="www.domaine.tld"
HostAliases="domaine.tld www.domaine2.tld"

Remplacer domaine.tld, domaine2, etc, par le domaine du site et les alias éventuels.

DNSLookup=2
DirData="C:/var/lib/awstats"
DirCgi="/awstats"
DirIcons="/awstatsicons"
AllowToUpdateStatsFromBrowser=0
AllowFullYearView=2

Modifier DirLang:

DirLang="C:/usr/share/awstats/lang"

PLUGINS:

J'ai activé certains plugins:

LoadPlugin="tooltips"
LoadPlugin="decodeutfkeys"
LoadPlugin="geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat"
LoadPlugin="timezone +2"

Le plugin 'GeoIP' nécessite l'installation d'un module (au choix): Geo::IP ou Geo::IP::PurePerl.
J'ai choisi d'installer ce dernier.
Lancer une ligne de commande (cmd.exe), et taper à l'invite:

ppm
install Geo-IP-PurePerl

Télécharger GeoIP.dat.gz sur le site de MaxMind, le décompresser, et copier le fichier GeoIP.dat vers 'C:\usr\local\share\GeoIP'.

Analyse

Lancer à l'invite de commande:

perl c:\usr\local\awstats\wwwroot\cgi-bin\awstats.pl -config=www.domaine.tld -update

Si tout se passe bien, un fichier txt est créé dans C:\var\lib\awstats. Il s'agit des résultats de l'analyse pour le mois courant.

Mise à jour

La commande est la même pour la mise à jour des données.

Pour ma part, j'ai créé un fichier batch 'awstats.bat' dans C:\etc\cron.daily, qui s'occupe de mettre à jour les stats pour plusieurs sites:

perl c:/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=www.domaine.tld -update
perl c:/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=www.domaine2.tld -update
perl c:/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=www.domaine3.tld -update

Ce fichier .bat est appelé par C:\etc\cron.d\daily.bat de cette manière:

call c:\etc\cron.daily\awstats.bat | blat -to root@localhost -server a.b.c.d -f root@localhost -subject "Cron SRV /etc/cron.daily awstats"

Blat est un outil permettant d'envoyer un e-mail via la ligne de commande.
Remplacer root@localhost par votre adresse e-mail, a.b.c.d par votre serveur SMTP, et SRV par le nom du serveur web.

Créer une tâche planifiée qui exécutera quotidiennement le fichier C:\etc\cron.d\daily.bat à l'heure de votre choix (en général la nuit).

Je reçois ainsi chaque matin un e-mail de notification m'indiquant si la mise à jour des stats s'est bien déroulée.

Configuration de IIS 6.0

Les extensions Perl ont été installées via l'installeur de ActiveState.
Il faut au-moins autoriser l'extension 'Perl CGI Extension', via le gestionnaire IIS, dans 'Extensions du service Web'.

Créer ensuite un répertoire virtuel '/awstats' dans le site web analysé, pointant vers 'C:\usr\local\awstats\wwwroot\cgi-bin'.
Pour ce répertoire virtuel, il faut explicitement créer le mapping des fichiers .pl vers 'C:\Perl\bin\perl.exe "%s" %s', en limitant à 'GET,HEAD,POST'.
Séléctionner 'Propriétés' du répertoire virtuel, puis 'Configuration', puis 'Mappage', puis 'Ajouter', et indiquer les valeurs.

Créer un second répertoire virtuel '/awstatsicons' pointant vers 'C:\usr\local\awstats\wwwroot\icon', pour rendre accessibles les fichiers image d'AWStats.

En option, activer 'awstats.pl' comme page par défaut pour /awstats, et utiliser IISPassword pour interdire l'accès aux statistiques aux personnes non-autorisées.

Enfin

Lancer votre navigateur web préféré, ouvrir l'URL http://www.domaine.tld/awstats/, et admirer le travail !

Remarque

Pour installer AWStats sous Debian GNU/Linux, il suffit de lancer:

apt-get install awstats