www.starend.org

TechNIX

Tags

awstats apache log analyse

Analyseur de logs apache

09/01/2005

Mise à jour 10/08/2007

Introduction

Pour pouvoir exploiter (automatiquement) les logs du serveur web (apache), on utilise un programme spécialisé. Celui-ci analyse les fichiers logs et en extrait les informations pertinentes. Il existe différents programmes spécialisés, gratuits ou payants. J'ai choisi AWStats surtout parce que c'est un logiciel libre, et puis il est l'un des plus complet. Que du bon :-)

Utilisation sur Debian Linux 4.0 stable.

Je prends pour exemple le site www.starend.org .

1/Installation

On Installe le paquet sur le serveur web à l'aide de la commande, en root :

apt-get install awstats

Généralement, dans les forums sur internet, on vous fait utiliser un script de configuration (awstats_configure.pl). Script qui ne passe pas bien sous Debian. Donc on va plutot tout faire à la mano. C'est pas plus mal comme ça, et y'a rien de sorcier ;-)

On crée l'environnement de travail :

cd /usr/local
cp -r /usr/share/doc/awstats/examples awstats
mkdir awstats/cgi-bin
cp /usr/lib/cgi-bin/awstats.pl awstats/cgi-bin/

On crée un fichier de configuration (séparé) pour apache, dans mon cas /etc/apache2/sites-available/stats.starend.org :

Alias /stats/icon/ "/usr/share/awstats/icon/"
ScriptAlias /stats/ "/usr/local/awstats/cgi-bin/"

<Directory "/usr/local/awstats/cgi-bin/">
 AllowOverride None
 Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
 SSLRequireSSL
 Order allow,deny
 Allow from all
 AuthType basic
 AuthName "Statistiques privées"
 AuthUserFile /etc/awstats/htpasswd.users
 <Files awstats.pl>
  Require valid-user
 </Files>
</Directory>

<Directory "/usr/share/awstats/icon">
 Options None
 AllowOverride None
 Order allow,deny
 Allow from all
</Directory>

Il faut faire le lien pour que le nouveau fichier soit pris en compte par apache, et redémarrer celui-ci :

cd /etc/apache2/sites-enabled
ln -s ../sites-available/stats.starend.org 025-stats.starend.org
/etc/init.d/apache2 restart

Vous aurez surement remarqué qu'il y a une authentification requise pour accéder à la page des statistiques :-)
Il faut donc créer le fichier qui va bien et les utilisateurs qui pourront se connecter :

cd /etc/awstats
htpasswd -cs htpasswd.users webmaster

Vous aurez aussi remarqué que SSL est requis (SSLRequireSSL). L'authentification se faisant en clair (AuthType basic) pour plus de compatibilité avec les brouteurs web, la session doit être protégé par SSL.

2/Créer les statistiques pour un premier site

On continue avec pour exemple www.starend.org...

Dans la configuration du site dans apache, les logs sont positionnés :

ErrorLog /var/log/apache2/www_error.log
LogLevel info
CustomLog /var/log/apache2/www_access.log combined

C'est surtout la dernière ligne qui est importante, avec le 'combined'.

Renommer et copier le ficher par défaut :

cd /etc/awstats
mv awstats.conf awstats.conf.old
grep -v "^#" awstats.conf.old | grep -v "^$" > awstats.www.starend.org.conf

Et adapter les valeurs :

LogFile="/var/log/apache2/www_access.log"
LogFormat=1
SiteDomain="www.starend.org"
HostAliases="starend.org www.starend.org starend.lan www.starend.lan 10.254.80.1 82.226.39.232"
DNSLookup=2
DirCgi="/stats"
DirIcons="/stats/icon"
SkipHosts="10.254.161.1"

La dernière modification (SkipHosts="10.254.161.1") me permet de ne pas tenir compte des tests réalisés par mon serveur de supervision nagios, en gros une fois par minute...

Lancer une synhronisation des logs :

/usr/lib/cgi-bin/awstats.pl -config=www.starend.org

Les statistiques sont accessibles à cette adresse : https://www.starend.lan/stats/awstats.pl?config=www.starend.org

3/Créer les statistiques pour un site supplémentaire

On continue avec pour exemple balade.starend.org...

Dans la configuration du site dans apache, les logs sont positionnés :

ErrorLog /var/log/apache2/balade_error.log
LogLevel info
CustomLog /var/log/apache2/balade_access.log combined

C'est surtout la dernière ligne qui est importante, avec le 'combined'.

Recopier le ficher par défaut :

cd /etc/awstats
grep -v "^#" awstats.conf.old | grep -v "^$" > awstats.balade.starend.org.conf

Et adapter les valeurs :

LogFile="/var/log/apache2/balade_access.log"
LogFormat=1
SiteDomain="balade.starend.org"
HostAliases="balade.starend.org balade.starend.lan"
DNSLookup=2
DirCgi="/stats"
DirIcons="/stats/icon"

Lancer une synhronisation des logs :

/usr/lib/cgi-bin/awstats.pl -config=balade.starend.org

Les statistiques sont accessibles à cette adresse : https://www.starend.lan/stats/awstats.pl?config=balade.starend.org

Etc pour tous les autres sites...

4/Automatiser la mise à jour des statistiques

Pour cela, deux méthodes possible : cron ou logrotate. Je préfère la seconde, elle est plus élégante et ne perdra pas une miette des logs ;-)

modifier le fichier /etc/logrotate.d/apache2 comme suit :

/var/log/apache2/*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        prerotate
                /usr/lib/cgi-bin/awstats.pl -config=www.starend.org -update
                /usr/lib/cgi-bin/awstats.pl -config=balade.starend.org -update
        endscript
        postrotate
                if [ -f /var/run/apache2.pid ]; then
                        /etc/init.d/apache2 restart > /dev/null
                fi
        endscript
}

Et on peut enlever l'équivalent en cron, qui ne marche plus de toute façon (on a renommé awstats.conf) :

rm /etc/cron.d/awstats

5/Modification des couleurs

Pour adapter les couleurs des pages à mon thème, j'ai ajouté à la fin du fichier '/etc/awstats/awstats.conf.local' :

color_Background="000000"               # Background color for main page (Default = "FFFFFF")
color_TableBGTitle="6C6C6D"             # Background color for table title (Default = "CCCCDD")
color_TableTitle="000000"               # Table title font color (Default = "000000")
color_TableBG="6C6C6D"                  # Background color for table (Default = "CCCCDD")
color_TableRowTitle="FFFFFF"            # Table row title font color (Default = "FFFFFF")
color_TableBGRowTitle="6C6C6C"          # Background color for row title (Default = "ECECEC")
color_TableBorder="6C6C6C"              # Table border color (Default = "ECECEC")
color_text="FFFFFF"                     # Color of text (Default = "000000")
color_textpercent="606060"              # Color of text for percent values (Default = "606060")
color_titletext="000000"                # Color of text title within colored Title Rows (Default = "000000")
color_weekend="4A4A4A"                  # Color for week-end days (Default = "EAEAEA")
color_link="FFF040"                     # Color of HTML links (Default = "0011BB")
color_hover="FF0000"                    # Color of HTML on-mouseover links (Default = "605040")
color_u="FFAA66"                        # Background color for number of unique visitors (Default = "FFAA66")
color_v="F4F090"                        # Background color for number of visites (Default = "F4F090")
color_p="4477DD"                        # Background color for number of pages (Default = "4477DD")
color_h="66DDEE"                        # Background color for number of hits (Default = "66DDEE")
color_k="2EA495"                        # Background color for number of bytes (Default = "2EA495")
color_s="8888DD"                        # Background color for number of search (Default = "8888DD")
color_e="CEC2E8"                        # Background color for number of entry pages (Default = "CEC2E8")
color_x="C1B2E2"                        # Background color for number of exit pages (Default = "C1B2E2")

Logo="rose3d.png"
LogoLink="https://www.starend.org/stats/"

Voila, c'est tout :-)

Licence Creative Common 2007 :: BY-NC-SA :: Webdesign DENDIEVEL Stéphane