{{tag>fr fr:linux fr:serveur fr:web fr:stats}} ====== AWStats ====== 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. ===== Installation ===== Paquets à installer : * awstats ===== Configuration ===== 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 ==== Préparation des logs ==== 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 ==== Configuration de AWstats ==== 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 * Cette configuration inclus le nom d'hôte // www.bouthors.fr // ainsi que l'alias //matthieu.bouthors.org// * Le fichier de log d'apache 2 est spécifié (par défaut awstats utilise apache 1.3) * "LogFormat = 1" indique le format de log par défaut utilisé par Apache2 (combined) * "AllowFullYearView = 3" permet le rapport sur une année complète, attention ces requêtes sont gourmandes en CPU et RAM Remarque : awstats stocke ses données dans ///var/lib/awstats/// par défaut. ==== Importer les logs manuellement ==== 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# ==== Configurer l'automatisation ==== 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. ==== Configurer Apache ==== 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 : * créer le fichier ///etc/apache2/sites-available/awstats// avec le contenu suivant : Alias /awstats-icon/ /usr/share/awstats/icon/ * puis l'activer : # a2ensite awstats Site awstats installed; run /etc/init.d/apache2 reload to enable. # /etc/init.d/apache2 reload Reloading web server config...7559 . # ===== Résolution de problèmes d'import ===== 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 ===== Supprimer echoping des logs ===== 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 : * dans RobotsSearchIDOrder_list1 'echoping', * dans RobotsHashIDLib 'echoping','EchO!', ===== Backup ===== * /etc/awstats/awstats.conf.local * /etc/logrotate.d/apache2 * /var/lib/awstats/ * /etc/cron.d/awstats * /etc/apache2/sites-available/awstats ===== Links ===== * [[serveur_web]] * http://awstats.sourceforge.net/ * http://awstats.sourceforge.net/docs/awstats_setup.html