4. Configurer Awstats depuis le serveur de logs

Awstats est un outil qui permet d'interroger les traces des serveurs Apache (mais pas qu'eux), pour éditer des statistiques.

Par défaut, le logiciel ne travaille qu'avec un site. Comme nous avons récupéré les logs de l'ensemble des serveurs, il faut mettre en place une configuration spécifique pour que les statistiques soient consultables.

Installer Awstats

Le plus simple, c'est d'installer le paquetage fourni dans la distribution. Il est également possible de télécharger la dernière version depuis http://awstats.sourceforge.net. Décompressez alors l'archive dans le dossier /usr/local/awstats, puis lancez le programme awstats_configure.pl, qui va permettre de préparer les premiers fichiers de configuration.

Configurer Apache

Le plus facile : dans /etc/apache2/sites-available, créez un nouveau fichier, awstats, et éditez-le :

<Directory /var/lib/awstats>
Options None 
AllowOverride None 
Order allow,deny 
Allow from all 
</Directory> 
# This provides worldwide access to everything below the directory 
# Security concerns: none known 
<Directory /usr/share/awstats/icon> 
Options None 
AllowOverride None 
Order allow,deny 
Allow from all 
</Directory> 
# This provides worldwide access to everything below the directory 
# Security concerns: none known 
<Directory /usr/share/java/awstats> 
Options FollowSymLinks 
AllowOverride None 
Order allow,deny 
Allow from all 
</Directory> 
# This provides worldwide access to everything in the directory 
# Security concerns: none known 
Alias /icon/ /usr/share/awstats/icon/ 
# This provides worldwide access to everything in the directory 
# Security concerns: none known 
Alias /awstatsclasses/ /usr/share/java/awstats/ 
# This (hopefully) enables _all_ CGI scripts in the default directory 
# Security concerns: Are you sure _all_ CGI scripts are safe? 
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
ScriptAlias /stats /usr/lib/cgi-bin/awstats.pl 
<Directory /usr/lib/cgi-bin/> 
DirectoryIndex awstats.pl 
UseCanonicalName off 
# AuthName "Statistiques awstats" 
# AuthType Basic 
# Require valid-user 
# AuthUserFile /che/min/.passwdstats 
Options +ExecCGI 
</directory> 
ScriptAlias /awstats/ /usr/lib/cgi-bin/

Selon votre configuration, vérifiez les chemins d'accès (/usr/lib/cgi-bin, /usr/share/awstats/icon, etc.).

Si vous souhaitez mettre en place un contrôle d'accès, faites-le dans les balises <Directory /usr/lib/cgi-bin/>

Activez le site :

a2ensite awstats
service apache2 reload

Créer un fichier de configuration par site

Le principe, c'est de créer une base de données par site concerné. Pour cela, on va rajouter un fichier de configuration dans le dossier /etc/awstats.

Si votre site s'appelle intranet, le fichier devra être nommé impérativement awstats.intranet.conf, sinon vous n'arriverez pas soit à créer la base de données, soit à la consulter.

Voici un exemple de configuration :

LogFile="/bin/sed 's/ / /g' </var/log/apache2_access.log |"
LogFormat="%other %other %other %other %other %virtualname %host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot" 
# Racine du site 
SiteDomain="intranet" 
#HostAliases="localhost 127.0.0.1 REGEX[societe\.com*$]" 
HostAliases="intranet.societe.com:443" 
DirData="/var/lib/awstats/intranet" 
# pas de recherche DNS 
DNSLookup=0 
# Autorise la consultation de l'annee entiere 
AllowFullYearView=3

Quelques explications :

    • la variable LogFile contient une commande sed, qui va remplacer deux espaces contigus par un seul. En effet, le séparateur de champ est l'espace, et les dates inférieures au 10 du mois sont stockées, dans le fichier de logs, avec 2 espaces, ce qui provoque une incohérence du fichier ;
    • Le format est redéfini pour prendre en compte les différents champs générés par Syslog (cf. Configurer l'envoi des messages d'erreur à Syslog). Le champ%virtualname est celui qui sera utilisé par Awstats pour savoir s'il doit ou non prendre en compte l'enregistrement courant.
    • SiteDomain : indiquez le DNS le plus fréquent. C'est un champ obligatoire ;
    • HostAliases : rajoutez tous les alias, et notamment si vous avez des accès sans DNS (intranet plutôt que intranet.societe.com) et les alias avec le port (qui figure dans le fichier de logs – vérifiez !).
    • DirData : c'est le chemin de stockage de la base de données spécifique à votre site. Le dossier doit exister avant de lancer la génération de la base.
    • Il est également possible de stocker tous les fichiers dans le même dossier : ils comprennent alors le nom du site concerné.

Programmer la mise à jour des bases

Créez un fichier texte, qui comprend, sur chaque ligne, le nom du site à analyser :

listeSitesAwstats.txt
site1 
site2 
intranet

À chaque site correspond un fichier du type awstats.site.conf.

Créez un script de mise à jour :

majAwstats.sh
#!/bin/bash 
# Mise a jour des bases de donnees awstats 
FICHIER=/root/listeSitesAwstats.txt 
COMMANDE="/usr/lib/cgi-bin/awstats.pl -update -config=" 
LOG="/var/log/awstats.log" 
SUJET=`hostname`" Erreur lors de la generation des statistiques AWSTATS" 
DEST="maboite@societe.com" 
for SITE in `cat $FICHIER|grep "^[^#]"` 
do 
$COMMANDE$SITE >/dev/null 2>>$LOG 
done 
if [ -s $LOG ] ; then 
    mail -s "$SUJET" $DEST < $LOG 
fi

Ce script va générer un courriel en cas d'erreur.

Programmez-le quotidiennement :

crontab -e
# m h dom mon dow command 
15 19 * * * /root/majAwstats.sh

Consulter les statistiques

Dans un navigateur, lancez l'adresse web suivante :

http://serveurlog/stats/awstats.pl?config=intranet

config contient le nom du site correspondant.

3. Configurations spécifiques des serveurs distants Mettre en place un serveur central de logs avec RSYSLOG 5. Enregistrer les logs Windows dans rsyslog