Mesurer son audience avec ses logs d’accès et Matomo
Divulgâchage : Mesurer l’audience de son site web sans javascrit ? c’est possible via ses journaux d’accès ! Aujourd’hui, on vous montre comment les utiliser avec Matomo. Après avoir récupérer ces fichiers journaux, on utilise la ligne de commande pour envoyer leur contenu à Matomo puis pour lui demander d’archive ses statistiques.
Pour mesurer l’audience de notre application, nous avons installé Matomo. Après avoir préparé notre système, installé les fichiers et configuré Matamo, est venue la question d’insérer un tracker en javascript…
Comme vous vous en doutez, on est pas fan de ces méthodes intrusives et on a donc royalement snobé cette étape de l’installation. Problème, aucune mesure statistique ne remonte et notre tableau de bord était donc désespérément vide…
Il nous fallait donc une autre méthode, plus passive et respectueuse de nos utilisateurs. Ça tombe bien, Matomo en propose une en lisant les journaux du serveur.
Les journaux d’accès
Pour nos chers lecteurs qui ne voient pas de quoi il s’agit, les serveurs web (apache, IIS, nginx, …) fournissent un journal des accès. Comme ses homologues, journaux intimes ou journaux de bords, il s’agit d’un document qui liste tous les faits marquants au fur et à mesure qu’ils se produisent.
Contrairement aux journaux intimes, les machines n’ayant pas de sensibilité artistique ou philosophique, ces journaux sont froids et sans vie.
Ainsi, chaque fois qu’un visiteur demande un accès à une ressource de votre application web, le serveur va journaliser cette demande et sa réponse (en tout cas, son statut et sa taille). Ce fichier contenant toute l’activité sur votre site web, on peut l’utiliser pour construire des statistiques de visites (i.e. avec goaccess qui est conçu pour ça).
Ces journaux contenant l’adresse IP du visiteurs, ils sont couverts par le RGPD, vous devrez les anonymiser pour vous en servir pour mesurer votre audience.
Suivant le serveur et le système sur lequel il fonctionne, ces fichiers sont enregistrés dans des répertoires différents :
- Apache 2 : dans
/var/log/apache2
sous Debian et ses dérivés, dans/var/log/httpd
sous Red Hat et ses dérivés. - Nginx : dans
/var/log/nginx
la plupart du temps, - IIS : dans
%SystemDrive%\inetpub\logs\LogFiles
, - Sinon, votre installation est trop personnalisée, soit vous savez déjà de quoi on parle, soit vous avez fait n’importe quoi.
Si vous utilisez les services d’un hébergeur tiers, il faudra voir avec lui quelle est son interface pour lire et récupérer ces fichiers (i.e. comment les récupérer chez kimsufi).
Pour la suite, je vais partir du principe que vos journaux sont disponibles depuis le serveur sur lequel vous avez installé Matomo. Que vous l’installiez directement sur votre serveur web, ou que vous rapatriez les journaux avec une tâche planifiée.
Envoyer les journaux à Matomo
Maintenant que les journaux sont disponibles, il faut les envoyer à Matomo pour qu’il les lise, mette à jour sa base de données et produise les rapports d’audience. Les grandes lignes sont décrites dans la documentation officielle.
Obtenir l’ID du site
Comme Matomo est conçu pour mesurer l’audience de plusieurs sites, vous allez avoir besoin de l’identifiant du site correspondant à vos journaux.
Cette information vous est montrée lorsque vous configurez un nouveau site mais si vous ne l’avez pas notée, vous pouvez la retrouver via les menus d’administration.
Pour voir l’ID du site, vous devez vous rendre dans l’interface d’administration de Matomo, via le menu en haut à droite (icône de roue crantée si votre écran est large, ou simplement « Administration » sinon). Ensuite, via le menu à gauche, cherchez la section « Sites web » et cliquez sur « Gérer ». Vous obtiendrez alors la liste des sites mesurés avec, sous le nom du site, l’ID.
Intégrer les logs
Avec les journaux d’accès et l’ID du site, nous allons pouvoir utiliser le script officiel conçu pour envoyer vos journaux dans matomo.
La version de python utilisée par ce script dépend de la version de matomo :
- Matomo 3 nécessite python 2,
- Matomo 4 nécessite python 3.
Le script dispose d’une aide (via l’argument --help
ou
sa page sur
github), comme je l’utilise en local, je n’ai pas besoin de beaucoup
d’options :
--url
pour dire quelle est l’adresse HTTP de mon Matomo,--idsite
pour dire à quel site correspondent les journaux,--enable-static
parce que j’aime bien avoir des stats sur certains fichiers particuliers (rss.xml
,style.css
, quelques pdf et bien sûr, les traductions de phrack en TXT),- Les noms des fichiers à importer viennent ensuite.
sudo -u www-data \
\
/var/www/matomo/misc/log-analytics/import_logs.py --url=https://votredomaine \
--idsite=1 \
--enable-static \
access.log
Le sudo
est facultatif mais bien pratique. Sans lui, je
devrais fournir un nom d’utilisateur et un mot de passe (dans les
arguments 😢) pour que le script se connecte à Matomo. Avec
sudo
, le script n’a pas besoin de ces identifiants et va
chercher un token dans les fichiers. Et pour éviter d’utiliser
les droits de l’administrateur lorsque ça n’est pas nécessaire,
j’utilise -u www-data
pour n’utiliser que les droits du
serveur web.
Archivage des mesures
Une fois les logs insérés dans la base, Matomo doit encore les archiver. D’habitude, il le fait au fil de l’eau lorsque vous visualisez les pages de statistiques. Pour les petits sites, ou si vous importez vos statistiques très souvent (toutes les 5 minutes), le processus est rapide et personne ne s’en rend compte.
Avec nos journaux, ça ne marche plus aussi bien. Les journaux contenant beaucoup d’événements insérés en une seule fois, l’archivage est long. Croyez-moi, ça se ressent et c’est plutôt pénible de devoir attendre bêtement pour avoir le tableau de bord.
Heureusement, vous pouvez déclencher ce processus directement en ligne de commande. En le faisant juste après l’import, Matomo n’aura plus besoin de le faire lors de vos visites. Le script correspondant a plein d’options mais une seule est nécessaire dans notre cas :
--url
pour dire où joindre notre installation de Matomo.
sudo -u www-data \
\
/var/www/matomo/console core:archive --url='https://votredomaine'
Et puisqu’on lance l’archivage nous-même, on va configurer Matomo pour ne plus déclencher le processus lorsqu’on regarde ses statistiques. Pour ça, on va dans le menu d’administration puis dans la section « Système » on clique sur « Paramètres généraux ».
- La première zone concerne l’archivage et on coche « Non ».
Et après ?
Dans l’idéal, il faudrait appeler automatiquement ces deux lignes de commandes via une tâche planifiée (genre crontab). Toutes les nuits, par exemple, pour récupérer les journaux, les envoyer à matomo et archiver les statistiques.
Vous pourrez alors voir chaque matin les statistiques de visites de la veille. Voir quels sujets marchent mieux que d’autres, les tendances de vos visiteurs et ce genre de choses.
Et puisque vous avez évité le javascript, profitez-en pour anonymisez les adresses IP. Non seulement c’est plus respectueux, mais ça vous évite de devoir afficher un popup de consentement.