Données de navigateur RUM recueillies

Données de navigateur RUM recueillies

Le SDK Real User Monitoring Datadog génère six types d’événements :

Type d’événementRétentionDescription
Session30 joursUne session utilisateur débute lorsqu’un utilisateur commence à parcourir l’application Web. Une session inclut des informations générales sur l’utilisateur (navigateur, appareil, géolocalisation). Elle agrège tous les événements RUM recueillis lors du parcours utilisateur en appliquant un attribut session.id unique.
Vue30 joursUn événement de type Vue est généré à chaque fois qu’un utilisateur consulte une page de l’application Web. Tant que l’utilisateur reste sur la même page, les événements de type Ressource, Tâche longue, Erreur et Action sont associés à cette vue RUM via l’attribut view.id.
Ressource15 joursUn événement de type Ressource est généré pour les images, XHR, Fetch, CSS ou bibliothèques JS chargés sur une page Web. Celui-ci contient des informations détaillées sur le temps de chargement.
Tâche longue15 joursUn événement de type Tâche longue est généré à chaque fois qu’une tâche du navigateur bloque le thread principal pendant plus de 50 ms.
Erreur30 joursLa fonction RUM recueille toutes les erreurs frontend émises par le navigateur.
Action30 joursLes événements RUM de type Action enregistrent les interactions effectuées durant chaque parcours utilisateur et peuvent également être envoyés manuellement pour surveiller des actions utilisateur personnalisées.

Le schéma suivant présente la hiérarchie des événements RUM :

Attributs par défaut et attributs spécifiques à un événement

Certaines métriques et certains attributs sont spécifiques à un type d’événement. Par exemple, la métrique view.loading_time est associée aux événements RUM de type Vue, tandis que l’attribut resource.method est associé aux événements RUM de type Ressource. Des attributs par défaut sont également inclus pour l’ensemble des événements RUM. Il s’agit par exemple de l’URL de la page (view.url) et de certaines informations utilisateur, comme le type d’appareil (device.type) et le pays (geo.country).

Attributs par défaut

Chacun de ces types d’événements possède par défaut les attributs ci-dessous. Vous pouvez donc toujours les utiliser, peu importe le type d’événement RUM interrogé.

Core

Nom de l’attributTypeDescription
typechaîneLe type de l’événement (par exemple, view ou resource).
application.idchaîneL’ID d’application Datadog.

Attributs de vue

Les événements RUM de type Action, Erreur, Ressource et Tâche longue contiennent des informations sur la vue RUM active au moment de la collecte :

Nom de l’attributTypeDescription
view.idchaîneID généré aléatoirement pour chaque vue de page.
view.loading_typechaîneLe type de chargement de page : initial_load ou route_change. Pour en savoir plus, consultez la documentation sur la prise en charge des applications monopage.
view.referrerchaîneL’URL de la page Web précédente à partir de laquelle l’utilisateur a accédé à la page actuelle.
view.urlchaîneL’URL de la vue.
view.url_hashchaîneLa partie de l’URL correspondant au hachage.
view.url_hostchaîneLa partie de l’URL correspondant au host.
view.url_pathchaîneLa partie de l’URL correspondant au chemin.
view.url_path_groupchaîneLe groupe d’URL généré automatiquement pour les URL connexes (par exemple, /dashboard/? pour /dashboard/123 et /dashboard/456).
view.url_queryobjetLes parties de l’URL correspondant à la chaîne de requête, décomposées en attributs key/value de paramètres de requête.
view.url_schemeobjetLa partie de l’URL correspondant au schéma.

Appareil

Les attributs sur l’appareil suivants sont joints automatiquement à tous les événements recueillis par Datadog :

Nom de l’attributTypeDescription
device.typechaîneLe type d’appareil indiqué par l’appareil (en-tête HTTP User-Agent)
device.brandchaîneLa marque de l’appareil indiquée par l’appareil (en-tête HTTP User-Agent)
device.modelchaîneLe modèle de l’appareil indiqué par l’appareil (en-tête HTTP User-Agent)
device.namechaîneLe nom de l’appareil indiqué par l’appareil (en-tête HTTP User-Agent)

Système d’exploitation

Les attributs sur le système d’exploitation suivants sont joints automatiquement à tous les événements recueillis par Datadog :

Nom de l’attributTypeDescription
os.namechaîneLe nom du système d’exploitation indiqué par l’appareil (en-tête HTTP User-Agent)
os.versionchaîneLa version du système d’exploitation indiquée par l’appareil (en-tête HTTP User-Agent)
os.version_majorchaîneLa version majeure du système d’exploitation indiquée par l’appareil (en-tête HTTP User-Agent)

Géolocalisation

Les attributs suivants sont liés à la géolocalisation des adresses IP :

Nom completTypeDescription
geo.countrychaîneLe nom du pays.
geo.country_iso_codechaîneLe code ISO du pays (par exemple, US pour les États-Unis, FR pour la France).
geo.country_subdivisionchaîneLe nom du premier niveau de division du pays (par exemple, California aux États-Unis ou le département de la Sarthe en France).
geo.country_subdivision_iso_codechaîneLe code ISO du premier niveau de division du pays (par exemple, CA aux États-Unis ou le département SA en France).
geo.continent_codechaîneLe code ISO du continent (EU, AS, NA, AF, AN, SA ou OC).
geo.continentchaîneLe nom du continent (Europe, Australia, North America, Africa, Antartica, South America ou Oceania).
geo.citychaîneLe nom de la ville (par exemple, Paris, New York).

Attributs utilisateur

En plus des attributs par défaut, vous pouvez ajouter des données sur les utilisateurs aux événements RUM de tous types en identifiant les sessions utilisateur. Vous avez ainsi la possibilité de suivre le parcours d’un utilisateur spécifique, de voir les utilisateurs les plus affectés par des erreurs et de surveiller les performances de vos utilisateurs les plus importants.

Attributs spécifiques à un événement

Métriques des sessions

MétriqueTypeDescription
session.time_spentnombre (ns)Durée d’une session utilisateur.
session.view.countnombreNombre total de vues recueillies lors de la session.
session.error.countnombreNombre total d’erreurs recueillies lors de la session.
session.resource.countnombreNombre total de ressources recueillies lors de la session.
session.action.countnombreNombre total d’erreurs recueillies lors de la session.
session.long_task.countnombreNombre total de tâches longues recueillies lors de la session.

Attributs des sessions

Nom de l’attributTypeDescription
session.idchaîneUn ID généré aléatoirement pour chaque session.view.
session.typechaîneLe type de session : user ou synthetics. Les sessions provenant des tests Browser de la surveillance Synthetic sont exclus de la facturation.
session.referrerchaîneL’URL de la page Web précédente à partir de laquelle l’utilisateur a accédé à la page actuelle.
session.initial_view.idchaîneL’ID de la première vue RUM générée par l’utilisateur.
session.initial_view.url_hostchaîneLa partie de l’URL correspondant au host.
session.initial_view.url_pathchaîneLa partie de l’URL correspondant au chemin.
session.initial_view.url_path_groupchaîneLe groupe d’URL généré automatiquement pour les URL connexes (par exemple, /dashboard/? pour /dashboard/123 et /dashboard/456).
session.initial_view.url_queryobjetLes parties de l’URL correspondant à la chaîne de requête, décomposées en attributs key/value de paramètres de requête.
session.initial_view.url_schemeobjetLa partie de l’URL correspondant au schéma.
session.last_view.idchaîneL’ID de la dernière vue RUM générée par l’utilisateur.
session.last_view.url_hostchaîneLa partie de l’URL correspondant au host.
session.last_view.url_pathchaîneLa partie de l’URL correspondant au chemin.
session.last_view.url_path_groupchaîneLe groupe d’URL généré automatiquement pour les URL connexes (par exemple, /dashboard/? pour /dashboard/123 et /dashboard/456).
session.last_view.url_queryobjetLes parties de l’URL correspondant à la chaîne de requête, décomposées en attributs key/value de paramètres de requête.
session.last_view.url_schemeobjetLa partie de l’URL correspondant au schéma.

Applications monopages

Pour les applications monopage (SPA), le SDK RUM différencie les navigations initial_load et route_change avec l’attribut loading_type. Si un clic sur votre page Web dirige vers une nouvelle page sans actualisation complète de la page, le SDK RUM initie un nouvel événement d’affichage avec loading_type:route_change. La solution RUM détecte les changements de page à l’aide de l'API History.

Datadog fournit une métrique de performance unique, loading_time, qui calcule le temps nécessaire au chargement d’une page. Cette métrique fonctionne pour les navigations initial_load et route_change.

Comment le temps de chargement est-il calculé ?

Pour assurer la compatibilité avec les applications Web modernes, le temps de chargement est calculé à partir des requêtes réseau et des mutations DOM.

  • Chargement initial : Le temps de chargement est égal à la mesure la plus longue entre :

    • La différence entre navigationStart et loadEventEnd ;
    • La différence entre navigationStart et la première fois qu’aucune activité n’est détectée sur la page pendant plus de 100 ms (une activité étant définie comme une requête réseau en cours ou une mutation DOM).
  • Changement de route dans une application monopage : Le temps de chargement est égal à la différence entre le clic de l’utilisateur et la première fois qu’aucune activité n’est détectée sur la page pendant plus de 100 ms (une activité étant définie comme une requête réseau en cours ou une mutation DOM).

Les frameworks qui utilisent une navigation par hash (#) sont automatiquement surveillés avec le SDK RUM. Le SDK détecte les HashChangeEvent et génère une nouvelle vue. Les événements issus d’une ancre HTML n’affectent pas le contexte de la vue actuelle et sont ignorés.

Métriques de durée des vues

Pour les vues RUM, des métriques de performance sont recueillies à partir de l'API Paint Timing ainsi que de l'API Navigation Timing.

MétriqueTypeDecription
view.time_spentnombre (ns)Temps passé sur la vue actuelle.
view.largest_contentful_paintnombre (ns)Temps nécessaire lors du chargement de la page pour afficher le plus grand objet DOM dans la fenêtre d’affichage.
view.first_input_delaynombre (ns)Délai entre le moment où l’utilisateur interagit pour la première fois avec la page et le moment où le navigateur répond à cette interaction.
view.cumulative_layout_shiftnombreNombre de mouvements de page inattendus causés par le chargement dynamique de contenu (par exemple, des publicités tierces). Lorsqu’aucun décalage ne se produit, cette métrique a pour valeur 0.
view.loading_timenombre (ns)Temps écoulé avant que la page ne soit prête et que toutes les requêtes réseau ou mutations DOM soient terminées. En savoir plus sur la façon dont le temps de chargement est recueilli.
view.first_contentful_paintnombre (ns)Temps écoulé avant le premier affichage de texte, d’une image (images d’arrière-plan incluses), d’un canvas non blanc ou d’un SVG. Pour en savoir plus sur le rendu par le navigateur, consultez la définition du w3c.
view.dom_interactivenombre (ns)Le moment auquel le parser termine de travailler sur le document principal. Consulter la documentation MDN pour en savoir plus.
view.dom_content_loadednombre (ns)Cet événement se déclenche lorsque le document HTML initial a été entièrement chargé et parsé, même si les stylesheets, les images et les subframes qui ne bloquent pas le rendu n’ont pas fini de charger. Consulter la documentation MDN pour en savoir plus.
view.dom_completenombre (ns)La page et toutes les sous-ressources sont prêtes. Pour l’utilisateur, l’indicateur de chargement à proximité du curseur a disparu. Consulter la documentation MDN pour en savoir plus.
view.load_eventnombre (ns)Cet événement se déclenche lorsque la page est entièrement chargée. Il entraîne généralement le déclenchement de logique d’application supplémentaire. Consulter la documentation MDN pour en savoir plus.
view.error.countnombreNombre total d’erreurs recueillies pour cette vue.
view.long_task.countnombreNombre total de tâches longues recueillies pour cette vue.
view.resource.countnombreNombre total de ressources recueillies pour cette vue.
view.action.countnombreNombre total d’actions recueillies pour cette vue.

Métriques de durée des ressources

L'API Performance Resource Timing recueille des données réseau temporelles détaillées sur le chargement des ressources d’une application.

MétriqueTypeDescription
durationnombreDurée totale de chargement de la ressource.
resource.sizenombre (octets)Taille de la ressource.
resource.connect.durationnombre (ns)Durée d’établissement d’une connexion au serveur (connectEnd - connectStart).
resource.ssl.durationnombre (ns)Durée d’établissement de la liaison TLS. Si la dernière requête ne suit pas le protocole HTTPS, cette métrique n’apparaît pas (connectEnd - secureConnectionStart).
resource.dns.durationnombre (ns)Durée de résolution du nom DNS de la dernière requête (domainLookupEnd - domainLookupStart).
resource.redirect.durationnombre (ns)Temps passé sur les requêtes HTTP ultérieures (redirectEnd - redirectStart).
resource.first_byte.durationnombre (ns)Temps écoulé avant la réception du premier octet de la réponse (responseStart - RequestStart).
resource.download.durationnombre (ns)Durée de téléchargement de la réponse (responseEnd - responseStart).

Attributs des ressources

AttributTypeDescription
resource.typechaîneLe type de ressource à recueillir (par exemple, css, javascript, media, XHR ou image).
resource.methodchaîneLa méthode HTTP (par exemple, POST ou GET).
resource.status_codenombreLe code de statut de la réponse.
resource.urlchaîneL’URL de la ressource.
resource.url_hostchaîneLa partie de l’URL correspondant au host.
resource.url_pathchaîneLa partie de l’URL correspondant au chemin.
resource.url_queryobjetLes parties de l’URL correspondant à la chaîne de requête, décomposées en attributs key/value de paramètres de requête.
resource.url_schemechaîneLe nom du protocole de l’URL (HTTP ou HTTPS).
resource.provider.namechaîneLe nom du fournisseur de ressources. Valeur par défaut : unknown.
resource.provider.domainchaîneLe domaine du fournisseur de ressources.
resource.provider.typechaîneLe type de fournisseur de ressources (par exemple, first-party, cdn, ad ou analytics).

Métriques de durée des tâches longues

MétriqueTypeDescription
long_task.durationnombreDurée de la tâche longue.

Sources des erreurs

Les erreurs frontend sont réparties en 4 catégories différentes, en fonction de leur error.source :

  • network : erreurs XHR ou Fetch résultant de requêtes AJAX.
  • source : exceptions non gérées ou objets Promise rejetés non gérés (ces erreurs sont liées au code source).
  • console : appels d’API console.error().
  • custom : les erreurs envoyées avec l'API addError RUM ont par défaut la valeur custom.

Attributs d’erreur

AttributTypeDescription
error.sourcechaîneL’origine de l’erreur (par exemple, console ou network).
error.typechaîneLe type d’erreur (ou le code dans certains cas).
error.messagechaîneUn message d’une ligne lisible et concis décrivant l’événement.
error.stackchaîneLa stack trace ou toutes informations complémentaires relatives à l’erreur.

Erreurs network

Les erreurs réseau comprennent des informations sur la requête HTTP ayant échoué. Les facettes suivantes sont également recueillies :

AttributTypeDescription
error.resource.status_codenombreLe code de statut de la réponse.
error.resource.methodchaîneLa méthode HTTP (par exemple, POST ou GET).
error.resource.urlchaîneL’URL de la ressource.
error.resource.url_hostchaîneLa partie de l’URL correspondant au host.
error.resource.url_pathchaîneLa partie de l’URL correspondant au chemin.
error.resource.url_queryobjetLes parties de l’URL correspondant à la chaîne de requête, décomposées en attributs key/value de paramètres de requête.
error.resource.url_schemechaîneLe nom du protocole de l’URL (HTTP ou HTTPS).
error.resource.provider.namechaîneLe nom du fournisseur de ressources. Valeur par défaut : unknown.
error.resource.provider.domainchaîneLe domaine du fournisseur de ressources.
error.resource.provider.typechaîneLe type de fournisseur de ressources (par exemple, first-party, cdn, ad ou analytics).

Erreurs source

Les erreurs de type source comprennent des informations au niveau du code concernant l’erreur. Plus d’informations concernant les différents types d’erreurs sont disponibles dans la documentation MDN.

AttributTypeDescription
error.typechaîneLe type d’erreur (ou le code dans certains cas).

Collecte automatique des actions

Le SDK Real User Monitoring (RUM) détecte les interactions effectuées par un utilisateur durant son parcours. Pour activer cette fonctionnalité, définissez le paramètre de lancement trackInteractions sur true.

Remarque : le paramètre de lancement trackInteractions permet la collecte des clics utilisateur dans votre application. Des données sensibles et privées contenues dans vos pages sont susceptibles d’être recueillies pour identifier les éléments qui ont fait l’objet d’une interaction.

Une fois qu’une interaction est détectée, tous les nouveaux événements RUM sont associés à l’action en cours jusqu’à ce qu’elle soit considérée comme terminée. L’action dispose également des attributs de la vue parent : informations sur le navigateur, données de géolocalisation ou encore contexte global.

Comment la durée de chargement de l’action est-elle calculée ?

Une fois qu’une interaction est détectée, le SDK RUM surveille les requêtes réseau et les mutations DOM. L’action utilisateur est considérée comme terminée lorsqu’aucune activité n’est effectuée sur la page pendant plus de 100 ms (une activité étant définie comme des requêtes réseau en cours ou une mutation DOM).

Actions utilisateur personnalisées

Les actions utilisateur personnalisées sont des actions utilisateur déclarées et envoyées manuellement via l'API addAction. Elles permettent d’envoyer des informations relatives à un événement qui a lieu au cours d’un parcours utilisateur, telles qu’une durée personnalisée ou des informations sur le panier client.

Métriques de durée des actions

MétriqueTypeDescription
action.loading_timenombre (ns)La durée de chargement de l’action. Consultez la documentation relative aux actions utilisateur pour découvrir comment elle est calculée.
action.long_task.countnombreNombre total de tâches longues recueillies pour cette action.
action.resource.countnombreNombre total de ressources recueillies pour cette action.
action.error.countnombreNombre total d’erreurs recueillies pour cette action.

Attributs d’action

AttributTypeDescription
action.idchaîneUUID de l’action utilisateur.
action.typechaîneType d’action utilisateur. Pour les actions utilisateur personnalisées, ce paramètre est défini sur custom.
action.target.namechaîneÉlément avec lequel l’utilisateur a interagi. Uniquement pour les actions recueillies automatiquement.
action.namechaîneNom courant de l’action créée (par exemple, Clic sur #checkout). Pour les actions utilisateur personnalisées, il s’agit du nom d’action indiqué dans l’appel d’API.

Pour aller plus loin