L’intégration de l’APM avec la fonctionnalité Real User Monitoring vous permet d’associer les requêtes de vos applications Web et mobiles aux traces backend correspondantes. Cette association vous permet de visualiser toutes vos données front end et backend sous un seul angle.
Grâce aux données frontend de la fonctionnalité RUM et aux données relatives au backend, à l’infrastructure et aux logs provenant de l’injection d’ID de trace, vous pouvez identifier rapidement la cause de vos problèmes, où qu’ils se trouvent dans votre pile. Ainsi, vous saisissez parfaitement l’expérience que vous offrez à vos utilisateurs.
Configurez la fonctionnalité Real User Monitoring pour Browser.
Initialisez le SDK RUM. Configurez le paramètre d’initialisation allowedTracingOrigins
à l’aide de la liste des origines internes (first party) appelées par votre application Browser.
import { datadogRum } from '@datadog/browser-rum'
datadogRum.init({
applicationId: '<ID_APPLICATION_DATADOG>',
clientToken: '<TOKEN_CLIENT_DATADOG>',
...otherConfig,
allowedTracingOrigins: ["https://api.example.com", /https:\/\/.*\.my-api-domain\.com/]
})
Remarque : allowedTracingOrigins
accepte les chaînes Javascript et les expressions régulières.
Configurez la fonctionnalité Real User Monitoring pour Android.
Configurez l’intercepteur OkHttpClient
à l’aide de la liste des origines internes (first party) appelées par votre application Android.
val tracedHosts = listOf("example.com", "example.eu")
val okHttpClient = OkHttpClient.Builder()
.addInterceptor(DatadogInterceptor(tracedHosts))
.addNetworkInterceptor(TracingInterceptor(tracedHosts))
.eventListenerFactory(DatadogEventListener.Factory())
.build()
Remarque : Par défaut, tous les sous-domaines des hosts répertoriés sont tracés. Par exemple, si vous ajoutez example.com
, vous activez également le tracing pour api.example.com
et foo.example.com
.
Configurez la fonctionnalité Real User Monitoring pour iOS.
Configurez le paramètre d’initialisation firstPartyHosts
à l’aide de la liste des origines internes (first party) appelées par votre application iOS..
Datadog.initialize(
appContext: .init(),
configuration: Datadog.Configuration
.builderUsing(rumApplicationID: "<id_app_rum>", clientToken: "<token_client>", environment: "<nom_env>")
.set(firstPartyHosts: ["example.com", "api.yourdomain.com"])
.build()
)
let session = URLSession(
configuration: ...,
delegate: DDURLSessionDelegate(),
delegateQueue: ...
)
Remarque : par défaut, tous les sous-domaines des hosts répertoriés sont tracés. Par exemple, si vous ajoutez example.com
, vous activez également le tracing de api.example.com
et foo.example.com
.
Les bibliothèques de tracing Datadog suivantes sont prises en charge :
Bibliothèque | Version minimale |
---|---|
Python | 0.22.0 |
Go | 1.10.0 |
Java | 0.24.1 |
Ruby | 0.20.0 |
JavaScript | 0.10.0 |
PHP | 0.33.0 |
.NET | 1.18.2 |
Datadog utilise un protocole de tracing distribué et configure les en-têtes HTTP suivants :
EN-TÊTE | DESCRIPTION |
---|---|
x-datadog-trace-id | Généré à partir du SDK RUM. Permet à Datadog d’associer la trace à la ressource RUM. |
x-datadog-parent-id | Généré à partir du SDK RUM. Permet à Datadog de générer la première span depuis la trace. |
x-datadog-origin: rum | Permet de s’assurer que les traces générées à partir de la fonctionnalité RUM ne rentrent pas en compte dans le calcul de vos spans indexées de l’APM. |
x-datadog-sampling-priority: 1 | Permet de s’assurer que l’Agent conserve la trace. |
x-datadog-sampled: 1 | Généré à partir du SDK RUM. Indique que cette requête est sélectionnée pour l’échantillonnage. |
L’en-tête x-datadog-origin: rum
indique au backend APM que les traces sont générées depuis la fonctionnalité RUM. Les traces générées n’ont par conséquent aucun impact sur le calcul de vos spans indexées.
Ces traces sont conservées aussi longtemps comme vos traces APM standard.
Documentation, liens et articles supplémentaires utiles: