internet statistiques apache
avec une Debian (et plus généralement Linux)
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 à parserSiteDomain=“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 siteHostAliases=“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 exempleLogFormat=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 statsPour les logs “combined” :
/etc/apache2/apache2.conf
, décommentez (si besoin) la ligne :LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" '%{User-Agent}i'" combined
/etc/apache2/sites-available/default
par défaut), vérifiez que la directive CustomLog /var/log/apache2/access.log combined
est bien présente.systemctl restart apache2
ou service apache restart
Lancez ensuite la commande suivante
/usr/lib/cgi-bin/awstats.pl -config=<hostname> -update
<hostname> est le SiteDomain spécifié plus haut
Les statistiques sont disponibles à l'adresse <hostname>/cgi-bin/awstats.pl?config=<hostname>
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=<hostname> -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
</code>
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
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 %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
Puis dans le fichier de conf de awstats (par défaut /etc/awstats.conf
) :
LogFormat=1