Matomo : filtrer les requêtes XHR pour superviser l’expérience utilisateur

Matthieu Baumann
Leanovia
Published in
4 min readJul 13, 2021

Le Real User Monitoring (RUM) joue un rôle de plus en plus important dans la supervision des applications. En effet, même si utiliser de l’APM pour superviser vos serveurs peut vous donner un aperçu de l’expérience de vos utilisateurs via les métriques techniques remontées, c’est le RUM qui vous permettra d’obtenir les données métiers les plus précises.

Parmi les différentes solutions disponibles sur le marché, Matomo nous a semblé être pertinent. Étant open-source et avec une communauté active, il possède de nombreux plugins facilement intégrables. Ces derniers permettent de répondre à beaucoup de vos besoins, grâce aux nouvelles fonctionnalités qu’ils apportent.

Cependant, bien que Matomo soit capable de superviser de très nombreux éléments nativement, certaines actions peuvent ne pas être détectées. Il faut donc trouver comment récupérer ces informations d’une autre manière. Si ces actions génèrent des requêtes XHR, il sera possible de les utiliser afin d’envoyer des données à Matomo.

Détection des requêtes XHR

La solution que nous avons développé afin de détecter ces actions consiste à ajouter un fichier javascript capable de détecter les émissions de requêtes XHR, et de les exploiter afin d’envoyer des données à Matomo, sous forme d’un évènement.

Il faut tout d’abord trouver un moyen de détecter les émissions de requêtes XHR. Avec un peu de recherche, il est facile de trouver quelques algorithmes répondants à ce besoin et permettant d’obtenir certaines variables associées à ces requêtes, comme l’url ou la méthode HTTP utilisée. Ce sont ces données que nous allons utiliser.

Pour l’instant, nous souhaitons juste générer un évènement à chaque émission de requête. Cette fonction va uniquement prendre comme données en entrée l’url et la méthode HTTP de la requête et va les utiliser comme nom de catégorie et nom d’action pour l’évènement généré :

Une fois ce script mis en place, il ne reste plus qu’à le tester sur une application exploitant des requêtes XHR afin d’obtenir le résultat suivant :

Parcours de visite sur Matomo avec détection des XHR

Mapping entre les requêtes détectées et les actions métier

Maintenant que ces requêtes XHR sont supervisées, une nouvelle question se pose : comment attribuer à ces évènement une action métier, et comment regrouper plusieurs requêtes XHR en une seule action métier ?

Pour répondre à cela, nous pouvons procéder en deux étapes.

La première étape consiste à ne plus envoyer d’évènement pour chaque requête XHR mais pour des groupes de requêtes définis. Ainsi, quand un utilisateur effectue une action générant plusieurs requêtes, il suffit de détecter l’émission de toutes ces requêtes pour déclencher un évènement.

La deuxième étape consiste à mettre en place un moyen de nommer ces évènements en fonction des actions qui les ont déclenchés. Cela facilitera la compréhension des parcours utilisateurs sur l’interface de Matomo.

Pour mettre en place cette solution, nous allons commencer par créer un script javascript dans lequel nous allons renseigner nos groupes de requêtes formant des actions. Nous allons également associer à ces actions un nom correspondant à l’action métier que nous souhaitons superviser. Ces groupes seront stockés dans un dictionnaire.

Ensuite, nous allons ajouter un tableau vide au script. A chaque fois qu’une requête sera détectée, sa méthode et son url seront ajoutés à ce tableau avant que celui-ci ne soit analysé de la manière suivante :

  • Si cet ensemble de requêtes peut potentiellement correspondre à une action, alors le script attendra la prochaine requête.
La requête détectée fait partie des requêtes attendues
  • Si cet ensemble de requêtes correspond à une action, alors un évènement Matomo sera généré, avec les données fournies. Le tableau sera ensuite vidé.
Les requêtes détectées forment une action
  • Si cet ensemble de requêtes ne correspond à aucune action, le tableau sera vidé, et aucun évènement ne sera généré. Cela permet donc de ne pas superviser certaines requêtes : celles n’étant pas en lien avec une action utilisateur, celles associées à une action supervisée par un autre biais.
Les requêtes détectées ne forment aucunes actions

Une fois ce système mis en place, les seuls évènements générés seront ceux souhaités.

Bien que complet, Matomo n’est pas capable de superviser automatiquement 100% de ce qui se déroule sur une application. Cependant, étant un outil Open Source, il est possible de répondre à de nombreux besoins en réalisant des développements spécifiques.

Aujourd’hui, nous avons vu comment créer des évènements Matomo compréhensibles par les utilisateurs en fonction des requêtes XHR générées. Cette logique pourrait être réutilisée pour superviser d’autres éléments ou pour attribuer à des éléments déjà supervisés des noms plus compréhensibles pour les utilisateurs que ceux définis automatiquement.

--

--

Matthieu Baumann
Leanovia
0 Followers
Writer for

Consultant junior chez Leanovia Consulting