Surveillance des performances de ressources

Surveillance des performances de ressources

LE SDK RUM recueille les ressources de chaque vue RUM (chargement de page) : XMLHttpRequest (XHR), requêtes Fetch, mais également les images, les fichiers CSS, les ressources JavaScript et les fichiers de police. Un événement de ressource RUM est généré pour chaque ressource, avec des métadonnées et des durées précises.

Les ressources RUM héritent de tout le contexte lié à la vue RUM active au moment de la collecte.

Associer des ressources RUM à des traces de l’APM

Pour bénéficier d’une réelle visibilité de bout en bout sur vos requêtes au fur et à mesure qu’elles traversent les différentes couches de votre pile, associez vos données RUM aux traces de backend correspondantes. Vous pourrez ainsi effectuer les actions suivantes :

  • Localiser les problèmes au niveau du backend ayant généré une erreur pour les utilisateurs
  • Mesurer les répercussions d’un problème de votre pile sur les utilisateurs
  • Afficher des requêtes de bout en bout complètes dans les flamegraphs afin de naviguer facilement entre les fonctionnalités RUM et APM en conservant un contexte précis.

Consultez la section Associer RUM à vos traces pour en savoir plus sur la configuration de cette fonctionnalité.

Durée et métriques des ressources

Les méthodes natives Fetch et XHR pour navigateur, ainsi que l'API Performance Resource Timing, recueillent des données réseau temporelles détaillées.

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

Remarque : si vous ne parvenez pas à recueillir les durées détaillées de certaines ressources, consultez la rubrique Durées des ressources et CORS.

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

Identifier les ressources tierces

La solution RUM récupère le nom et la catégorie du fournisseur de données à partir de l’élément « host » de l’URL de la ressource. Si cet élément correspond au host actuel de l’URL de la page, la catégorie est définie sur first party. Si ce n’est pas le cas, la catégorie prend par exemple pour valeur cdn, analytics ou social.

Durées des ressources et CORS

L'API Resource Timing sert à recueillir les durées des ressources RUM. Elle est limitée par les mesures de sécurité appliquées par les navigateurs contre l’usage de multiples origines dans des scripts. Par exemple, si votre application Web est hébergée sur www.example.com et qu’elle charge vos images via images.example.com, vous obtiendrez uniquement les durées des ressources chargées qui sont hébergées sur www.example.com par défaut.

Pour y remédier, activez la collecte de données supplémentaires pour les ressources concernées par le CORS (Cross-Origin Resource Sharing) en ajoutant l’en-tête de réponse HTTP Timing-Allow-Origin à vos ressources ayant de multiples origines. Par exemple, pour autoriser les durées des ressources à accéder à n’importe quelle origine, utilisez Timing-Allow-Origin: *. Consultez la documentation Web de MDN (en anglais) pour en savoir plus sur le mécanisme CORS.

Pour aller plus loin