Table des matières

Analyser son site Internet avec Awstats


AWStats est un logiciel analyse des fichiers logs afficher des statistiques. Sa force réside dans ses faibles dépendances, demande peu de ressources système, affichage rapide, compatible avec de nombreux logs applicatif et permet de sélectionner manuellement des périodes.

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

Admettons que l'on veille avoir nos statistiques sur http://awstats.example.com/cgi-bin/awstats.pl?config=example.com du site example.com

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

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

Téléchargement de l'application

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

mkdir -vp -m 750 /var/www/awstats
wget https://www.awstats.org/files/awstats-8.0.zip
unzip awstats-8.0.zip
mv -v awstats-8.0/* /var/www/awstats/
mkdir -vp /var/www/awstats/data/share/awstats/
chown www-data: /var/www/awstats/ -R

Configurer Nginx pour les logs

On modifie /etc/nginx/conf.d/awstats.conf pour y ajouter :

log_format awstats '$host $remote_addr - $remote_user [$time_local] "$request" '
                   '$status $body_bytes_sent "$http_referer" '
                   '"$http_user_agent" "$http_x_forwarded_for"';

Dans chaque vhost, il faudra ajouter l'option awstats dans la directive access_log. Par exemple :

access_log /var/log/nginx/wiki.domaine.com.awstats.access awstats;

Vhost avec Nginx

Renseignons notre serveur au près de Nginx :

nano /etc/nginx/site-enabled/awstats.conf
awstats.conf
server {
    listen 80;
    server_name awstats.example.com;
 
    root /var/www/awstats/wwwroot/;
 
    location /awstats-icon/ {
        alias /var/www/awstats/wwwroot/icon/;
    }
 
    location /awstatscss/ {
        alias /var/www/awstats/wwwroot/css/;
    }
 
    location /awstatsclasses/ {
        alias /var/www/awstats/wwwroot/classes/;
    }
 
    location /js/ {
        alias /var/www/awstats/wwwroot/js/;
    }
 
    location ~ \.pl$ {
        gzip off;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param QUERY_STRING $query_string;
    }
 
}

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

nginx -t
systemctl reload nginx

Configurer Awstat

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/nginx/example.com.awstats.access"
LogFormat = "%virtualname %host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %other"
#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/data/share/awstats/"
 
# On ignore cette IP et le chemin dans les stats
SkipHosts="127.0.0.1"
SkipFiles="/ignore-path"
 
# Modifie le nombre de ligne dans le tableau:
MaxNbOfHostsShown=20
MaxNbOfRobotShown=10
 
#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