RUM とトレースの接続

RUM とトレースの接続

APM と Real User Monitoring のインテグレーションにより、Web およびモバイルアプリケーションからのリクエストを対応するバックエンドトレースにリンクできます。この組み合わせにより、1 つのレンズを通してフロントエンドとバックエンドの完全なデータを確認できます。

RUM のフロントエンドデータ、トレース ID 挿入のバックエンド、インフラストラクチャー、ログ情報を使用して、スタック内の問題をすばやく特定し、ユーザーに起こっていることを完全に理解します。

使用方法

前提条件

RUM のセットアップ

  1. Browser Real User Monitoring を設定します。

  2. RUM SDK を初期化します。ブラウザアプリケーションによって呼び出される内部 (ファーストパーティ) オリジンのリストを使用して、allowedTracingOrigins 初期化パラメーターを設定します。

import { datadogRum } from '@datadog/browser-rum'

datadogRum.init({
    applicationId: '<DATADOG_APPLICATION_ID>',
    clientToken: '<DATADOG_CLIENT_TOKEN>',
    ...otherConfig,
    allowedTracingOrigins: ["https://api.example.com", /https:\/\/.*\.my-api-domain\.com/]
})

: allowedTracingOrigins は、<scheme> "://" <hostname> [ ":" <port> ] と定義された、ブラウザアプリケーションにより呼び出された呼び出し元と一致する Javascript 文字列および正規表現を受け入れます。

ブラウザ SDK の初期化後に生成されたリクエストには、エンドツーエンドのトレーシングを利用できます。初めの HTML 文書のエンドツーエンドトレースおよび始めのブラウザリクエストはサポートされません。
  1. Android Real User Monitoring を設定します。

  2. Android アプリケーションによって呼び出される内部 (ファーストパーティ) オリジンのリストを使用して、OkHttpClient インターセプターを構成します。

val tracedHosts =  listOf("example.com", "example.eu")

val okHttpClient = OkHttpClient.Builder()
    .addInterceptor(DatadogInterceptor(tracedHosts))
    .addNetworkInterceptor(TracingInterceptor(tracedHosts))
    .eventListenerFactory(DatadogEventListener.Factory())
    .build()

: デフォルトでは、リストされたホストのすべてのサブドメインがトレースされます。たとえば、example.com を追加すると、api.example.comfoo.example.com のトレースも有効になります。

  1. iOS Real User Monitoring を設定します。

  2. iOS アプリケーションによって呼び出される内部 (ファーストパーティ) オリジンのリストを使用して、firstPartyHosts 初期化パラメーターを設定します。

Datadog.initialize(
appContext: .init(),
configuration: Datadog.Configuration
    .builderUsing(rumApplicationID: "<rum_app_id>", clientToken: "<client_token>", environment: "<env_name>")
    .set(firstPartyHosts: ["example.com", "api.yourdomain.com"])
    .build()
)
  1. セットアップドキュメントに記載されているように URLSession を初期化します。
let session =  URLSession(
    configuration: ...,
    delegate: DDURLSessionDelegate(),
    delegateQueue: ...
)

: デフォルトでは、リストされたホストのすべてのサブドメインがトレースされます。たとえば、example.com を追加すると、api.example.comfoo.example.com のトレースも有効になります。

サポートされるライブラリ

以下の Datadog トレーシングライブラリがサポートされています。

ライブラリ最小バージョン
Python0.22.0
Go1.10.0
Java0.24.1
Ruby0.20.0
JavaScript0.10.0
PHP0.33.0
.NET1.18.2

RUM リソースはどのようにトレースにリンクされていますか?

Datadog は、分散型トレーシングプロトコルを使用し、以下の HTTP ヘッダーを設定します。

x-datadog-trace-id Real User Monitoring SDK から生成されます。Datadog がトレースを RUM リソースにリンクできるようにします。

x-datadog-parent-id Real User Monitoring SDK から生成されます。Datadog がトレースから最初のスパンを生成できるようにします。

x-datadog-origin: rum Real User Monitoring から生成されたトレースが、APM インデックススパン数に影響を与えないようにします。

x-datadog-sampling-priority: 1
Agent がトレースを維持するようにします。

x-datadog-sampled: 1 Real User Monitoring SDK から生成されます。このリクエストがサンプリング用に選択されていることを示します。

: 上記 HTTP ヘッダーは CORS セーフリストに登録されていないため、ご使用のサーバーで Access-Control-Allow-Headers を構成する必要があります。サーバーは、プレフライトリクエストも許可する必要があります (OPTIONS リクエスト)。

APM クオータへの影響

x-datadog-origin: rum ヘッダーは、トレースが Real User Monitoring から生成されることを APM バックエンドに指定します。したがって、生成されたトレースは、インデックス化スパン数に影響を与えません。

トレースの保持期間

これらのトレースは、従来の APM トレースと同様に保持されます。