Raven - Blog
03. Octobre 2022

GoAccess

Posté le 03. Octobre 2022  •  5 minutes  • 1003 mots  • Autres langues:  English

Ce blog est mon espace numérique personnel de liberté et, lorsque j’écris des articles, parfois j’ai simplement envie de me faire une idée du nombre de personnes qui passent me lire. C’est dans ce but que je souhaitais avoir des statistiques simples et respectueuses de mes lecteur·rice·s, et donc faire ce qu’on appelle plus communément de l’"analytics".

Pour recueillir ces informations statistiques, il y a globalement deux grandes orientations possibles :

Les cookies sont précis, il peuvent réellement identifier un utilisateur mais ils nécessitent que mon site web (ou une tierce partie, coucou Google Analytics 👋) dépose un fichier (le cookie) sur le PC de l’utilisateur afin de pouvoir tracer son usage de mon site internet. Ce dépôt de cookie entraîne la notion de recueil du consentement avec la mise en place d’un bandeau d’acceptation/refus de cookie. Les fameux bandeaux qui polluent la navigation web moderne.

L’analyse des logs, quant à elle, est moins précise puisqu’elle se base sur l’adresse IP du visiteur. Sauf que les adresses IP peuvent être partagées par plusieurs personnes (NAT). De plus, une personne peut utiliser plusieurs adresses IP (VPN). Enfin, on distingue moins les robots des véritables utilisateurs. En revanche, via le log, on peut obtenir le “Referer” Referer , un en-tête de requête qui permet de connaître la provenance de l’utilisateur : savoir s’il arrive sur mon site par DuckDuckGo, Google, Twitter ou tout autre site qui contiendrait un lien vers mon blog.

Maintenant, la question que je me suis posée est : ai-je besoin d’avoir des statistiques précises au visiteur près dans le cadre de mon blog personnel ? La réponse est non, je souhaite juste avoir un ordre d’idées du nombre de visiteurs et des “referer” (par là où les visiteurs arrivent sur mon site).

Dans mon cas, voici donc ce qui m’importe :

Du côté des solutions techniques libres qui permettent l’analyse de logs orientée analytics, il y a évidemment le bon vieux AWStats . Mais je trouve que son interface et ses fonctionnalités accusent un peu l’âge. C’est pourquoi, je vous présente aujourd’hui GoAccess ! J’ai utilisé cette solution de nombreuses fois dans des contextes professionnels et c’est toujours très pratique.

Installation de GoAccess

Pour mon article, je traite l’installation de GoAccess sur un serveur Debian avec un serveur web Apache.

Mais le logiciel est disponible sur la plupart des distributions Linux ici . De plus, il est capable de parser les logs de quasiment tous les types de serveurs web : “Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, etc.” - Source

Sous Debian 11.5, vous récupérerez la version 1.4 de GoAccess dans les dépôts, mais rien ne vous empêche d’ajouter leurs sources pour obtenir la dernière version à jour.

Enfin, GoAccess propose la consultation des statistiques par interface web (dashboard) et/ou ligne de commande.

Installation Debian :

sudo apt-get install goaccess

Pour un usage en ligne de commande, vous pouvez consulter directement les statistiques en temps réel dans votre terminal avec :

goaccess /var/log/nginx/access.log -c

Paramétrage du dashboard GoAccess pour Apache

Une fois le paquet installé, il est nécessaire de configurer le fichier /etc/goaccess.conf. Ce fichier est organisé en sections avec des lignes à commenter/décommenter pour activer/désactiver certaines options.

Pour le serveur web Apache, il faudra décommenter la ligne suivante pour la section Time Format Options :

time-format %H:%M:%S

Pour la section Date Format Option, décommentez la ligne suivante :

date-format %d/%b/%Y

Enfin, dans la section Log Format Option du fichier de conf, j’utilise Apache avec des VHOST et des logs combinés, il faudra donc décommenter les lignes :

log-format %h %^[%d:%t %^] "%r" %s %b

Et :

log-format COMBINED

Pour terminer, sachez qu’il est possible, en guise de test ou pour partager une analyse, de lancer un parsing sur un log et d’en ressortir un fichier HTML prêt à l’emploi ou au partage. Exemple avec cette commande :

goaccess -f /Datas/hebergements/albatros-info/logs/access.log --log-format=COMBINED > /folder/r4ven.fr.log.html

Avant d’attaquer la suite, vous pouvez déjà jeter un œil à votre premier dashboard généré !

Dashboard GoAccess Pour des raisons de confidentialité, c’est ici une capture de la démo de GoAccess .

Automatiser l’analyse de logs et rendre disponible le dashboard

Pour mon exemple dans l’article, je souhaite :

  1. Dans le VHOST de votre domaine, verrouillez l’accès au rapport :
<Files goaccess.html>
   AuthUserFile /foo/bar/domaine.fr/.htpasswd
   AuthName "Username and password required"
   AuthType Basic
   Require valid-user
</Files>

Utilisez htpasswd pour gérer votre authentification via apache .

  1. Ajoutez l’automatisation de la génération du dashboard dans votre cron :
0 */1 * * * USER goaccess /foo/bar/domaine.fr/logs/access.log -o /foo/bar/domaine.fr/goaccess.html --anonymize-ip --anonymize-level=2

Pour tronquer les adresses IP, on utilise l’option --anonymize-ip de GoAccess. Le niveau 2 de cette option correspond au masquage de 16 bits en IPv4 et 80 bits en IPv6.

Les options du dashboard GoAccess

Un rapport analytics de GoAccess est un simple fichier HTML static. Sur cette page, vous retrouverez un menu sur la gauche vous permettant d’éditer des paramètres d’affichage ainsi que les menus vous renvoyant vers les différentes ancres HTML du dashboard. Vous pouvez également choisir d’afficher ou de masquer certaines ancres.

Aperçu des panneaux d’options

Le mot de la fin…

Pour conclure, sachez que GoAccess possède de multiples options et je vous invite vivement à fouiller dans leur documentation si vous êtes intéressé·e . Par exemple, il y a une option pour afficher vos statistiques en temps réel . GoAccess va monter un serveur Websocket pour rafraîchir les données en permanence, au top 👌.

Retrouvez une demo live du dashboard de GoAccess ici : rt.goaccess.io .

Vous serez certainement encore nombreux à lire ce nouvel article, en tout cas je le saurai vite grâce à GoAccess 😉.

Follow me

Subscribe to my RSS feed !