{{tag>internet statistiques apache}} ======Installer Awstats====== //avec une Debian (et plus généralement Linux)// {{:informatique:logiciels:awstats_logo6.png |}} [[http://awstats.sourceforge.net Awstats]] est un script perl qui parcourt les logs Apache pour en faire des graphiques et des statistiques. Pur l'installer : aptitude install awstats Pour différentier les fichiers de confs par site, il faut les nommer en incluant le ''ServerName'' configuré dans Apache, par exemple pour le site pteu.fr le fichier doit se nommer awstats.pteu.fr.conf. Quelques options intéressante à surveiller/modifier dans les fichiers de configuration ''/etc/awstats/'' : * ''LogFile="/var/log/apache2/access.log"'' : indique l'endroit où se trouve les fichiers de logs à parser * ''SiteDomain="pteu.fr"'' : à remplir avec tous le/les hostname du serveur web ; il peut y en avoir plusieurs mais en général il s'agit de l'URL d'accès au site * ''HostAliases="localhost 127.0.0.1 votre_IP_publique"'' : liste tous les moyens d'accès au site (adresse IP, accès loopback, DNS sur l'intranet, alias, etc) * ''LogType=W'' : Précise le type de log à traiter, par défaut "W" pour un site web, mais Awstats sait également traiter les logs de mail ou FTP par exemple * ''LogFormat=1'' : Pour indiquer le format de log utilisé par le serveur web ; pour plus de détails il vaut mieux utiliser le format //combined// dans Apache puisqu'il intègre les UserAgent. * ''SkipHosts="127.0.0.1 ::1 REGEX[^192\.168\.]"'' : pour exclure des traitement les IPs de certains clients, notamment les accès admin ou la supervision qui fausseraient les stats Pour les logs "combined" : * s'assurer que le format des logs créés par Apache sont "conformes" : dans le fichier de config //général// d'Apache 2 ''/etc/apache2/apache2.conf'', décommentez (si besoin) la ligne : LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" '%{User-Agent}i'" combined * dans le fichier de conf //spécifique// de votre vhost (''/etc/apache2/sites-available/default'' par défaut), vérifiez que la directive ''CustomLog /var/log/apache2/access.log combined'' est bien présente. * relancer Apache : ''systemctl restart apache2'' ou ''service apache restart'' Lancez ensuite la commande suivante /usr/lib/cgi-bin/awstats.pl -config= -update //// est le //SiteDomain// spécifié plus haut Les statistiques sont disponibles à l'adresse /cgi-bin/awstats.pl?config= Vu que le script est assez lourd, il peut être judicieux de ne générer qu'une seule fois par jour un rapport, sous forme de fichier html statique : /usr/lib/cgi-bin/awstats.pl -config= -update -output -staticlinks > awstats.html En plaçant ce fichier dans la racine du serveur web on pourra y accéder par http://hostname/awstats.html . Pour générer toutes les stats (pas uniquement les stats générales), on utilise la commande [[http://awstats.sourceforge.net/docs/awstats_tools.html#awstats_buildstaticpages awstats_buildstaticpages]] : /usr/lib/cgi-bin/awstats_buildstaticpages.pl -config=hostname -update -awstatsprog=/usr/lib/cgi-bin/awstats.pl -dir=/path/to/htdocs/awstats/ Pour automatiser la création de pages html, on pourrait utiliser cron mais il est plus judicieux de le lancer juste avant la rotation de log initiée par logrotate, donc on édite le fichier ''/etc/logrotate.d/apache2'' pour y glisser la commande ''awstats_buildstaticpages.pl'' en prerotate. Dans mon cas j'ai déjà une gestion de scripts prerotate définie dans ma conf : /var/log/apache2/*.log { [..] prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi; endscript ''run-parts'' exécute tous les scripts trouvés dans le répertoire /etc/logrotate.d/httpd-prerotate, c'est donc dans ce dernier que je vais placer mon script : vi /etc/logrotate.d/httpd-prerotate/awstat/pteu.fr.sh /usr/share/awstats/tools/awstats_buildstaticpages.pl -config=pteu.fr -update -awstatsprog=/usr/lib/cgi-bin/awstats.pl -dir=/var/www/html/awstats chmod +x /etc/logrotate.d/httpd-prerotate/awstat/pteu.fr.sh =====Pour Squid===== Dans le fichier ''squid.conf'', on active les log "combined" (décommenter la ligne) : logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h" "%{User-Agent}>h" %Ss:%Sh Puis dans le fichier de conf de awstats (par défaut ''/etc/awstats.conf'') : LogFormat=1