Analyser son site Internet avec Awstats


AWStats est un logiciel libre qui observe les fichiers logs pour ensuite établir des statistiques représenté sous forme de graphiques. Contrairement à Piwik ou à d'autres solutions, il est légé, rapide et fonctionne même après que le serveur web ait fonctionnnée pendant une longue durée.

Pour une utilisation plus poussée, il permet également d'observer les évènements d'un serveur IIS, proxy, mails, FTP, etc.

Définition des termes employés (visiteur unique, nombres de visites,…)

Introduction

Dans ce tutoriel, on va suivre le contexte suivant :

  • awstats.example.com est le site contenant awstats d'installé
  • example.com est le site sur lequel on veut des statistiques

Ces deux domaines sont hébergé sur le même serveur

Commençons par récupérer les dépendances :

apt-get install perl libcgi-fast-perl libgeo-ip-perl

Depuis les sources

On peut récupérer le projet depuis le site officiel :

mkdir -m 750 /var/www/awstats
wget https://prdownloads.sourceforge.net/awstats/awstats-7.6.zip
unzip awstats-7.6.zip
mv awstats-7.6/* /var/www/awstats/
chown www-data: /var/www/awstats/ -R

Depuis le dépôt

Ou avec cette méthode (mais ça ne sera pas forcément la dernière version à jour)

apt install awstat

Compatibilité avec Nginx

Renseignons notre serveur au près de Nginx :

nano /etc/nginx/site-enabled/awstats.conf
default.conf
server {
        listen 80;
        server_name awstats.example.com;
 
        error_log /var/log/nginx/awstats.log info;
        root /var/www/awstats/wwwroot;
 
        location ~ ^/cgi-bin/(awredir|awstats)\.pl {
                gzip off;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME /var/www/awstats/tools/nginx/awstats-fcgi.php;
                fastcgi_param X_SCRIPT_FILENAME /var/www/awstats/wwwroot$fastcgi_script_name;
                fastcgi_param X_SCRIPT_NAME $fastcgi_script_name;
                fastcgi_buffer_size 4K;
                fastcgi_buffers 64 4k;
                include fastcgi_params;
        }
}

On vérifie qu'il n'y a pas d'erreurs de syntaxes puis on recharge la configuration :

nginx -t
systemctl reload nginx

Compatibilité avec Apache2

Renseignons notre serveur au près de Apache :

nano /etc/apache2/sites-available/awstats
awstats.conf
<VirtualHost *:80>
        ServerName awstats.example.com
 
        ScriptAliasMatch ^/awstats\.pl$ /usr/lib/cgi-bin/awstats.pl
        DocumentRoot /var/www/awstats
 
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>
 
    Alias /awstats-icon/ /usr/share/awstats/icon/
    <Directory /usr/share/awstats/icon>
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Le service à besoin du module CGI pour fonctionner:

apt install libapache2-mod-fcgid

On active cette configuration :

a2ensite awstats

On vérifie qu'il n'y a pas d'erreur de syntaxes pour redémarrer le service.

apache2ctl -t
systemctl reload apache2

Le résultat est visualisation depuis l'URL : http://awstats.example.com/cgi-bin/awstats.pl?config=example.com

Cliquez sur “Update now”. en haut de la page pour actualiser la page et vous devez avoir ce type d’aperçu :

Configurer Awstat

Si l'installation s'est faite depuis les dépôt :

nano /etc/awstats/awstats.example.com

Si l'installation s'est faite depuis les sources :

nano /var/www/awstats/wwwroot/cgi-bin/awstats.example.com.conf

Au minimum, il a besoin de ces directives :

awstats.example.com
# On indique où se trouve le fichier de log et que c'est au format Apache/Nginx
LogFile="/var/log/apache2/domaine.log"
LogFormat = 1
LogType=W
 
# On active la résolution du reverse DNS
DNSLookup=1
SiteDomain="example.com"
HostAliases="www.example.com"
DirIcons="/awstats-icon"
 
# Activer la possibilité de regarder par année les statistiques
AllowFullYearView=3
 
# Message d'erreur car il n'y a rien par défaut
ErrorMessages="Il y aurait une erreur, merci de contacter le webmaster"
 
#Use contab + activation du bouton via interface web
AllowToUpdateStatsFromBrowser=1
 
# On indique où stocker les données au format texte
DirData="/var/www/awstats/.local/share/awstats/"
 
# On ignore cette IP et le chemin dans les stats
SkipHosts="192.168.0.254"
SkipFiles="/ignore-path"
 
# Modifie le nombre de ligne dans le tableau:
MaxNbOfHostsShown=20
MaxNbOfRobotShown=5
 
#Vérouille l'accès à la mise à jour des données si c'est déjà en cours
EnableLockForUpdate=1

Pour en savoir plus sur les directives.

Ajouter la géolocalisation

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip -f GeoIP.dat.gz
mv GeoIP.dat.gz /usr/share/awstats/plugins/
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip -f GeoLiteCity.dat.gz
mv GeoLiteCity.dat.gz /usr/share/awstats/plugins/

Puis ajouter dans la configuration awstat :

nano /var/www/awstats/wwwroot/cgi-bin/awstats.example.com.conf
LoadPlugin="geoip GEOIP_STANDARD /usr/share/awstats/plugins/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/share/awstats/plugins/GeoLiteCity.dat"

Enfin, on s'assure que le module IP soit disponible pour Perl :

cpan Geo::IP

Lancer l'analyse de requêtes :

/usr/lib/cgi-bin/awstats.pl -update -config=example.com