Webalizer est un logiciel qui permet d’analyser les fichiers log d’Apache et de générer des rapports graphiques en HTML.
Ces rapport présentent de nombreux indicateurs sur l’activité du site. Ils indique également les navigateurs utilisés, les ages d’arrivés (entrée) et les pages de sortie.
Webalizer utilise un fichier de configuration qui permet de spécifier tous les paramètres souhaités.
A noter que Webalizer sait également traiter les logs de ProFtpd, Wu-ftpd, Squid et tous les logs au format W3C standard. Les fichiers logs compressés sont traités en natif (pas besoin de les décompresser).
Autre points important, Webalizer n’utilise pas de cookie ou autre ‘traceur’ comme Google Analytics par exemple. C’est donc un système plus respectueux de la vie privée. Aucune information personnelle n’est traité, stocké… Seuls les logs Apache sont utilisés.
Quelques infos sur les termes utilisés : https://webalizer.net/webalizer_help.html
Pages => nombres de pages vues
Hits => nombres de requêtes (pages, images, css, audio, vidéo…)
Sessions => Nombre de visites (plusieurs pages) depuis une même adresse IP, sans activité une session est considérée comme terminée au bout de 30m. Valeur modifiable dans la configuration avec : VisitTimeout
Installation
La plupart des distributions Linux intègrent Webalizer, par exemple sur Debian il suffit de taper : apt install webalizer
.
vous devriez pouvoir installer Webalizer facilement grâce à votre gestionnaire de paquet.
Fichier de configuration (commenté)
## fichiers de logs a traiter LogFile /var/log/apache2/monsite-access.log ## dossier pour générer les rapports HTML OutputDir /varw/www/stats/monsite ## URL de votre site HostName URL_MONSITE UseHTTPS yes Quiet yes GMTTime no CountryGraph yes CountryFlags no DailyGraph yes DailyStats yes HourlyGraph no HourlyStats no ## page principal du site, ici c'est un wordpress donc c'est index.php PagePrefix index.php GraphLegend yes GraphLines 3 ## nombre de mois a traiter au max IndexMonths 6 YearHeaders yes YearTotals yes GraphMonths 12 ## timeout pour traiter les visites 30mn (900s) VisitTimeout 900 MangleAgents 5 StripCGI yes ## traite le logs en mode incremental (ajout) Incremental yes # cache DNS, accélère le traitement des logs DNSCache dns.cache DNSChildren 5 CacheIPs no CacheTTL 7 ## Valeurs pour limiter les tableaux à un nombre de ligne TopAgents 10 AllAgents yes TopReferrers 20 AllReferrers yes TopSites 20 TopKSites 20 AllSites yes TopURLs 30 TopKURLs 20 AllURLs yes Topcountries 20 TopEntry 30 TopExit 30 TopSearch 20 AllSearchStr yes TopUsers 10 AllUsers yes ## ignore ces urls (ne sont pas comptabilisées dans les stats) IgnoreURL /wp-admin* IgnoreURL /robots.txt IgnoreURL /wp-include* IgnoreURL /feed ## masque ces stats mais sont prises en compte pour les calculs de % HideURL *.gif HideURL *.jpeg HideURL *.jpg HideURL *.png HideURL *.GIF HideURL *.JPEG HideURL *.JPG HideURL *.PNG ## ignore les accés depuis cett adresse IgnoreSite x.x.x.x
A vous d’adapter le fichier selon vos besoins.
Configuration Apache
Il est nécessaire que les logs Apache soit configurés en mode Combined
pour que Webalizer dispose de toutes les informations nécessaire.
Il suffit d’éditer le fichier de config (virtualhost) de votre site et de vérifier si la ligne de logs pour les accès à bien l’option combined
.
CustomLog /var/log/apache2/monsite-access.log combined
Logrotate
Par défaut les logs Apache sont archivés automatiquement via le process Logrotate. En général le fichier de log actif est monsite-access.log
, le log n-1 est monsite-access.log.1
, le n-2 est monsite-access.log.2
…
Suivant la configuration de logrotate l’archivage peut conserver 3, 4 voir plus de fichiers logs.
Webalizer doit être exécuté via une tâche planifiée (cron). L’astuce pour ne pas perdre des données est de ne pas analyser fichiers actif (monsite-access.log
) mais le n-1 : monsite-access.log.1
.
Ce fichier est statique et n’est plus modifié par Apache.
Planification
Webalizer se lance avec la commande : webalizer -c fichier.conf
Pour planifier sont exécution afin que les rapports soient générés automatiquement toutes les nuits par exemple il suffit d’ajouter une ligne dans votre crontab :
50 * * * * /usr/bin/webalizer -c /abosulute_path/monsite.conf
A noter que si la tâche est planifiée sur un compte autre que root
, il faut s’assurer que ce compte a le droit (R) lecture sur les fichiers de logs (/var/log/apache2
), et le droit d’écriture (W) dans le dossier pour générer les rapports.