AWStats est un anayleur de logs de serveur web. Il permet d'obtenir des rapports simples et efficaces sur la consultation d'un site Web.
Paquets à installer :
La configuration de awstats se trouve dans les fichiers /etc/awstats/awstats.conf et /etc/awstats/awstats.conf.local
Le premier paramètre à modifier est :
SiteDomain="www.bouthors.fr"
Si apache est configuré, le site devrait être disponible dans /cgi-bin/awstats.pl
Par défaut les logs ne sont pas lisibles pour le script, il faut les rendre accessibles par exemple en les attribuant à l'utilisateur www-data :
bender:~# cd /var/log/apache2 bender:/var/log/apache2# chown www-data * bender:/var/log/apache2# ll total 256 -rw-r----- 1 www-data adm 17304 2007-07-02 23:44 access.log -rw-r----- 1 www-data adm 213032 2007-06-24 22:21 access.log.1 -rw-r----- 1 www-data adm 4348 2007-07-02 23:07 error.log -rw-r----- 1 www-data adm 8684 2007-06-27 06:25 error.log.1 bender:/var/log/apache2#
Afin de rendre cela permanent, il faut modifier la configuration de logrotate dans /etc/logrotate.d/apache2 :
create 640 www-data adm
Editer /etc/awstats/awstats.conf.local :
# You can overrides config directives here. # This is particularly useful for users with several configs for # different virtual servers, who want to reuse common parameters. # Also, this file is not updated with each new upstream release. SiteDomain="www.bouthors.fr" HostAliases="localhost 127.0.0.1 matthieu.bouthors.org" LogFile="/var/log/apache2/access.log" LogFormat = 1 AllowFullYearView = 3
Remarque : awstats stocke ses données dans /var/lib/awstats/ par défaut.
bender:~# cd /usr/lib/cgi-bin/ bender:/usr/lib/cgi-bin# su www-data bender:/usr/lib/cgi-bin$ ./awstats.pl -config=awstats -LogFile=/var/log/apache2/access.log.1 Update for config "/etc/awstats/awstats.conf" With data in log file "/var/log/apache2/access.log.1"... Phase 1 : First bypass old records, searching new record... Searching new records from beginning of log file... Phase 2 : Now process new records (Flush history on disk after 20000 hosts)... Jumped lines in file: 0 Parsed lines in file: 831 Found 0 dropped records, Found 0 corrupted records, Found 0 old records, Found 831 new qualified records. bender:/usr/lib/cgi-bin$ ./awstats.pl -config=awstats -LogFile=/var/log/apache2/access.log Update for config "/etc/awstats/awstats.conf" With data in log file "/var/log/apache2/access.log"... Phase 1 : First bypass old records, searching new record... Direct access to last remembered record is out of file. So searching it from beginning of log file... Phase 2 : Now process new records (Flush history on disk after 20000 hosts)... Jumped lines in file: 0 Parsed lines in file: 103 Found 0 dropped records, Found 0 corrupted records, Found 0 old records, Found 103 new qualified records. bender:/usr/lib/cgi-bin$ exit exit bender:/usr/lib/cgi-bin#
Le cron (/etc/cron.d/awstats) ajouté automatiquement doit être modifié ainsi pour apache 2 :
0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache2/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null
Afin de ne pas perdre les logs lors de la rotation, il faut ajouter l'analyse en script dans la configuration de logrotate /etc/logrotate.d/apache2 :
prerotate /usr/bin/sudo -u www-data /usr/lib/cgi-bin/awstats.pl -config=awstats -update endscript
Ne pas oublier d'installer le paquet sudo pour que cela fonctionne.
Pour que les images s'affichent correctement il faut ajouter l'alias suivant :
Alias /awstats-icon/ /usr/share/awstats/icon/
Par exemple de cette façon :
Alias /awstats-icon/ /usr/share/awstats/icon/
# a2ensite awstats Site awstats installed; run /etc/init.d/apache2 reload to enable. # /etc/init.d/apache2 reload Reloading web server config...7559 . #
Par défaut, awstats importe les logs de manière chronologique. Il n'est pas possible de réimporter d'anciens logs.
Une fois importées, les données sont stockées dans un fichier texte dans /var/lib/awstats/, sous forme d'un fichier par mois.
Pour retraiter des logs brutes, il est possible de supprimer le mois en question puis de réimporter le fichier de log. L'import manuel est décrit plus haut.
Enfin, pour l'import de plusieurs fichiers de logs provenant de sources différentes, il faut les fusionner et conserver un ordre chronologique.
Pour cela il existe un petit utilitaire logresolvemerge.pl situé dans /usr/share/doc/awstats/examples/.
Son utilisation est simple, il suffit de mettre la liste des fichiers à fusionner et de rediriger la sortie dans le fichier cible.
# cd /usr/share/doc/awstats/examples/ # /usr/share/doc/awstats/examples# ./logresolvemerge.pl fichier1 fichier2 > fichier_final
Si vous recevez des requêtes automatiques par exemple pour valider la santé du site, il se peut qu'elles soient comptabilisées en tant que requête utilisateur.
Pour les identifier, regarder dans le fichier de log d'apache pour identifier le User Agent de ces requêtes.
Le fichier /usr/share/awstats/lib/robots.pm définit les User Agent à ignorer, pour ignorer les requêtes provenant de “Echoping/6.0.0”, il suffit d'ajouter :
'echoping',
'echoping','EchO!',