Les stats sur un serveur Web sont assez utiles pour voir l’intérêt que portent les usagers de l’internet et les moteurs de recherche à vos sites webs.
Pour configurer mon awstats sur un serveur web supportant plusieurs VirtualHosts, j’ai suivi la documentation suivante http://www.fladi.at/2008/04/10/separate-awstats-for-multiple-apache2-vhosts/
L’installation est classique sous Debian avec un « aptitude -y install awstats ».
Les blocs de configuration des VirtualHosts dans Apache doivent séparer les logs du site des logs standards du serveur Web par défaut, comme le montre l’exemple du site précité :
cat /etc/apache2/sites-available/www.fladi.at
<VirtualHost *>
DocumentRoot /var/www/vhosts/www.fladi.at
ServerName www.fladi.at
CustomLog /var/log/apache2/access.www.fladi.at.log combined
ErrorLog /var/log/apache2/error.www.fladi.at.log
</VirtualHost>
Le type de logs « combined » est intéressant, car cela permet à Awstats d’avoir des informations non inscrites dans les logs par défaut d’apache. C’est important pour avoir les sites référents, et autres informations utiles.
Ensuite, il faut créer un fichier awstats pour chaque virtualhost de votre serveur ayant besoin de statistiques.
Il doit être dans le dossier /etc/awstats et être nommé suivant la structure awstats.NomDeMonVirtualHost.conf
Cette syntaxe est importante pour les scripts qui lanceront les mises à jour automatiques des stats.
Voici un modèle de fichier à personnaliser en remplaçant les valeurs de SiteDomain, HostAliases et LogFile.
En supplément, vous pouvez modifier les valeurs de Logo et LogoLink pour personnaliser votre site de statistiques.
Le fichier spécifié dans Logo doit être dans le dossier /usr/share/awstats/icon/other.
########################################
#
# Modele de fichier de conf awstats pour un client donne
#
#########################################
# Partie specifique au client
#
#########################################
# Nom du site Web
SiteDomain= »monjolisite.com »#
# Alias du site ( obligatoire )
HostAliases= »www.monjolisite.com »#
# Nom du fichier de logs
LogFile= »/var/log/apache2/monjolisite.com-access.log »########################################
#
# Fin partie specifique au client
#
#########################################
# type de logs Apache
LogType=W#
# Format de logs combined
LogFormat=1
LogSeparator= » »#
# Fait la recherche DNS
DNSLookup=1DirData= »/var/lib/awstats »
DirCgi= »/cgi-bin »
DirIcons= »/awstats/iconAllowToUpdateStatsFromBrowser=0
AllowFullYearView=2
EnableLockForUpdate=0
DNSStaticCacheFile= »dnscache.txt »
DNSLastUpdateCacheFile= »dnscachelastupdate.txt »
SkipDNSLookupFor= » »AllowAccessFromWebToAuthenticatedUsersOnly=0
AllowAccessFromWebToFollowingAuthenticatedUsers= » »
AllowAccessFromWebToFollowingIPAddresses= » »CreateDirDataIfNotExists=0
BuildHistoryFormat=text
BuildReportFormat=html
SaveDatabaseFilesWithPermissionsForEveryone=0
PurgeLogFile=0
ArchiveLogRecords=0
KeepBackupOfHistoricFiles=0#
# Page par defaut
DefaultFile= »index.php index.html »#
# Machines a ne pas logger
SkipHosts= » »#
# Navigateurs a ne pas logger
SkipUserAgents= » »SkipFiles= » »
SkipReferrersBlackList= » »
#
# l’inverse…
#
OnlyHosts= » »
OnlyUserAgents= » »
OnlyUsers= » »
OnlyFiles= » »NotPageList= »css js class gif jpg jpeg png bmp ico rss xml swf »
ValidHTTPCodes= »200 304″
ValidSMTPCodes= »1 250″AuthenticatedUsersNotCaseSensitive=0
URLNotCaseSensitive=0
URLWithAnchor=0
URLQuerySeparators= »?; »
URLWithQuery=0
URLWithQueryWithOnlyFollowingParameters= » »
URLWithQueryWithoutFollowingParameters= » »
URLReferrerWithQuery=0WarningMessages=1
ErrorMessages= » »
DebugMessages=0
NbOfLinesForCorruptedLog=50
WrapperScript= » »
DecodeUA=0
MiscTrackerUrl= »/js/awstats_misc_tracker.js »
UseFramesWhenCGI=1
DetailedReportsOnNewWindows=1
Expires=0
MaxRowsInHTMLOutput=1000Lang=fr
DirLang= »/usr/share/awstats/lang »ShowMenu=1
ShowSummary=UVPHB
ShowMonthStats=UVPHB
ShowDaysOfMonthStats=VPHB
ShowDaysOfWeekStats=PHB
ShowHoursStats=PHB
ShowDomainsStats=PHB
ShowHostsStats=PHBL
ShowAuthenticatedUsers=0
ShowRobotsStats=HBL
ShowWormsStats=0
ShowEMailSenders=0
ShowEMailReceivers=0
ShowSessionsStats=1
ShowPagesStats=PBEX
ShowFileTypesStats=HB
ShowFileSizesStats=0
ShowOSStats=1
ShowBrowsersStats=1
ShowScreenSizeStats=0
ShowOriginStats=PH
ShowKeyphrasesStats=1
ShowKeywordsStats=1
ShowMiscStats=a
ShowHTTPErrorsStats=1
ShowSMTPErrorsStats=0
ShowClusterStats=0AddDataArrayMonthStats=1
AddDataArrayShowDaysOfMonthStats=1
AddDataArrayShowDaysOfWeekStats=1
AddDataArrayShowHoursStats=1
IncludeInternalLinksInOriginSection=0
MaxNbOfDomain = 10
MinHitDomain = 1
MaxNbOfHostsShown = 10
MinHitHost = 1
MaxNbOfLoginShown = 10
MinHitLogin = 1
MaxNbOfRobotShown = 10
MinHitRobot = 1
MaxNbOfPageShown = 10
MinHitFile = 1
MaxNbOfOsShown = 10
MinHitOs = 1
MaxNbOfBrowsersShown = 10
MinHitBrowser = 1
MaxNbOfScreenSizesShown = 5
MinHitScreenSize = 1
MaxNbOfWindowSizesShown = 5
MinHitWindowSize = 1
MaxNbOfRefererShown = 10
MinHitRefer = 1
MaxNbOfKeyphrasesShown = 10
MinHitKeyphrase = 1
MaxNbOfKeywordsShown = 10
MinHitKeyword = 1
MaxNbOfEMailsShown = 20
MinHitEMail = 1FirstDayOfWeek=1
ShowFlagLinks= » »
ShowLinksOnUrl=1
UseHTTPSLinkForUrl= » »
MaxLengthOfShownURL=64
HTMLHeadSection= » »
HTMLEndSection= » »
MetaRobot=0Logo= »LogoStats.png »
LogoLink= »http://www.MonSiteAMoi.fr »BarWidth = 260
BarHeight = 90
StyleSheet= » »LoadPlugin= »hashfiles »
LoadPlugin= »geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat »
LoadPlugin= »geoip_city_maxmind GEOIP_STANDARD /usr/share/GeoIP/GeoLiteCity.dat »ExtraTrackedRowsLimit=500
J’utilise le plugin geoip que l’on doit installer avec la commande « aptitude install libgeo-ip-perl » .
Ce plugin permettra d’identifier les pays d’où arrivent les requêtes des internautes.
Ce plugin nécessite d’être mis à jour régulièrement.
Pour se faire, j’utilise un script récupéré sur ce site: http://tavie.onsenfout.com/2010/12/19/configurer-les-plugins-awstats-de-localisation-geographique/
J’ai dû l’adapter à Debian au niveau des chemins des fichiers Dat.
En voici le contenu :
#!/bin/sh
# Mise a jour bases GeoIP pour awstats
#set -x
LOCALPATH=/usr/share/GeoIP
if [ -f « $LOCALPATH/GeoIP.dat.gz » ]; then
rm -f « $LOCALPATH/GeoIP.dat.gz »
fi/usr/bin/wget -q -N –output-document= »$LOCALPATH/GeoIP.dat.gz » http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip -f « $LOCALPATH/GeoIP.dat.gz »
if [ -f « $LOCALPATH/GeoLiteCity.dat.gz » ]; then
rm -f « $LOCALPATH/GeoLiteCity.dat.gz »
fi
/usr/bin/wget -q -N –output-document= »$LOCALPATH/GeoLiteCity.dat.gz » http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip -f « $LOCALPATH/GeoLiteCity.dat.gz »
Ce script que j’ai nommé majGeoIP doit être un exécutable, donc :
chmod +x /etc/awstats/majGeoIP
Puis il doit être exécuté régulièrement :
ln -s /etc/awstats/majGeoIP /etc/cron.weekly/majGeoIP
Il ne reste qu’à lancer awstats avec le fichier de paramètre, comme ceci :
perl /usr/lib/cgi-bin/awstats/awstats.pl -config=NomDeMonVirtualHost -update
Le paramètre config ne prend que ce qui est entre awstats et conf du nom du fichier de paramètre.
L’accès aux statistiques se fera en accédant à l’url : http://IP.Mon.ServeurWeb/awstats/awstats.pl?config=NomDeMonVirtualHost
Ce qui donne quelque chose comme ça :
On peut planifier cette commande dans la crontab du serveur web, mais si on a plusieurs sites webs et que cela évolue au fil du temps, il y a un moyen plus simple que de mettre ligne par ligne, c’est de les lancer tous par un seul script.
Pour se faire, il faut créer un fichier dédié aux stats dans cron.d comme ceci :
vi /etc/cron.d/StatsWeb
# Mise a jour de toutes les stats des sites Web
10 */2 * * * root /usr/share/doc/awstats/examples/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats.pl >/dev/null 2>&1
Ce fichier va demander à cron de lancer toutes mes 2 heure à l’heure passé de 10min, la commande de mise à jour globale.
Remarque :
La mise à jour toutes les 2 heures me permet de ne lire que le fichier access.log, mais si la mise à jour est ponctuelle, les logs auront peut-être « tourné » avec le job automatique de logrotate, qui purge les logs et les compresse.
Awstats a un script qui gère cela, et il faut mettre le paramètre LogFile comme ceci :
LogFile= »/usr/share/awstats/tools/logresolvemerge.pl /var/log/apache2/monjolisite.com-access.log* | »
Ce script prend tous les logs (wildcard *) et les concatène.
Annexes :
En pièce jointe les fichiers d’exemple