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 :
view.id
.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.
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
.
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 :
navigationStart
et loadEventEnd
;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.
Attribut | Type | Decription |
---|---|---|
view.time_spent | nombre (ns) | Temps passé sur la vue actuelle. |
view.loading_time | nombre (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_paint | nombre (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_interactive | nombre (ns) | Le moment auquel le parser termine de travailler sur le document principal. Consulter la documentation MDN pour en savoir plus. |
view.dom_content_loaded | nombre (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_complete | nombre (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_end | nombre (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.count | nombre | Nombre total d’erreurs recueillies pour cette vue. |
view.long_task.count | nombre | Nombre total de tâches longues recueillies pour cette vue. |
view.resource.count | nombre | Nombre total de ressources recueillies pour cette vue. |
view.action.count | nombre | Nombre 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.
Attribut | Type | Description |
---|---|---|
duration | nombre | Durée totale de chargement de la ressource. |
resource.size | nombre (octets) | Taille de la ressource. |
resource.connect.duration | nombre (ns) | Durée d’établissement d’une connexion au serveur (connectEnd - connectStart). |
resource.ssl.duration | nombre (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.duration | nombre (ns) | Durée de résolution du nom DNS de la dernière requête (domainLookupEnd - domainLookupStart). |
resource.redirect.duration | nombre (ns) | Temps passé sur les requêtes HTTP ultérieures (redirectEnd - redirectStart). |
resource.first_byte.duration | nombre (ns) | Temps écoulé avant la réception du premier octet de la réponse (responseStart - RequestStart). |
resource.download.duration | nombre (ns) | Durée de téléchargement de la réponse (responseEnd - responseStart). |
Attribut | Type | Description |
---|---|---|
resource.type | chaîne | Le type de ressource à recueillir (par exemple, css , javascript , media , XHR ou image ). |
resource.method | chaîne | La méthode HTTP (par exemple, POST ou GET ). |
resource.status_code | nombre | Le code de statut de la réponse. |
resource.url | chaîne | L’URL de la ressource. |
resource.url_host | chaîne | La partie de l’URL correspondant au host. |
resource.url_path | chaîne | La partie de l’URL correspondant au chemin. |
resource.url_query | objet | Les 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_scheme | chaîne | Le nom du protocole de l’URL (HTTP ou HTTPS). |
resource.provider.name | chaîne | Le nom du fournisseur de ressources. Valeur par défaut : unknown . |
resource.provider.domain | chaîne | Le domaine du fournisseur de ressources. |
resource.provider.type | chaîne | Le 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.
Attribut | Type | Description |
---|---|---|
long_task.duration | nombre | Duré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.
Les erreurs front-end sont réparties en 4 catégories différentes, en fonction de leur error.origin
:
console.error()
.addError
RUM prennent la valeur par défaut custom
.Attribut | Type | Description |
---|---|---|
error.source | chaîne | L’origine de l’erreur (par exemple, console ou network ). |
error.type | chaîne | Le type d’erreur (ou le code dans certains cas). |
error.message | chaîne | Un message d’une ligne lisible et concis décrivant l’événement. |
error.stack | chaîne | La stack trace ou toutes informations complémentaires relatives à l’erreur. |
Les erreurs réseau comprennent des informations sur la requête HTTP ayant échoué. Les facettes suivantes sont également recueillies :
Attribut | Type | Description |
---|---|---|
error.resource.status_code | nombre | Le code de statut de la réponse. |
error.resource.method | chaîne | La méthode HTTP (par exemple, POST ou GET ). |
error.resource.url | chaîne | L’URL de la ressource. |
error.resource.url_host | chaîne | La partie de l’URL correspondant au host. |
error.resource.url_path | chaîne | La partie de l’URL correspondant au chemin. |
error.resource.url_query | objet | Les 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_scheme | chaîne | Le nom du protocole de l’URL (HTTP ou HTTPS). |
error.resource.provider.name | chaîne | Le nom du fournisseur de ressources. Valeur par défaut : unknown . |
error.resource.provider.domain | chaîne | Le domaine du fournisseur de ressources. |
error.resource.provider.type | chaîne | Le type de fournisseur de ressources (par exemple, first-party , cdn , ad ou analytics ). |
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.
Attribut | Type | Description |
---|---|---|
error.type | chaîne | Le type d’erreur (ou le code dans certains cas). |
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.
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).
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.
Attribut | Type | Description |
---|---|---|
action.loading_time | nombre (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.count | nombre | Nombre total de tâches longues recueillies pour cette action. |
action.resource.count | nombre | Nombre total de ressources recueillies pour cette action. |
action.error.count | nombre | Nombre total d’erreurs recueillies pour cette action. |
Attribut | Type | Description |
---|---|---|
action.id | chaîne | UUID de l’action utilisateur. |
action.type | chaîne | Type d’action utilisateur. Pour les actions utilisateur personnalisées, ce paramètre est défini sur custom . |
action.target.name | chaîne | Élément avec lequel l’utilisateur a interagi. Uniquement pour les actions recueillies automatiquement. |
action.name | chaîne | Le 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. |
Ces cinq types d’événements sont associés à des attributs par défaut :
Nom de l’attribut | Type | Description |
---|---|---|
type | chaîne | Le type de l’événement (par exemple, view ou resource ). |
application.id | chaîne | L’ID d’application Datadog. |
Nom de l’attribut | Type | Description |
---|---|---|
view.id | chaîne | ID généré aléatoirement pour chaque vue de page. |
view.loading_type | chaîne | Le 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.referrer | chaîne | L’URL de la page web précédente, à partir de laquelle un lien vers la page demandée à été sélectionné. |
view.url | chaîne | L’URL de la vue. |
view.url_hash | chaîne | La partie de l’URL correspondant au hachage. |
view.url_host | chaîne | La partie de l’URL correspondant au host. |
view.url_path | chaîne | La partie de l’URL correspondant au chemin. |
view.url_path_group | chaîne | Le groupe d’URL généré automatiquement pour les URL connexes (par exemple, /dashboard/? pour /dashboard/123 et /dashboard/456 ). |
view.url_query | objet | Les 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_scheme | objet | La partie de l’URL correspondant au schéma. |
Les attributs sur l’appareil suivants sont joints automatiquement à tous les événements recueillis par Datadog :
Nom de l’attribut | Type | Description |
---|---|---|
device.type | chaîne | Le type d’appareil indiqué par le user-agent. |
device.brand | chaîne | La marque de l’appareil indiquée par le user-agent. |
device.model | chaîne | Le modèle de l’appareil indiqué par le user-agent. |
device.name | chaîne | Le nom de l’appareil indiqué par le user-agent. |
Les attributs sur le système d’exploitation suivants sont joints automatiquement à tous les événements recueillis par Datadog :
Nom de l’attribut | Type | Description |
---|---|---|
os.name | chaîne | Le nom du système d’exploitation indiqué par le user-agent. |
os.version | chaîne | La version du système d’exploitation indiquée par le user-agent. |
os.version_major | chaîne | La version majeure du système d’exploitation indiquée par le user-agent. |
Les attributs suivants sont liés à la géolocalisation d’adresses IP :
Nom complet | Type | Description |
---|---|---|
geo.country | chaîne | Le nom du pays. |
geo.country_iso_code | chaîne | Le code ISO du pays (par exemple, US pour les États-Unis, FR pour la France). |
geo.country_subdivision | chaîne | Le 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_code | chaîne | Le code ISO du premier niveau de division du pays (par exemple, CA aux États-Unis ou le département SA en France). |
geo.continent_code | chaîne | Le code ISO du continent (EU , AS , NA , AF , AN , SA ou OC ). |
geo.continent | chaîne | Le nom du continent (Europe , Australia , North America , Africa , Antartica , South America ou Oceania ). |
geo.city | chaîne | Le nom de la ville (par exemple, Paris , New York ). |
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.
Documentation, liens et articles supplémentaires utiles: