Cette page est en cours de rédaction.
Apportez votre aide…

Ceci est une ancienne révision du document !



Awstats

Awstats permet de générer des statistiques pour son serveur. Voici de jolis screenshots de ses capacités.

Nous supposons Apache déjà installé et fonctionnel

Paquets nécessaires

awstats            # Paquet principal
libmldbm-perl      # pour le plugin hashfiles
libnet-xwhois-perl # pour le plugin HostInfo
libgeo-ipfree-perl # pour le plugin geoipfree

L'installation se fait dans

/usr/share/awstats/

AWStats est un script CGI, son exécutable est :

/usr/lib/cgi-bin/awstats.pl

Les fichiers de configuration :

Il(s) se trouve(nt) dans :

/etc/awstats/

Il faut en mettre un par site :

sudo cp awstats.conf awstats.ma_machine.mon_domaine.mon_pays.conf

où 'ma_machine.mon_domaine.mon_pays' correspond à l'url de la machine qui permettra de consulter les statistiques avec un navigateur à l'adresse : http://ma_machine.mon_domaine.mon_pays/cgi-bin/awstats.pl

N.B : ma_machine.mon_domaine.mon_pays sera par exemple : wikipedia.org

Réglez ce(s) fichier(s) de configuration(s) avec notamment dans le cas d'un serveur web apache :

LogType=W
LogFormat=1
LogFile="/var/log/apache2/access.log" # pour apache2
SiteDomain="ma_machine.mon_domaine.mon_pays"

Voir les explications contenues dans le fichier pour les autres options

Tester l'analyse des logs

sudo /usr/lib/cgi-bin/awstats.pl -config=ma_machine.mon_domaine.mon_pays –update

… quelques instants plus tard, si tout va bien …

Update for config "/etc/awstats/awstats.stats.ma_machine.mon_domaine.mon_pays.conf"
With data in log file "/var/log/apache/access.log"...
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: 34782
 Found 40 dropped records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 34742 new qualified records.

Ajouter l'analyse des logs archivés

cd /var/log/apache*

for i in access.log.*.gz; do
    zcat $i | /usr/lib/cgi-bin/awstats.pl -config=ma_machine.mon_domaine.mon_pays -update;
done
çà ne fonctionne pas !!! sans passer l'argument -LogFile=xxx çà ne fait qu'analyser n fois le fichier non compressé!!! Utiliser ceci à la place :
cd /var/log/apache
for f in $(ls -rt access.log.*.gz) ; do
  echo "$f"
  sudo gzip -d "$f"
  sudo /usr/lib/cgi-bin/awstats.pl -config=ma_machine.mon_domaine.mon_pays -update -LogFile=${f/.gz/}
  sudo gzip "${f/.gz/}"
done

Vérifier la production du fichier de statistique

/var/lib/awstats/awstats052007.ma_machine.mon_domaine.mon_pays.txt

Il y a un fichier par mois et par site

Voir les statistiques dans une belle interface web

d'abord créez un alias pour apache :

Créez le fichier : /etc/apache2/sites-available/awstats le remplir avec :

Alias /awstatsclasses "/usr/share/awstats/classes/"
Alias /awstatscss "/usr/share/awstats/css/"
Alias /awstats-icon "/usr/share/awstats/icon/"

ScriptAlias /stats /usr/lib/cgi-bin/awstats.pl

# mêmes paramètres que dans awstats.*.conf
<Directory /usr/lib/cgi-bin/>
  DirectoryIndex awstats.pl
  UseCanonicalName off
#  AuthName "Statistiques awstats"
#  AuthType Basic
#  Require valid-user
#  AuthUserFile /che/min/.passwdstats
  Options +ExecCGI
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>
Puis :

créez un lien symbolique dans /etc/apache2/sites-enabled vers ce fichier

Ou directement en ligne de commande

a2ensite awstats

Ajustez la gestion des droits d'accès selon votre besoin de confidentialité ;-)

Attention : dans cet exemple, votre page de statistiques sera accessible pour n'importe quel utilisateur. Si vous ne souhaitez la rendre accessible que pour vous seul, pensez à modifier la ligne suivante :
Allow from all

en

Allow from 127.0.0.1
enjoy
http://ma_machine.mon_domaine.mon_pays/cgi-bin/awstats.pl

et même si tout va bien :

http://ma_machine.mon_domaine.mon_pays/stats/

GeoIP

Tous les mois sur le site de MaxMind une base GeoIP gratuite est fournie.

Ce fichier va permettre d'effectuer la correspondance entre les adresses IP et les pays correspondants. Un domaine en .com par exemple peut se trouver en France, en Australie ou au Zimbabwe. Ce traitement va nous permettre de différencier les origines des internautes et d'affecter le nombre de pages et de hits aux pays correspondants. En résumé, il faut installer la base GeoIP, le programme PurePerl, modifier le fichier de configuration du site et le plugin geoip.

Installation

  • Récuperer la base GeoIp à l'adresse suivante. Vous pourrez téléchargez cette base tous les mois (car MaxMind la met à jour mensuellement).
  • Placez le fichier dans le fichier /usr/share/awstats/lib/, puis dézippez le avec la commande gunzip GeoIP.dat.gz
Vous pouvez automatiser ces deux étapes en rajoutant par exemple dans cron (dans un terminal, tapez sudo crontab -e) la commande :
0 4 10 * * wget -O /usr/share/awstats/lib/GeoIP.dat.gz http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz && gunzip -f /usr/share/awstats/lib/GeoIP.dat.gz
  • Ensuite, il vous faut récupérer le fichier PurePerl.pm que vous trouverez à l'adresse http://www.maxmind.com/download/geoip/api/pureperl/. Vous devrez désarchiver le fichier (version actuelle: Geo-IP-PurePerl-1.25.tar.gz) avec la commande tar xzf Geo-IP-PurePerl-1.25.tar.gz
  • Copiez le fichier PurePerl.pm qui se trouve le répertoire lib/Geo/Ip dans le répertoire /usr/share/awstats/lib/
  • Modifiez le fichier PurePerl.pm aux alentours de la ligne 213 (Fonction: sub new) en indiquant le chemin absolu d'accès à la base GeoIP.dat (/usr/share/awstats/lib/)
  • Modifiez le fichier geoip.pm dans le répertoire /usr/share/awstats/plugins, à la ligne if (!eval ('require "Geo/IP/PurePerl.pm")) { (aux alentours de la ligne 20, entête de la fonction: # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES) en remplaçant Geo/IP/PurePerl.pm par le chemin absolu du fichier /usr/share/awstats/lib/PurePerl.pm
  • Ensuite, il ne vous reste plus qu'à ajouter le code suivant à la fin de votre fichier de configuration de votre site :
# Plugin: GeoIP
# Perl modules required: Geo::IP or Geo::IP::PurePerl (from Maxmind)
# Country chart is built from an Internet IP-Country database.
# This plugin is useless for intranet only log files.
# Note: You must choose between using this plugin (need Perl Geo::IP module 
# from Maxmind, database more up to date) or the GeoIPfree plugin (need
# Perl Geo::IPfree module, database less up to date).
# This plugin reduces AWStats speed of 8% !
#
LoadPlugin="geoip GEOIP_STANDARD /usr/share/awstats/lib/GeoIP.dat"
Si après ceci vous obtenez :
Error: Plugin init for plugin 'geoip' failed with return code: Undefined subroutine &Geo::IP::GEOIP_STANDARD called at /usr/share/awstats/plugins/geoip.pm line 69. (A module required by plugin might be missing).

Il faut aussi modifier le fichier /usr/share/awstats/plugins/geoip.pm a la ligne 197

$type='geoip';

par

$type='geoippureperl';
Il y a d'autres modules GeoIP intéressants, par exemple GeoLiteCity. Il suffit alors d'adapter les instructions précédentes avec le fichier GeoLiteCity.dat.gz ici et en modifiant geoip_city_maxmind.pm au lieu de geoip.pm

Affichage du Top 20 des Téléchargements

Si vous avez beaucoup de fichiers téléchargés sur votre site, ce plugin vous indiquera les 20 fichiers les plus téléchargés. Pour l'installer, il vous suffit d'ajouter ce bout de code à la fin de votre fichier de configuration de votre site :

#-----------------------------------------------------------------------------
# EXTRA SECTIONS
#-----------------------------------------------------------------------------

# Affichage du Top 20 des T&eacute;l&eacute;chargements
ExtraSectionName1="T&eacute;l&eacute;chargements (Top 20)"
ExtraSectionCodeFilter1="200 304"
ExtraSectionCondition1="URL,(.*((\.doc)|(\.exe)|(\.msi)|(\.pdf)|(\.rtf)|(\.swf)|(\.txt)|(\.vbs)|(\.xls)|(\.zip)))"
ExtraSectionFirstColumnTitle1="T&eacute;l&eacute;chargements"
ExtraSectionFirstColumnValues1="URL,(.*)"
ExtraSectionFirstColumnFormat1="%s"
ExtraSectionStatTypes1=HBL
ExtraSectionAddAverageRow15=0
ExtraSectionAddSumRow1=1
MaxNbOfExtra1=20
MinHitExtra1=1

Vous allez devoir créer un fichier de config pour chaque serveur

 cd /etc/awstats/
 cp awstats.conf awstats.ftp.conf

Editez le fichier /etc/awstats/awstats.ftp.conf

Changez les variables suivantes

 LogFile="/var/log/xferlog" 
 LogType=F 
 LogFormat="%time1 %host %logname %method %url %code %bytesd" 
 LogSeparator="\t"  

Editez ensuite le fichier: /etc/proftpd/proftp.conf

Ajoutez les lignes suivantes au fichier (à la suite des commandes identiques existants déja).

 LogFormat awstats "%t %h %u %m %f %s %b"     
     #TRES IMPORTANT
     # Remplacez tous les espaces par des tabulations dans la ligne du dessus

 ExtendedLog /var/log/xferlog read,write awstats     
     # Peu fréquent
     # Si vous utilisez les virtual hosts vous devriez peut être placer cette directive dans le bon "contexte"  
 TransferLog none     
     # Si vous utilisez les virtual hosts vous devriez peut être placer cette directive dans le bon "contexte"  

Supprimez /var/log/xferlog et redémarrez votre serveur:

 rm /var/log/xferlog && /etc/init.d/proftpd restart

Créez un peu de trafique sur votre logiciel ftp, en téléchargeant un fichier par exemple.
Puis executez la commande:

 /usr/lib/cgi-bin/awstats.pl -config=ftp ?update

Tout devrait bien s'être déroulé.
Si vous avez un message qui vous dit qu'il y a des corrupted records, faites bien attentions à la note concernant les tabulations, c'est source d'erreur !

Voila, votre serveur proftpd est maintenant monitoré.

je vous invite à lire l'article suivant pour plus d'options:
FAQ-COM090 : SETUP FOR FTP SERVER LOG FILES (proftpd, vsftpd, …) http://awstats.sourceforge.net/docs/awstats_faq.html#FTP

Cron

Solution 1

Le cron de awstats se trouve ici:

/etc/cron.d/awstats

Il est généré par défaut et ressemble à ça :

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/apache/access.log ] && /usr/lib/cgi-bin/aws
tats.pl -config=awstats -update >/dev/null

En détail ça donne:

0,10,20,30,40,50 * * * *

Exécutez le cron toutes les dix minutes

www-data

avec l'utilisateur www-data

[ -x /usr/lib/cgi-bin/awstats.pl
  -a -f /etc/awstats/awstats.conf
  -a -r /var/log/apache/access.log ]

faites des vérifications sur Des fichiers. man test pour en savoir plus.

&& /usr/lib/cgi-bin/awstats.pl -config=awstats -update

Exécutez cette commande si les vérifications sont OK

>/dev/null

Ne pas loguer le résultat de la commande.

A configurer en fonction de sa config mais, on peut habilement le changer par :

0 * * * * root /usr/lib/cgi-bin/awstats.pl -config=ma_machine.mon_domaine.mon_pays -update >/dev/null

Solution 2

Contrib: rapidos

Allez dans le répertoire /etc/cron.daily et créez un nouveau fichier:

 emacs /etc/cron.daily/awstats

Copiez le script shell ci-dessous dans le fichier nouvellement créé.

 #!/bin/bash
 # Chemin de l'application awstats
 AWS=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl 
 # Vos domaines
 # Exemple: DOMAINS="www.monsite.com ftp"
 DOMAINS="ma_machine.mon_domaine.mon_pays ftp"
 # Petite boucle qui va bien
 for d in ${DOMAINS}
 do
    ${AWS} -update -config=${d}
 done

Vous n'avez qu'a modifier le contenu de la variable domaines en fonctions de vos domaines.
Tous les jours le systeme se chargera de générer des statsitiques pour vous :-)

Solution 3

Contrib: Pépou06

Vérifier que vous avez bien l'editeur de texte nano installé : apt://nano

Ouvrez un terminal :

 sudo crontab -e

Ajouter la ligne (ici la mise à jour se fera tous les jours à 2 heures du matin) :

 0 2 * * * perl /usr/lib/cgi-bin/awstats.pl -config=votredomaine.tld -update

Sauvergarder, et relancez crontab :

 sudo /etc/init.d/cron restart

Pour voir si le fichier a bien été modifié :

 sudo crontab -l

Vous avez ainsi la liste de toutes les tâches qui s'effectueront automatiquement.

logrotate (rotation des logs)

La rotation des logs a pour effet de supprimer les logs apaches. Si une rotation intervient avant que les stats aient été lancées, on risque de perdre une partie des statistiques. Pour éviter ce problème, il suffit de lancer le script de mise à jour des stats juste avant que la rotation ne s'effectue.

Pour ce faire, il faut modifier le script de rotation des logs de la façon suivante :

 cd /etc/logrotate.d
 sudo gedit apache2

Ajouter ces trois lignes juste avant postrotate :

 prerotate
 su - root -c "/usr/lib/cgi-bin/awstats.pl -config=votredomaine.tld -update > /dev/null"
 endscript

Adblock Plus

Des scripts Adblock un peu trop virulents, blacklistent complètement awstats. Ne pas passer trois heures à se demander ce qui se passe (comme moi), alors qu'il suffit de désactiver Adblock.

dans le cas de virtual host

Pour analyser les logs de chaque vhost, apache doit être configuré. Voici donc un exemple de configuration de vhost:

<VirtualHost 212.11.36.52>
		ServerAdmin email@site.com
		DocumentRoot /var/www/site.com/www
		ServerName www.site.com
		ErrorLog /var/www/site.com/logs/www.error.log
		CustomLog /var/www/site.com/logs/www.access.log combined
</VirtualHost>

Procéder ainsi :

Rendez-vous dans le répertoire de configuration de awstats :

 cd /etc/awstats

Créez le fichier awstats.mails.conf

 sudo cp awstats.conf awstats.mails.conf

Modifiez les champs suivants :

 LogFile="perl /usr/share/doc/awstats/examples/maillogconvert.pl standard < /var/log/mail.log |"
 LogType=M
 LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"
 LevelForBrowsersDetection=0
 LevelForOSDetection=0
 LevelForRefererAnalyze=0
 LevelForRobotsDetection=0
 LevelForWormsDetection=0
 LevelForSearchEnginesDetection=0
 LevelForFileTypesDetection=0
 ShowMenu=1
 ShowSummary=HB
 ShowMonthStats=HB
 ShowDaysOfMonthStats=HB
 ShowDaysOfWeekStats=HB
 ShowHoursStats=HB
 ShowDomainsStats=0
 ShowHostsStats=HBL
 ShowAuthenticatedUsers=0
 ShowRobotsStats=0
 ShowEMailSenders=HBML
 ShowEMailReceivers=HBML
 ShowSessionsStats=0
 ShowPagesStats=0
 ShowFileTypesStats=0
 ShowFileSizesStats=0
 ShowBrowsersStats=0
 ShowOSStats=0
 ShowOriginStats=0
 ShowKeyphrasesStats=0
 ShowKeywordsStats=0
 ShowMiscStats=0
 ShowHTTPErrorsStats=0
 ShowSMTPErrorsStats=1

Lancer la mise à jour des statistiques :

 sudo /usr/lib/cgi-bin/awstats.pl -config=mails -update

Pour la mise à jour automatique des statistiques, cf solution 3 en remplaçant :

 "-config=votredomaine.tld -update"

par

 "-config=mails -update"
  • Piwik - une alternative à Awstats qui n'utilise pas les logs apache, et qui produit des statistiques utilisant des graphiques en flash
  • Webalizer - une alternative à Awstats.
  • awstats.1280403514.txt.gz
  • Dernière modification: Le 29/07/2010, 13:38
  • par YoBoY