Données de navigateur RUM recueillies
La gestion des incidents est désormais disponible pour tous ! La gestion des incidents est désormais disponible pour tous !

Données de navigateur RUM recueillies

Par défaut, toutes les données recueillies sont conservées avec une granularité complète pendant 15 jours. Le script Real User Monitoring de Datadog envoie 5 grands types d’événements à Datadog :

  • Vue : À chaque fois qu’un utilisateur accède à une page de l’application configurée, un événement de type Vue est créé. Tant que l’utilisateur reste sur la page, toutes les données recueillies sont associées à cette vue via l’attribut view.id.
  • Ressource : Un événement de type Ressource peut être généré pour les images, les XHR/Fetch, le CSS ou les bibliothèques JS. Celui-ci contient des informations sur la ressource, telles que son nom et le temps de chargement associé.
  • Tâche longue : Lorsqu’une tâche dans un navigateur bloque le thread principal pendant plus de 50 ms, celle-ci est considérée comme une tâche longue et génère un événement spécifique.
  • Erreur : À chaque fois qu’une erreur frontend est générée par le navigateur, celle-ci est enregistrée et transmise à Datadog en tant qu’événement de type Erreur.
  • Action utilisateur : Un événement de type Action utilisateur correspond à un événement personnalisé qui peut être généré pour une action utilisateur donnée.

Une vue de page correspond à la consultation d’une page de votre site Web par un utilisateur. À chaque vue de page, les erreurs, les ressources, les tâches longues et les actions utilisateur associées sont mises en relation avec la vue via un attribut view.id unique. Notez que les vues de page sont mises à jour lorsque de nouveaux événements sont recueillis.

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

Applications monopage

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.

Durées et métriques des vues

AttributTypeDecription
view.time_spentnombre (ns)Temps passé sur la vue actuelle.
view.loading_timenombre (ns)Temps avant que la page soit prête et que toutes les requêtes réseau ou mutations DOM soient terminées. Pour en savoir plus, consultez la documentation sur les données collectées.
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 w3.
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_event_endnombre (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.

Toutes les ressources de votre site Web sont recueillies par défaut : images, XHR, XMLHttpRequest, fichiers CSS, ressources JS et fichiers de polices.

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

Durées des ressources

AttributTypeDescription
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).

Une tâche est dite longue lorsqu’elle bloque le thread principal pendant 50 ms ou plus. Les tâches longues peuvent entraîner une latence élevée, un décalage des interactions, etc. Découvrez pourquoi certaines de vos tâches prennent du temps à s’exécuter dans l’analyseur de performances de votre navigateur.

Durées des tâches longues

AttributTypeDescription
long_task.durationnombreDurée de la tâche longue.

Les erreurs frontend sont recueillies par le service Real User Monitoring (RUM). Le message d’erreur et la stack trace sont inclus lorsque cela est possible.

Origines des erreurs

Les erreurs front-end sont réparties en 4 catégories différentes, en fonction de leur error.origin :

  • réseau : erreurs XHR ou Fetch résultant de requêtes AJAX. Les attributs spécifiques aux erreurs réseau sont disponibles dans la documentation.
  • 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 prennent la valeur par défaut 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 réseau

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 est également associée à ses attributs d’affichage parents : 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.

Durées et métriques des actions

AttributTypeDescription
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îneLe nom 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 de l’API.

Attributs par défaut

Ces cinq types d’événements sont associés à des attributs par défaut :

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

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 un lien vers la page demandée à été sélectionné.
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 le user-agent.
device.brandchaîneLa marque de l’appareil indiquée par le user-agent.
device.modelchaîneLe modèle de l’appareil indiqué par le user-agent.
device.namechaîneLe nom de l’appareil indiqué par le 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 le user-agent.
os.versionchaîneLa version du système d’exploitation indiquée par le user-agent.
os.version_majorchaîneLa version majeure du système d’exploitation indiquée par le user-agent.

Géolocalisation

Les attributs suivants sont liés à la géolocalisation d’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 supplémentaires

En plus des attributs par défaut, vous pouvez ajouter un contexte global spécifique à l’ensemble des événements recueillis afin d’analyser les données associées à un certain groupe d’utilisateurs. Vous pouvez par exemple regrouper les erreurs en fonction de l’adresse e-mail utilisateur, identifier les clients qui affichent les plus mauvaises performances, etc.

Pour aller plus loin