AWStats
Sommaire
Présentation
Cette page a pour objet de décrire les gestes techniques liés au logiciel AWStats.
Description
AWStats est un logiciel analyseur de fichiers log - ou journaux d'activité - des serveurs Web, FTP et de messagerie offrant des vues graphiques statiques mais aussi dynamiques des statistiques d'accès aux serveurs.
Il permet d'afficher le nombre de visites, de visiteurs uniques, de pages, de hits, de transfert, par domaine/pays, hôte, heure, navigateur, OS, … Il peut être lancé grâce à des scripts CGI ou en ligne de commande.
AWStats est un logiciel libre sous licence GPL v3+.
Installation
Le but de la configuration est de rendre accessible les informations de AWStats au travers d'une page http://monserveur/awstats.
Se connecter au serveur Apache concerné et télécharger la dernière version d'AWStats depuis le site officiel :
wget https://prdownloads.sourceforge.net/awstats/awstats-7.8.tar.gz
Exemple :
[root@myserver:/root] > wget https://prdownloads.sourceforge.net/awstats/awstats-7.8.tar.gz --2020-05-19 09:26:47-- https://prdownloads.sourceforge.net/awstats/awstats-7.8.tar.gz Résolution de prdownloads.sourceforge.net (prdownloads.sourceforge.net)... 216.105.38.13 Connexion vers prdownloads.sourceforge.net (prdownloads.sourceforge.net)|216.105.38.13|:443...connecté. requête HTTP transmise, en attente de la réponse...301 Moved Permanently Emplacement: https://downloads.sourceforge.net/project/awstats/AWStats/7.8/awstats-7.8.tar.gz [suivant] --2020-05-19 09:26:48-- https://downloads.sourceforge.net/project/awstats/AWStats/7.8/awstats-7.8.tar.gz Résolution de downloads.sourceforge.net (downloads.sourceforge.net)... 216.105.38.13 Connexion vers downloads.sourceforge.net (downloads.sourceforge.net)|216.105.38.13|:443...connecté. requête HTTP transmise, en attente de la réponse...302 Found Emplacement: https://netix.dl.sourceforge.net/project/awstats/AWStats/7.8/awstats-7.8.tar.gz [suivant] --2020-05-19 09:26:48-- https://netix.dl.sourceforge.net/project/awstats/AWStats/7.8/awstats-7.8.tar.gz Résolution de netix.dl.sourceforge.net (netix.dl.sourceforge.net)... 87.121.121.2 Connexion vers netix.dl.sourceforge.net (netix.dl.sourceforge.net)|87.121.121.2|:443...connecté. requête HTTP transmise, en attente de la réponse...200 OK Longueur: 2938878 (2,8M) [application/x-gzip] Sauvegarde en : «awstats-7.8.tar.gz» 100%[===================================================================================================================================================================================================>] 2 938 878 91,8KB/s ds 35s 2020-05-19 09:27:27 (81,4 KB/s) - «awstats-7.8.tar.gz» sauvegardé [2938878/2938878]
Créer le dossier dans lequel seront installées les sources :
mkdir /local/awstats
Décompresser les sources dans le dossier cible :
tar -zxf awstats-7.8.tar.gz -C /local/awstats
Créer un lien symbolique vers la version en cours :
ln -s awstats-7.8 /local/awstats/current
Corriger le propriétaire des fichiers :
chown -R root:root /local/awstats
Configuration automatique (déconseillée)
Se rendre dans le dossier tools
des sources :
cd /local/awstats/current/tools
Lancer l'assistant de configuration d'AWStats :
perl awstats_configure.pl
Exemple :
[root@myserver:/local/awstats/current/tools] > perl awstats_configure.pl
AWStats awstats_configure 1.0 (build 20140126) (c) Laurent Destailleur ----- This tool will help you to configure AWStats to analyze statistics for one web server. You can try to use it to let it do all that is possible in AWStats setup, however following the step by step manual setup documentation (docs/index.html) is often a better idea. Above all if: - You are not an administrator user, - You want to analyze downloaded log files without web server, - You want to analyze mail or ftp log files instead of web log files, - You need to analyze load balanced servers log files, - You want to 'understand' all possible ways to use AWStats... Read the AWStats documentation (docs/index.html).
> Running OS detected: Linux, BSD or Unix Warning: AWStats standard directory on Linux OS is '/usr/local/awstats'. If you want to use standard directory, you should first move all content of AWStats distribution from current directory: /local/awstats/awstats-7.8 to standard directory: /usr/local/awstats And then, run configure.pl from this location. Do you want to continue setup from this NON standard directory [yN] ? y
> Check for web server install Enter full config file path of your Web server. Example: /etc/httpd/httpd.conf Example: /usr/local/apache2/conf/httpd.conf Example: c:\Program files\apache group\apache\conf\httpd.conf Config file path ('none' to skip web server setup): > /local/www/current/conf/httpd.conf
> Check and complete web server config file '/local/www/current/conf/httpd.conf' Warning: You Apache config file contains directives to write 'common' log files This means that some features can't work (os, browsers and keywords detection). Do you want me to setup Apache to write 'combined' log files [y/N] ? N Add 'Alias /awstatsclasses "/local/awstats/awstats-7.8/wwwroot/classes/"' Add 'Alias /awstatscss "/local/awstats/awstats-7.8/wwwroot/css/"' Add 'Alias /awstatsicons "/local/awstats/awstats-7.8/wwwroot/icon/"' Add 'ScriptAlias /awstats/ "/local/awstats/awstats-7.8/wwwroot/cgi-bin/"' Add '<Directory>' directive AWStats directives added to Apache config file.
> Update model config file '/local/awstats/awstats-7.8/wwwroot/cgi-bin/awstats.model.conf' File awstats.model.conf updated.
> Need to create a new config file ? Do you want me to build a new AWStats config/profile file (required if first install) [y/N] ? y
> Define config file name to create What is the name of your web site or profile analysis ? Example: www.mysite.com Example: demo Your web site, virtual server or profile name: > mysite.mydomain.com
> Define config file path In which directory do you plan to store your config file(s) ? Default: /etc/awstats Directory path to store config file(s) (Enter for default): > /local/awstats
> Create config file '/local/awstats/awstats.mysite.mydomain.com.conf' Config file /local/awstats/awstats.mysite.mydomain.com.conf created.
> Restart Web server with '/sbin/service httpd restart'
> Add update process inside a scheduler Sorry, configure.pl does not support automatic add to cron yet. You can do it manually by adding the following command to your cron: /local/awstats/awstats-7.8/wwwroot/cgi-bin/awstats.pl -update -config=mysite.mydomain.comr Or if you have several config files and prefer having only one command: /local/awstats/awstats-7.8/tools/awstats_updateall.pl now Press ENTER to continue... A SIMPLE config file has been created: /local/awstats/awstats.mysite.mydomain.com.conf You should have a look inside to check and change manually main parameters. You can then manually update your statistics for 'mysite.mydomain.com' with command: > perl awstats.pl -update -config=mysite.mydomain.com You can also read your statistics for 'mysite.mydomain.com' with URL: > http://localhost/awstats/awstats.pl?config=mysite.mydomain.com Press ENTER to finish...
Bien que l'assistant soit intéressant à lancer pour comprendre les actions qu'il réalise, il reste limité dans la mesure où il n'est pas capable de gérer une configuration Apache avec des vhosts et des fichiers de logs différents.
Il est donc préférable de réaliser une configuration manuelle.
Configuration manuelle (conseillée)
S'aider de la page d'administration d'Apache pour localiser les différents fichiers/dossiers nécessaires à cette partie.
Prérequis Apache
AWStats étant un programme écrit en Perl, il faut qu'Apache puisse l'interpréter. Pour cela, il faut configurer Apache pour autoriser CGI. CGI (Common Gateway Interface) définit une méthode d'interaction entre un serveur web et des programmes générateurs de contenu externes, plus souvent appelés programmes CGI ou scripts CGI.
Pour ce faire, il faut :
- Activer les modules
mod_alias
,mod_cgi
etmod_cgid
- Dans le fichier de configuration principal d'Apache, décommenter les lignes suivantes :
LoadModule cgid_module modules/mod_cgid.so LoadModule cgi_module modules/mod_cgi.so LoadModule alias_module modules/mod_alias.so
- Ajouter la directive
AddHandler
dans la section<IfModule mime_module>
du fichier de configuration principal d'Apache :AddHandler cgi-script .cgi .pl
- Cela aura pour effet d'indiquer à Apache que les fichiers
.cgi
et.pl
devront être interprétés comme des scripts CGI.
Définir le format des logs
Il est plus simple pour AWStats de définir le format des logs à un des format par défaut d'Apache : combined
. Sans ce format, il faudra mettre en œuvre une configuration particulière pour qu'AWStats interprète correctement les logs d'Apache.
Editer le(s) fichier(s) de configuration d'Apache concerné(s) par la remontée d'informations voulue et définir le format des logs "CustomLog" à combined
.
Exemple :
278 ...
279 #
280 CustomLog "|/local/www/current/bin/rotatelogs -l -t -n 15 /data/logs/myserver/localhost_http_access.log 10M" combined
281
282 #
283 ...
Publier AWStats sur Apache
Vérifier si le nom du serveur est publié au travers d'un vhost :
`lsof -p $(ps -f --ppid 1|grep httpd|awk '{print $2}')|grep bin/httpd|awk '{print $NF}'` -S 2>&1 | grep "namevhost $HOSTNAME"|awk -F[\(\):] '{print $2}'
Exemple :
[root@myserver:/root] > httpd -S|grep "namevhost $HOSTNAME"|awk -F[\(\):] '{print $2}' /local/www/2.4.12/conf/extra/httpd-vhosts.conf
Si le retour est vide, cela signifie que le nom de serveur n'est pas publié au travers d'un vhost. Il faudra, au choix :
- Vérifier si la configuration principale publie le nom du serveur, c'est-à-dire que la page http://monserveur/ est accessible depuis l'extérieur du serveur.
- Dans ce cas, il faudra juste ajouter la configuration de AWStats au fichier de configuration principal d'Apache
- Vérifier si la configuration principale ne publie que sur la boucle locale du serveur, c'est-à-dire que la page http://localhost n'est accessible que depuis le serveur lui-même
- Ce cas étant très contraignant dans un environnement avec plusieurs serveurs, il sera donc préférable, au choix, de :
- Modifier la configuration principale pour publier le nom de serveur
- Publier le nom de serveur au travers d'un vhost
Dans tous les cas, une fois le fichier de configuration relative à la publication du nom de serveur trouvé, l'éditer et y ajouter les lignes suivantes :
## Configuration de AWStats
# Directives to allow use of AWStats as a CGI
Alias /awstatsclasses "/local/awstats/current/wwwroot/classes/"
Alias /awstatscss "/local/awstats/current/wwwroot/css/"
Alias /awstatsicons "/local/awstats/current/wwwroot/icon/"
ScriptAlias /awstats "/local/awstats/current/wwwroot/cgi-bin/"
# This is to permit URL access to scripts/files in AWStats directory.
<Directory "/local/awstats/current/wwwroot">
DirectoryIndex awstats.pl
Options FollowSymLinks ExecCGI
AllowOverride None
Require ip 172
</Directory>
## Fin de configuration de AWStats
Créer une configuration AWStats
Important ! Pour chaque site/URL à surveiller, correspond un fichier de logs Apache et, par conséquent, doit correspondre également un fichier de configuration AWStats.
Créer le répertoire dans lequel seront stockées les données générées par AWStats :
mkdir /local/awstats/data
Donner les droits à l'utilisateur Apache :
chown -R www:www /local/awstats/data
Comme indiqué dans le fichier de configuration modèle d'AWStats /local/awstats/current/wwwroot/cgi-bin/awstats.model.conf
:
...
# Copy this file into awstats.www.mydomain.conf and edit this new config file
# to setup AWStats (See documentation in docs/ directory).
# The config file must be in /etc/awstats, /usr/local/etc/awstats or /etc (for
# Unix/Linux) or same directory as awstats.pl (Windows, Mac, Unix/Linux...)
...
Les fichiers des différentes configurations d'AWStats doivent être stockés, au choix, dans le dossier /etc/awstats
, /usr/local/etc/awstats
ou /etc
.
Créer donc le dossier /etc/awstats
:
mkdir /etc/awstats
Dans les sources d'AWStats déployées, faire une copie du fichier /local/awstats/current/wwwroot/cgi-bin/awstats.model.conf
vers le dossier /etc/awstats
:
- Dans le cas d'une configuration unique, le fichier peut se nommer
awstats.conf
ouawstats.monsite.conf
- Dans le cas d'une configuration multiple, le fichier doit impérativement se nommer
awstats.monsite.conf
En effet, le comportement par défaut d'AWStats est de lire le fichier de configuration correspondant au paramètre qu'on lui aura passé awstats.monsite.conf
. En l'absence de ce paramètre et/ou du fichier de configuration correspondant, AWStats cherchera à lire le fichier awstats.conf
.
Dans le cadre d'une utilisation d'AWStats sur plusieurs sites (monsite, monsite2, monsupersite ...), lancer la commande suivante :
cp /local/awstats/current/wwwroot/cgi-bin/awstats.model.conf /etc/awstats/awstats.monsite.conf
Les options de configuration d'AWStats sont nombreuses, mais les options nécessaires à son fonctionnement de base sont les suivantes :
- LogFile
- Chemin pointant vers le fichier de log défini par la directive
CustomLog
d'Apache du site à analyser
- LogType
- Type de log à analyser. Pour un serveur web, il faut définir cette option à W
- LogFormat
- Format du log à analyser. Pour un serveur Apache avec le format prédéfini
combined
, il faut définir cette option à 1
- LogSeparator
- Séparateur de champs du fichier de log. Inutilisé si l'option LogFormat est défini sur 1, 2, 3 ou 4
- DNSLookup
- Activer la résolution inverse DNS. Les IP sont résolues et ne sont pas affichées.
- DynamicDNSLookup
- Activer la résolution inverse DNS uniquement lorsque des rapports sont produits.
- DirData
- Chemin pointant vers le dossier dans lequel AWStats va stocker les résultats de ses analyses
- DirCgi
- URL absolue ou relative de la localisation du dossier
cgi-bin
d'AWStats. Utilisé uniquement lorsque qu'AWStats est lancé en ligne de commande.
- DirIcons
- URL absolue ou relative de la localisation du dossier
icon
d'AWStats. Utilisé uniquement lorsque qu'AWStats est lancé en ligne de commande.
- SiteDomain
- Domaine du site à surveiller. Cela correspond, dans le cas d'un serveur web Apache, au contenu de la directive ServerName.
- HostAliases
- Domaine du site à surveiller. Cela correspond, dans le cas d'un serveur web Apache, au contenu de la directive ServerAlias.
- AllowToUpdateStatsFromBrowser
- Permet de relancer l'analyse d'AWStats depuis le navigateur. Implique que le dossier défini par l'option DirData et son contenu sont accessible en lecture/écriture par l'utilisateur utilisé par le serveur web
- AllowFullYearView
- Autorise ou non l'analyse sur une année depuis le navigateur et/ou en ligne de commande. Utile pour limiter la consommation de ressources du serveur.
Ainsi, un exemple de configuration de départ serait ceci :
LogFile="/data/logs/myapp.mydomain.com/myapp.mydomain.com_http_access.log"
LogType=W
LogFormat=1
LogSeparator=" "
SiteDomain="myapp.mydomain.com"
HostAliases="myapp.mydomain.com"
DNSLookup=0
DynamicDNSLookup=0
DirData="/local/awstats/data"
DirCgi="http://myserver/awstats"
DirIcons="http://myserver/awstatsicons"
AllowToUpdateStatsFromBrowser=1
AllowFullYearView=2
Quelques options supplémentaires utiles :
EnableLockForUpdate=1
Logo="logo-myApp_180x120.png"
LogoLink="http://myapp.mydomain.com"
Plus d'informations sur les différentes options possibles dans la documentation officielle d'AWStats.
Initialisation
La première analyse doit être lancée en ligne de commande. Pour ce faire, se rendre dans le dossier contenant les scripts CGI d'AWStats (par exemple /local/awstats/current/wwwroot/cgi-bin
) et lancer la commande suivante :
cd /local/awstats/current/wwwroot/cgi-bin perl awstats.pl -config=myapp -update
Exemple :
[root@myserver:/root] > cd /local/awstats/current/wwwroot/cgi-bin [root@myserver:/local/awstats/current/wwwroot/cgi-bin] > perl awstats.pl -config=myapp.mydomain.com -update Create/Update database for config "/etc/awstats/awstats.myapp.mydomain.com.conf" by AWStats version 7.8 (build 20200416) From data in log file "/data/logs/myapp.mydomain.com/myapp.mydomain.com_http_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: 84 Found 0 dropped records, Found 0 comments, Found 0 blank records, Found 0 corrupted records, Found 0 old records, Found 84 new qualified records.
Utilisation
Se rendre sur la page web sur laquelle a été installé AWStats (voir la section Publier AWStats sur Apache) en ajoutant avec le paramètre "config" la configuration concernée, par exemple http://myserver/awstats/?config=myapp.mydomain.com :
Il est possible d'avoir une configuration par défaut si on cherche à atteindre http://myserver/awstats sans paramètre. Pour ce faire, il faut créer un fichier /etc/awstats/awstats.conf
.
Astuce : Il peut être intéressant de créer un lien symbolique pointant vers une configuration existante.