Awstats – installation – paramétrage – stats pour log apache au format html

Présentation :

Dans ce tuto, nous allons installer un outil qui va parser les fichiers de log et réaliser une synthèse au format html : Awstats.
Cet outil open source, gratuit, et écrit en Perl, va permettre d’avoir une synthèse de l’activité du serveur dédié, et éviter de s’arracher les yeux pour savoir ce qui s’est passé de normal et aussi d’anormal sur la machine : Erreur 404, erreur 500, bot bizarre, fichier php appeler beaucoup trop etc…
Ce tutoriel a été réalisé sur une Distribution Gentoo Base System version 1.6.14 avec une version 6.95 de Awstats.

Plusieurs types de rapport et plusieurs services :

Dans ce tuto, je ne vais m’intéresser qu’à :

  • un seul service : http grâce aux logs apache
  • et un seul type de format des rapports , html et statique, réalisées grâce au script perl awstats_buildstaticpages.pl

Awstats peut réaliser des rapports en format texte sur d’autres services comme les mails, notamment Qmail ou d’autres serveurs http comme Ngix mais aussi le FTP comme Proftpd

Enfin, il est possible de générer les rapports html d’autres manières notamment en dupliquant le fichier awstats.pl, en le mettant dans le dossier stats (présenté plus loin) et en utilisant des GET, il s’agit alors de rapport dynamique

Installation :

apt-get install awstats

Vision d’ensemble :

Fichier de conf

Pour fonctionner, Awstats dispose d’un fichier ASCII de configuration. Ce fichier doit :

  • être situé dans le dossier /etc/awstats/
  • avoir un nom respectant le pattern suivant : awstats.www.domain.fr.conf
  • avoir un fichier de conf par domain et par service : un fichier pour le http et un autre pour les mails pour un même domain
  • sinon ça ne marche pas …

Les scripts perl

Pour trouver l’ensemble des fichiers perl qui vont permettre de réaliser ce tuto, j’ai fais une recherche via la commande suivante :
Shell

find / -name awstat* -type f | more 
# tous les scripts sources sont localisés dans le dossier /usr/bin

le fichier de log apache pour un site internet

le dossier contenant les rapports html

Il s’agit d’un dossier qui va contenir l’ensemble des fichiers html générés par Awstat. Ce fichier doit être créer dans dossier contenant le site web concerné pour qu’il puisse être accessible depuis un web browser.

Création du fichier de conf :

Deux méthodes possibles :

Dupliquer un fichier de conf existant et l’adapter :

Shell

cp /etc/awstats/awstats.www.otherdomain.com.conf /etc/awstats/awstats.www.domain.fr.conf 
chmod 644 /etc/awstats/awstats.www.domain.fr.conf

Utilisation de l’utilitaire awstats_configure.pl :

Shell

./usr/bin/awstats_configure.pl

Contenu du fichier de conf :

Shell

vi /etc/awstats/awstats.www.domain.fr.conf

Voici les principales directives à adapter en fonction de votre distribution / du site à suivre :

LogFile="/var/log/httpd/domain.fr.log"
LogFormat=1
SiteDomain="www.mydomain.fr" # il faut obligatoirement que cette instruction respecte le nom du fichier
DNSLookup=0
DirData="/home/domain/www/stats/" 
HostAliases="mydomain.fr"

Mise en place de l’environnement :

Avant d’exécuter la commande perl de génération des rapports, il faut mettre en place un environnement qui va les recevoir. Voici quatre manipulations à réaliser pour le créer.

1 Création d’un dossier qui va recevoir les stats :

La première chose à faire est de créer le dossier qui va contenir les rapports html et fichiers .htaccess et .htpasswd

Shell

cd /home/domain/www
mkdir stats # vous pouvez appeler ce dossier avec n'importe qu'elle nom : statique_http  etc.
chown user:user stats # au cas où vous réalisez la manipulation en root

2 Mise en place d’un fichier .htaccess pour redéfinir la page par défaut :

Lors de la génération des fichiers html de stats, j’ai constaté que Awstats ne génère pas de fichier index.html.
Par contre, il y a le fichier awstats.www.domain.fr.html qui est le point d’entrée des rapports.
Pour que ce fichier html soit le fichier par défaut, un fichier .htaccess doit être créé avec une directive DirectoryIndex :

Shell

cat > /home/domain/www/stats/.htaccess
DirectoryIndex awstats.www.domain.fr.html
#Puis Ctrl + C pour sortir de l'édition
chown -R user:user /etc/domain/www/stats/.htaccess # au cas où vous réalisez la manipulation en root

3 accès aux images des rapports :

Les rapports html utilisent des images. Pour pouvoir définir leur emplacement, et ne pas avoir d’erreur 404, plusieurs possibilités :

Méthode 1 : Ajouter un Alias à la conf de apache

Shell

vi /etc/httpd/httpd.conf

Fichier httpd.conf

#ajouter cette ligne
Alias /awstatsicon /usr/share/webapps/awstats/6.95/htdocs/icon/

Remarque : il n’est pas possible de mettre de Directive Alias dans un fichier .htaccess

Méthode 2 : Faire une copie des images dans le dossier

Shell

mkdir /etc/domain/www/stats/awstatsicon
cp -r /usr/share/webapps/awstats/6.95/htdocs/icon/* /etc/domain/www/stats/awstatsicon/
chown -R user:user /etc/domain/www/stats/awstatsicon # au cas où vous réalisez la manipulation en root

Méthode 3 : création d’un lien symbolique

Shell

ln -s /etc/domain/www/stats/awstatsicon /usr/share/webapps/awstats/6.95/htdocs/icon/

4 Mise en place d’un mot de passe en htpasswd :

Nous allons mettre en place un mot passe sur le dossier qui contient les rapports pour limiter la visualisation au dossier, pour cela il faut ajouter de nouvelles directives dans le fichier .htaccess :

Shell

cat >> /home/domain/www/stats/.htaccess
AuthGroupFile /dev/null
AuthType Basic
AuthUserFile /home/domain/www/stats/.htpasswd
AuthName "Members Area"
require valid-user
#Puis Ctrl + C pour sortir de l'édition

Création du fichier .htpasswd :

Shell

/usr/local/apache/bin/htpasswd -c /home/domain/www/stats/.htpasswd user_name

Avoir ses stats :

Maintenant que l’environnement est créé, on peut enfin exécuter la commande qui va générer les fichiers de statistiques.

la commande :

Shell

perl /usr/bin/awstats_buildstaticpages.pl \
       -config=www.domain.fr \
       -update \
       -lang=fr \
       -dir=/home/domain/www/stats \
       -awstatsprog=/usr/bin/awstats.pl ;

les résultats :

Dans le Shell :

Suite à la saisie de la commande, les lignes suivantes doivent apparaitre dans le Shell :
Shell

Launch update process : "/usr/bin/awstats.pl" -config=www.domain.fr -update -configdir=
Build main page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output
Build alldomains page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=alldomains
Build allhosts page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=allhosts
Build lasthosts page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=lasthosts
Build unknownip page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=unknownip
Build allrobots page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=allrobots
Build lastrobots page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=lastrobots
Build session page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=session
Build urldetail page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=urldetail
Build urlentry page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=urlentry
Build urlexit page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=urlexit
Build osdetail page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=osdetail
Build unknownos page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=unknownos
Build browserdetail page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=browserdetail
Build unknownbrowser page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=unknownbrowser
Build refererse page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=refererse
Build refererpages page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=refererpages
Build keyphrases page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=keyphrases
Build keywords page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=keywords
Build errors404 page: "/usr/bin/awstats.pl" -config=www.domain.fr -staticlinks -lang=fr -output=errors404
20 files built.
Main HTML page is 'awstats.www.domain.fr.html'.

Dans Filezilla :

Via Filezilla, vous devez voir les fichiers générés :
awstat-filezila

Remarque : le nom de domain a été masqué dans l’imprim écran

Dans votre web browser :

Saisir dans votre navigateur l’adresse http://domain.fr/stats, vous devez voir la page suivante :

awstat-report

Mise en place d’un cronjob :

Shell

crontab -e
5 2 * * * perl /usr/bin/awstats_buildstaticpages.pl -config=www.domain.fr -update -lang=fr -dir=/home/domain/www/stats -awstatsprog=/usr/bin/awstats.pl >/dev/null 2>&1