[Présentation | Analyser les logs d'Apache avec goaccess ( installation  ,  configuration , utilisation ) | Analyser les logs avec awstats ( Présentation , installation, utilisation ) | Analysez les logs d'un site non hébergé localement ]

Dernière modification 11 août 2024

Analyser les logs d'Apache avec Webalizer et Awstats

Configuration LAMP

( cette page est disponible au téléchargement au format pdf)


Présentation

Cette page présente deux outils pour analyser les logs d'Apache, du plus récent goaccess au plus ancien awstats chacun ayant ses avantages et inconvénients, le premier permet une analyse au quotidien voire en temps réel et permet la visualisation dans un terminal ce qui peut être pratique suivant comment vous administrer votre système, le deuxième permet des rapports mensuels.
 
[retour haut de la page ]

Goaccess

Installation

Le site officiel est https://goaccess.io/ on y récupère l'archive qu'on décompresse en tapant

tar xvfz goaccess-1.9.3.tar.gz

cela donne le répertoire goaccess-1.9.3/

Mais tout d'abord, on installera la bibliothèque permettant de lire des fichiers MaxMind DB, dont les bases GeoIP2, qui serviront à géolocaliser des adresses IP. Le site officiel https://github.com/maxmind/libmaxminddb on y récupère l'archive qu'on décompresse en tapant

tar xvfz libmaxminddb-1.10.0.tar.gz

Cela donne le répertoire libmaxminddb-1.10.0

On installera préalablement le package ncursesw-devel

Visiblement il manque des bouts de code sous libmaxminddb-1.10.0, on récupérera une copie de libtap par ici https://github.com/zorgnax/libtap/tree/b53e4ef5257f80e881762b6143834d8aae29da1a, qu'on décompressera sous libmaxminddb-1.10.0/t/libtap en tapant successivement les commandes suivantes

unzip libtap-b53e4ef5257f80e881762b6143834d8aae29da1a.zip
cd libtap-b53e4ef5257f80e881762b6143834d8aae29da1a/
mv * ..
mv .gitignore ..
mv .travis.yml ..
cd ..
rmdir libtap-b53e4ef5257f80e881762b6143834d8aae29da1a/

sous libmaxminddb-1.10.0 on tape enfin

./configure

make

et tant que root make install

On revient dans le répertoire  goaccess-19.3 et on tape

./configure --enable-utf8 --enable-geoip=mmdb

voilà le résultat

Your build configuration:

  Prefix         : /usr/local
  Package        : goaccess
  Version        : 1.9.3
  Compiler flags :  -pthread
  Linker flags   : -lncursesw -lmaxminddb -lpthread -lintl -lintl 
  UTF-8 support  : yes
  Dynamic buffer : no
  ASan           : no
  Geolocation    : GeoIP2
  Storage method : In-Memory with On-Disk Persistent Storage
  TLS/SSL        : no
  Bugs           : hello@goaccess.io

on tape make puis en tant que root make install

[retour haut de la page ]

Configuration

Tout se passe dans le fichier /usr/local/etc/goaccess/goaccess.conf

j'ai modifié que trois paramètres qu'on retrouve ci-dessous

######################################
# Time Format Options (required)
######################################
#
# The hour (24-hour clock) [00,23]; leading zeros are permitted but not required.
# The minute [00,59]; leading zeros are permitted but not required.
# The seconds [00,60]; leading zeros are permitted but not required.
# See `man strftime` for more details
#
# The following time format works with any of the
# Apache/NGINX's log formats below.
#
time-format %H:%M:%S

(...)

######################################
# Date Format Options (required)
######################################
#
# The date-format variable followed by a space, specifies
# the log format date containing any combination of regular
# characters and special format specifiers. They all begin with a
# percentage (%) sign. See `man strftime`
#
# The following date format works with any of the
# Apache/NGINX's log formats below.
#
date-format %d/%b/%Y

(...)

######################################
# Log Format Options (required)
######################################

log-format %v %h %^[%d:%t %^] (%T s) "%r" %s %b "%R" "%u"' --date-format=%d/%b/%Y --time-format=%T

Cette dernière option est sans doute l'option la plus importante, c'est le format du fichier de log. Le format personnalisé qui est indiqué correspond à mes logs de funix.

www.funix.org:80 74.125.217.134 - - [10/Aug/2024:02:04:33 +0200] "GET /images/style.css HTTP/1.0" 301 561 "http://www.funix.org/" "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/537.36 (KHTML, like Gecko; Mediapartners-Google) Chrome/126.0.6478.182 Mobile Safari/537.36"

Utilisation

Il suffit de taper goaccess avec le nom du fichier de log à la suite, tout se passe dans un terminal


Ce site va vous donner une idée de toutes les informations que vous pouvez avoir. Maintenant si vous préférez une visualisation via html, il suffira de taper

goaccess www.funix.org.log -a -o funixlog.html

et cela donnera quelque chose de plus de attrayant, ci-dessous deux vues



 

[retour haut de la page ]

 

Analyser les logs d'Apache avec awstats

Présentation

Awstats est un outil pour analyser les logs d'apache,vous pouvez le trouver à l'URL awstats.sourceforge.net, c'est une archive au format tarball awstats-7.9.tar.gz qu'on récupérera.

[retour haut de la page ]

Installation et configuration

On décompresse l'archive en tapant :

tar xvfz awstats-7.9.tar.gz

Cela va nous donner le répertoire awstats-7.9. Dans un premier temps on va devoir modifier légèrement le fichier de configuration d'apache httpd.conf dans le cas où vous utilisez des hôtes virtuels, voici un exemple de configuration

<VirtualHost 192.168.13.11:1234>
ServerName funix.homelinux.org
DocumentRoot /roger/homepage/online
ErrorLog logs/online-error_log
TransferLog logs/online-access_log
CustomLog logs/online-access_log combined
</VirtualHost>

On doit mettre combined pour le paramètre CustomLog. N'oubliez pas de relancer  apache  en cas de  modification

systemctl restart httpd.service

Maintenant on doit créer le répertoire /etc/awstats

mkdir /etc/awstats

Pour la configuration d'awstats on ira dans le répertoire tools

cd awstats-7.9/tools

Dans le cas d'une mise à jour on tapera

perl awstats_updateall.pl now -awstatsprog=/chemin-absolu/awstats-7.9/wwwroot/cgi-bin/awstats.pl -configdir=/etc/awstats/

/etc/awstats est le répertoire où se trouvent les fichiers de configuration de vos serveurs. Voilà le résultat

Running '"/home/olivier/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -update -config=funix.kervao.fr -configdir="/etc/awstats/"' to update config funix.kervao.fr
Failed to open blacklist: No such file or directory

Running '"/home/olivier/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -update -config=www.funix.org -configdir="/etc/awstats/"' to update config www.funix.org
Create/Update database for config "/etc/awstats/awstats.www.funix.org.conf" by AWStats version 7.9 (build 20230108)
From data in log file "/usr/local/apache2/logs/funix.org/www.funix.org.log"...
Phase 1 : First bypass old records, searching new record...
Direct access after last parsed record (after line 6479)
Jumped lines in file: 6479
 Found 6479 already parsed records.
Parsed lines in file: 0
 Found 0 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 0 new qualified records.

Running '"/home/olivier/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -update -config=www.hoarau.org -configdir="/etc/awstats/"' to update config www.hoarau.org
Create/Update database for config "/etc/awstats/awstats.www.hoarau.org.conf" by AWStats version 7.9 (build 20230108)
From data in log file "/usr/local/apache2/logs/hoarau.org/www.hoarau.org.log"...
Phase 1 : First bypass old records, searching new record...
Direct access after last parsed record (after line 7827)
Jumped lines in file: 7827
 Found 7827 already parsed records.
Parsed lines in file: 0
 Found 0 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 0 new qualified records.

Dans le cas d'une première installation, on tapera (dans l'exemple ci-dessous, je dispose de deux serveurs Apache (version 1.3 et 2) avec les serveurs web virtuels http://funix.homelinux.org:1234 et http://ohoarau.homelinux.org:1234) en tant que root

perl awstats_configure.pl

voilà le résultat

----- 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:
/usr/local/linux/web/awstats-7.9
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

ici il trouve les fichiers de configuration de mes deux serveurs Apache

-----> Check for web server install
  Found Web server Apache config file '/usr/local/apache/conf/httpd.conf'
  Found Web server Apache config file '/usr/local/apache2/conf/httpd.conf'

Il modifie les deux fichiers de configuration, il modifie également les fichiers pour mettre à jour le format d'archivage des logs

-----> Check and complete web server config file '/usr/local/apache2/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] ? y

Add 'Alias /awstatsclasses "/usr/local/linux/web/awstats-7.9/wwwroot/classes/"'
  Add 'Alias /awstatscss "/usr/local/linux/web/awstats-7.9/wwwroot/css/"'
  Add 'Alias /awstatsicons "/usr/local/linux/web/awstats-7.9/wwwroot/icon/"'
  Add 'ScriptAlias /awstats/ "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/"'
  Add '<Directory>' directive
  AWStats directives added to Apache config file.

Il met à jour son propre fichier de configuration

-----> Update model config file '/usr/local/linux/web/awstats-7.9/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

on indique ici l'URL du serveur web à analyser (adresse:port)

-----> 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:
> funix.homelinux.org:1234

Définition du chemin pour stocker les fichiers de configuration pour chaque serveur à analyser

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

Création du fichier de configuration du serveur mentionné plus haut

-----> Create config file '/etc/awstats/awstats.funix.homelinux.org:1234.conf'
 Config file /etc/awstats/awstats.funix.homelinux.org:1234.conf created.

Apache est relancé automatiquement

-----> Restart Web server with '/sbin/service httpd restart'
Redirecting to /bin/systemctl restart httpd.service

-----> 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:
/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl -update -config=funix.homelinux.org:1234
Or if you have several config files and prefer having only one command:
/usr/local/linux/web/awstats-7.9/tools/awstats_updateall.pl now
Press ENTER to continue...

A SIMPLE config file has been created: /etc/awstats/awstats.funix.homelinux.org:1234.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'funix.homelinux.org:1234' with command:
> perl awstats.pl -update -config=funix.homelinux.org:1234
You can also read your statistics for 'funix.homelinux.org:1234' with URL:
> http://localhost/awstats/awstats.pl?config=funix.homelinux.org:1234


Press ENTER to finish...

Il a créé un fichier de configuration pour le site concerné /etc/awstats/awstats.funix.homelinux.org:1234.conf dans ce fichier j'ai modifié les paramètres suivants:

- Celui qui indique le chemin du fichier de log brut à analyser

LogFile="/usr/local/apache/logs/online-access_log"

- pour activer la résolution de nom DNS

DNSLookup=1

- Répertoire où awstats va stocker ses statistiques

DirData="/usr/local/var/awstats"

- Pour indiquer le fichier index de votre site

DefaultFile="index.php"

- Pour ignorer les marchines de votre domaine

SkipHosts="127.0.0.1 REGEX[^192\.168\.13\.]  REGEX[\.kervao\.fr$]"

- Si votre site est identifié par une autre URL il faut la rajouter ici (mettre un espace comme champ séparateur)

HostAliases="funix.homelinux.org:1234"

Pour lutter contre les spam referrers, vous devez activer la variable suivante

SkipReferrersBlackList="/etc/awstats/blacklist.txt"

avec un fichier blacklist.txt qu'on récupèrera sous awstats-7.9/wwwroot/cgi-bin/lib

Par ici on trouvera une blacklist nettement plus récente https://perishablepress.com/blacklist/ultimate-referrer-blacklist.txt

dans ce fichier d'après mes tests il semblerait que la première partie qui commence par des RewriteCond ne serve à rien pour awstats, elle n'est utile que si vous filtrez les SPAM referrers directement à l'accès sur votre site avec un .htaccess attention cette méthode aura pour conséquence de ralentir l'accès à votre site. Voir par ici une discussion intéressante sur le sujet.

Ce n'est que la seconde partie qui est réellement utile et qui fonctionne avec awstats, elle commence par

# This is the URL blacklist from the chongqed.org database
# it is available from http://blacklist.chongqed.org/
# You can use each line below as a regular expression
# that can be tested against URLs on your wiki.
# The last spammer was added on 2008-09-11 10:14:51
# Check http://blacklist.chongqed.org/ for updates

J'ai commencé à compléter la liste par les lignes suivantes

https?:\/\/([^\/]*\.)?proxtrail\.ru
https?:\/\/([^\/]*\.)?denterum\.ru
https?:\/\/([^\/]*\.)?profeservice\.ru
https?:\/\/([^\/]*\.)?bazakanstovarov\.com
https?:\/\/([^\/]*\.)?balkanfarma\.ru
https?:\/\/([^\/]*\.)?sobervoditel\.ru
https?:\/\/([^\/]*\.)?avtokor-23\.ru
https?:\/\/([^\/]*\.)?avtokor23\.ru
https?:\/\/([^\/]*\.)?xn--j1at1a.xn--p1ai
https?:\/\/([^\/]*\.)?rupolitshow\.ru
https?:\/\/([^\/]*\.)?vyezd-viyezd\.ru
https?:\/\/([^\/]*\.)?igru-2015\.ru
https?:\/\/([^\/]*\.)?jeribetejewu\.c0\.pl
https?:\/\/([^\/]*\.)?creditservise\.ru
https?:\/\/([^\/]*\.)?megamashiny\.com
https?:\/\/([^\/]*\.)?seoxbeep\.ru
https?:\/\/([^\/]*\.)?woman3050\.ru
https?:\/\/([^\/]*\.)?www.vselgoty\.ru
https?:\/\/([^\/]*\.)?playpokeronline\.dk
https?:\/\/([^\/]*\.)?medical\.in\.ua
https?:\/\/([^\/]*\.)?viagralevitradzheneriki\.ru
https?:\/\/([^\/]*\.)?\.com\.ua
https?:\/\/([^\/]*\.)?tasgroup\.it
https?:\/\/([^\/]*\.)?\.co\.ua
https?:\/\/([^\/]*\.)?kiev\.ua
https?:\/\/([^\/]*\.)?bringtwo\.net
https?:\/\/([^\/]*\.)?cleaningservices\.kiev\.ua
https?:\/\/([^\/]*\.)?studio-topkapi\.eu
https?:\/\/([^\/]*\.)?kruchen\.com\.ua
https?:\/\/([^\/]*\.)?freedom\.co\.ua
https?:\/\/([^\/]*\.)?bringtwo\.net
https?:\/\/([^\/]*\.)?studio-topkapi\.eu
https?:\/\/([^\/]*\.)?c0\.pl
https?:\/\/([^\/]*\.)?bazakanstovarov\.com
https?:\/\/([^\/]*\.)?xikiz\.com
https?:\/\/([^\/]*\.)?lesbianmilf\.xblog\.in
https?:\/\/([^\/]*\.)?pamyatniki-in-kiev\.com\.ua
https?:\/\/([^\/]*\.)?carivka\.com\.ua
https?:\/\/([^\/]*\.)?agent-05\.su
https?:\/\/([^\/]*\.)?websolution\.com\.ua
https?:\/\/([^\/]*\.)?pamjatnik\.com\.ua
https?:\/\/([^\/]*\.)?startimes\.com
https?:\/\/([^\/]*\.)?arktech\.co
https?:\/\/([^\/]*\.)?goohey\.com
https?:\/\/([^\/]*\.)?himalayan-imports\.com
https?:\/\/([^\/]*\.)?pizza-imperia\.com
https?:\/\/([^\/]*\.)?nowellgroup\.com
https?:\/\/([^\/]*\.)?ddrgame\.com
https?:\/\/([^\/]*\.)?torrinomedica\.it
https?:\/\/([^\/]*\.)?oliveriobalcells\.com
https?:\/\/([^\/]*\.)?giocagiocagioca\.com


Ca m'a vite saoulé parce que tous les jours il y a des nouveaux sites qui font leur apparition, le plus simple est de bloquer carrément certaines extensions !

^https?://[^/]+\.ru
^https?://[^/]+\.ua
^https?://[^/]+\.su
^https?://[^/]+\.link
^https?://[^/]+\.cc
^https?://[^/]+\.in


là on va bloquer tous les sites en .ru, en .ua, etc. Tant qu'à faire comme ce n'est pas forcément intéressant de voir les referrers de son propre domaine, on les bloque également

https?:\/\/([^\/]*\.)?hoarau\.org
https?:\/\/([^\/]*\.)?funix\.org


et là je peux vous garantir que la liste des referrers est assainie et enfin exploitable.

pour que ça soit pris en compte avec awstats il faut effacer ce qu'il y a sous /usr/local/var/awstats/ et relancer awstats pour tous les fichiers de log hebdo

Pensez à créer préalablement ce répertoire

mkdir /usr/local/var/awstats

Pour voir si tout marche on se place maintenant en tant que root sous awstats-7.9/wwwroot/cgi-bin et on tape

./awstats.pl -config=funix.homelinux.org:1234 -update

Voilà le résultat

Create/Update database for config "/etc/awstats/awstats.www.hoarau.org.conf" by AWStats version 7.9 (build 20230108)
From data in log file "/usr/local/apache2/logs/hoarau.org/www.hoarau.org.log"...
Phase 1 : First bypass old records, searching new record...
Direct access after last parsed record (after line 7827)
Jumped lines in file: 7827
 Found 7827 already parsed records.
Parsed lines in file: 0
 Found 0 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 0 new qualified records.

Sur les versions précédentes il y avait un léger bug, voilà une ligne typique de log

192.168.0.11 - - [19/Feb/2004:10:58:17 +0100] "GET /images/journal.gif HTTP/1.1" 304 - "http://funix.homelinux.org:1234/fr/linux/index.php?ref=tips&page=menu" "Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.4) Gecko/20
030630"

Or parfois Apache archive ceci

192.168.0.11 - - [19/Feb/2004:10:58:24 +0100] "GET / HTTP/1.1" 200 17493

A défaut d'information il laisse des champs vides et awstats n'apprécie guère (il n'analyse pas les logs...). Je n'ai pas le recul suffisant pour savoir si ça était corrigé.

Si vous avez un deuxième site virtuel, créer un autre fichier /etc/awstats/awstats.mon-domaine-virtuel.conf sur le même modèle que précédemment. Dans mon cas il suffit de taper

cp /etc/awstats/awstats.funix.homelinux.org:1234.conf  /etc/awstats/awstats.ohoarau.homelinux.org:1234.conf

Dans ce fichier pensez à modifier les paramètres pour l'URL et le fichier de logs d'Apache à analyser.

A noter que vu la méthode employée (voir chapitre suivant) pour utiliser awstats, j'ai supprimé les lignes qu'awstats à rajouter dans mes fichiers de configuration d'Apache.
Si vous voulez utiliser awstats en tant que cgi-bin accessible d'Apache, vous devez laisser ces lignes.

[retour haut de la page ]

Utilisation

Voilà comment j'utilise awstats, j'ai créé un fichier awstats (droit exécutable) sous /etc/cron.daily qui s'exécute donc tous les jours et permet de réaliser les stats pour mes deux adresses web virtuelles

#!/bin/bash
/usr/local/linux/web/awstats-7.9/tools/awstats_buildstaticpages.pl -config=ohoarau.homelinux.org:1234 -update -lang=fr -dir=/usr/local/apache2/htdocs/awstats/ohoarau -awstatsprog=/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl

/usr/local/linux/web/awstats-7.9/tools/awstats_buildstaticpages.pl -config=funix.homelinux.org:1234 -update -lang=fr -dir=/usr/local/apache2/htdocs/awstats/online  -awstatsprog=/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl


L'option -dir permet de sauvegarder sous forme html les statistiques obtenus dans le répertoire qui va bien. Pour terminer le répertoire icon d'awstats doit être accessible sur votre serveur web, pour cela dans le fichier de configuration d'Apache, j'ai rajouté les directives suivantes

Alias /awstatsicons/ "/usr/local/linux/web/awstats-7.9/wwwroot/icon/"

<Directory "/usr/local/linux/web/awstats-7.9/wwwroot/icon">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Vous remplacerez bien sûr par le chemin en absolu d'awstats. Par ailleurs j'ai mis les droits qui allaient bien pour le répertoire d'awstats

chmod 755 awstats-7.9/

Voilà ce que ça donne dans je lance mon script /etc/cron.daily/awstats

Launch update process : "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -update -configdir=
Build main page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output
Build alldomains page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=alldomains
Build allhosts page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=allhosts
Build lasthosts page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=lasthosts
Build unknownip page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=unknownip
Build allrobots page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=allrobots
Build lastrobots page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=lastrobots
Build session page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=session
Build urldetail page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=urldetail
Build urlentry page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=urlentry
Build urlexit page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=urlexit
Build osdetail page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=osdetail
Build unknownos page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=unknownos
Build browserdetail page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=browserdetail
Build unknownbrowser page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=unknownbrowser
Build refererse page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=refererse
Build refererpages page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=refererpages
Build keyphrases page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=keyphrases
Build keywords page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=keywords
Build errors404 page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=ohoarau.homelinux.org:1234 -staticlinks -lang=fr -output=errors404
20 files built.
Main HTML page is 'awstats.ohoarau.homelinux.org:1234.html'.
Launch update process : "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -update -configdir=
Build main page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output
Build alldomains page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=alldomains
Build allhosts page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=allhosts
Build lasthosts page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=lasthosts
Build unknownip page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=unknownip
Build allrobots page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=allrobots
Build lastrobots page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=lastrobots
Build session page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=session
Build urldetail page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=urldetail
Build urlentry page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=urlentry
Build urlexit page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=urlexit
Build osdetail page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=osdetail
Build unknownos page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=unknownos
Build browserdetail page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=browserdetail
Build unknownbrowser page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=unknownbrowser
Build refererse page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=refererse
Build refererpages page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=refererpages
Build keyphrases page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=keyphrases
Build keywords page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=keywords
Build errors404 page: "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl" -config=funix.homelinux.org:1234 -staticlinks -lang=fr -output=errors404
20 files built.
Main HTML page is 'awstats.funix.homelinux.org:1234.html'.


si vous avez une erreur du style
bash: /usr/local/linux/web/awstats-7.9/tools/awstats_buildstaticpages.pl: /usr/bin/perl^M: bad interpreter: Aucun fichier ou répertoire de ce type

il suffit d'éditer le fichier awstats_buildstaticpages.pl et de virer le ^M après perl (avec mcedit par exemple).

maintenant si vous avez l'erreur suivante awstats.pl permission non accordée, c'est que les droits d'awstats ne sont pas bon. Il faut le mettre à 755 comme ceci

chmod 755 /usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl

Maintenant sous les répertoires /usr/local/apache2/htdocs/awstats/online et /usr/local/apache2/htdocs/awstats/ohoarau je me retrouve avec des fichiers html, pour le premier le fichier d'entrée est awstats.funix.homelinux.org:1234.html et pour l'autre awstats.ohoarau.homelinux.org:1234.html
A partir d'une page web accessible sur votre serveur web (page d'accueil par exemple), j'ai fait un lien vers ces pages de statistiques.
Il faudra éventuellement rajouter le répertoire /usr/local/apache2/htdocs/awstats/online dans une directive Directory dans le fichier httpd.conf si nécessaire. J'ai dû créer également la directive suivante pour les icones soient visibles

<Directory "/usr/local/linux/web/awstats-7.9/wwwroot/icon">
   Options Indexes FollowSymLinks Includes ExecCGI
   AllowOverride All
   Require all granted
</Directory>

Voilà quelques aperçus (non exhaustifs)








Pour pouvoir faire les stats d'un site que vous n'hébergez pas localement, c'est par ici.

Inconvénient de cette méthode les pages construites sont statiques et on ne peut pas accéder à l'historique des mois précédents. Il faudra passer par l'extention CGI d'apache qu'il faudra activer, puis on rajoute les lignes suivantes dans le fichier httpd.conf

Alias /awstatsclasses "/usr/local/linux/web/awstats-7.9/wwwroot/classes/"
Alias /awstatscss "/usr/local/linux/web/awstats-7.9/wwwroot/css/"
Alias /awstatsicons "/usr/local/linux/web/awstats-7.9/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/"

<Directory "/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin">
    Options ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<Directory "/usr/local/linux/web/awstats-7.9/wwwroot">
   Options Indexes FollowSymLinks Includes ExecCGI
   AllowOverride All
   Require all granted
</Directory>


Le site sera accessible en tapant comme URL http://monserveurweb/awstats/awstats.pl?config=funix.homelinux.org:1234 et voilà le résultat


on retrouve un bandeau de menu à gauche et on peut choisir le mois d'analyse avec un menu type drop down.
[retour haut de la page ]

Analysez les logs d'un site hébergé non localement

Pour être concret, j'ai mon site funix.org qui est hébergé chez online, j'ai moyen de récupérer les logs d'Apache bruts, chaque jour un fichier log est créé et se retrouve dans une arborescence année/mois/jour_access.log.gz.  Avec cron, je demande une mise à jour des stats quotidienne, je le demande pour la veille.
Voilà le script qui permet de récupérer les stats de la veille et de lancer les analyses par awstats et goaccess pour pouvoir les rendre accessibles via un serveur apache local, et qui le place dans le répertoire /usr/local/apache2/logs/funix.org

#!/bin/bash
# construction du format de la date
jour=`date +%e`
mois=`date +%m`
annee=`date +%Y`
mois31="mai juillet octobre décembre"
mois30="février avril juin septembre novembre"
if  [ $jour -eq "1" ];
 then
   moisb=`date +%B`
   for i in $mois31
   do
        if [ $moisb == $i ]
        then
             hier=30
         mois=`expr $mois - 1`
        fi
   done
   for i in $mois30
   do
        if [ $moisb == $i ]
        then
              hier=31
          mois=`expr $mois - 1`
        fi
   done
   if [ $moib == "août" ]
   then
       hier=31
       mois=07
   fi
   if [ $moisb == "mars" ]
    then
       hier=28
       mois=02
   fi
   if [ $moisb == "janvier" ]
   then
           hier=31
           mois=12
       annee=`expr $annee - 1`
   fi
 else
   hier=`expr $jour - 1`
 fi
if  [ "${#hier}" = 1 ]
   then hier="0"$hier
fi
if  [ "${#mois}" = 1 ]
   then mois="0"$mois
fi
# je me déplace dans le répertoire qui va bien et je supprime les vieux fichiers log
cd /usr/local/apache2/logs/funix.org
rm -f /usr/local/apache2/logs/funix.org/*.log
# récupération des logs par ftp
wget -c ftp://stats.online.net/archives/"$annee"/"$mois"/"$hier"_access.log.gz --user=webmaster@funix.org --password=mot-de-passe
# je décompresse l'archive et la renomme
gunzip "$hier"_access.log.gz
mv "$hier"_access.log www.funix.org.log

#analyse avec awstats
/usr/local/linux/web/awstats-7.9/tools/awstats_buildstaticpages.pl -config=www.funix.org -update -lang=fr -dir=/usr/local/apache2/htdocs/awstats/funix.org -awstatsprog=/usr/local/linux/web/awstats-7.9/wwwroot/cgi-bin/awstats.pl

#analyse avec goaccess
goaccess /usr/local/apache/logs/funix.org/www.funix.org.log -a -o  /usr/local/apache/logs/funix.org/funixlog.log

Pour réaliser des stats avec awstats, j'ai créé un fichier /etc/awstats/awstats.www.funix.org.conf dans lequel j'ai modifié les paramètres suivants

LogFile="/usr/local/apache/logs/funix.org/www.funix.org.log"
SiteDomain="www.funix.org"
HostAliases="www.funix.org"

Mon fichier brut de log ressemble à ça

www.funix.org:80 109.8.158.150 - - [01/Jan/2017:01:02:29 +0100] "GET /fr/unix/awk.htm HTTP/1.0" 200 8711 "https://www.google.fr/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0"
www.funix.org:80 109.8.158.150 - - [01/Jan/2017:01:02:29 +0100] "GET /favicon.ico HTTP/1.0" 404 468 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0"
www.funix.org:80 109.8.158.150 - - [01/Jan/2017:01:02:29 +0100] "GET /favicon.ico HTTP/1.0" 404 468 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0"
www.funix.org:80 163.172.66.155 - - [01/Jan/2017:01:02:52 +0100] "GET /fr/linux/main-linux.php?ref=xinetd&page=full HTTP/1.0" 200 5751 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.2; +http://ahrefs.com/robot/)"
www.funix.org:80 86.252.235.82 - - [01/Jan/2017:01:04:29 +0100] "GET /fr/linux/main-linux.php?ref=video&page=menu HTTP/1.0" 200 14052 "https://www.google.fr/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/55.0.2883.87 Safari/537.36"
www.funix.org:80 86.252.235.82 - - [01/Jan/2017:01:04:29 +0100] "GET /images/funix-icone.gif HTTP/1.0" 200 4320 "http://www.funix.org/fr/linux/main-linux.php?ref=video&page=menu" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
www.funix.org:80 86.252.235.82 - - [01/Jan/2017:01:04:29 +0100] "GET /images/journal.gif HTTP/1.0" 200 354 "http://www.funix.org/fr/linux/main-linux.php?ref=video&page=menu" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTM
L, like Gecko) Chrome/55.0.2883.87 Safari/537.36"

par défaut il y aura toujours qu'un visiteur unique par jour ! J'ai donc dû adapter le format de log avec la variable LogFormat

LogFormat="%other %host - - %time1 %methodurl %code %bytesd %refererquot %uaquot"

Cela signifie qu'on laisse tomber le premier champ et on prend en compte que les suivants.

Les fichiers résultats vont se retrouver sous /usr/local/apache2/htdocs/awstats/funix.org, il m'a semblé utile dans ce répertoire de créer le lien suivant

ln -s awstats.www.funix.org.html index.html

Placer maintenant ce script sous /etc/cron.daily pour qu'il soit appelé tous les jours (à 4h du mat pour une Mageia par défaut).

Pour que tout ça soit visible de mon serveur Apache local, j'ai rajouté les alias suivants dans le fichier /usr/local/apache2/conf/httpd.conf

Alias /awstats-funix-org "/usr/local/apache2/logs/funix.org/"
Alias /goaccess-funix-org "/usr/local/apache2/logs/funix.org/funixlog.html"

et pour que les répertoires ci-dessus soient accessibles

<Directory "/usr/local/apache2/logs/funix.org/">
   Options Indexes FollowSymLinks Includes ExecCGI
   AllowOverride All
   Require all granted
</Directory>

<Directory "/usr/local/apache2/htdocs/awstats/funix.org/">

   Options Indexes FollowSymLinks Includes ExecCGI
   AllowOverride All
   Require all granted
</Directory>


on relance Apache dans la foulée

systemctl restart httpd.service

avec la méthode par CGI mes stats sont accessibles à partir de l'URL http://monserveur/awstats/awstats.pl?config=www.funix.org

 
[Retour page d'accueil FUNIX] [retour haut de la page ]