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 :
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 :
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