RUM ブラウザモニタリング

概要

Datadog Real User Monitoring (RUM) を使用すると、アプリケーションの個々のユーザーのリアルタイムパフォーマンスとユーザージャーニーを視覚化して分析できます。

セットアップ

Datadog RUM ブラウザモニタリングを設定するには

  1. Datadog で、リアルユーザーモニタリングのページに移動し、New Application ボタンをクリックします。
  2. アプリケーションの名前を入力し、Generate Client Token をクリックします。これにより、アプリケーションの clientTokenapplicationId が生成されます。
  3. npm またはホストされているバージョンの 1 つ (CDN async または CDN sync) を介して Datadog RUM SDK をセットアップします。
  4. 変更をアプリケーションにデプロイします。実行が開始されると、ユーザーブラウザから Datadog によってイベントが収集されます。
  5. 収集されたデータは、Datadog のダッシュボードで視覚的に確認できます。

: Datadog がデータの受信を開始するまで、アプリケーションはアプリケーションリストページに「保留中」として表示されます。

対応ブラウザ: RUM SDK は、IE11 を含む最新のデスクトップブラウザとモバイルブラウザをすべてサポートします。下記のブラウザサポート表をご参照ください。

適切なインストール方法の選択

npm (node package manager)
最新の Web アプリケーションには、この方法が推奨されます。RUM SDK は、残りのフロントエンド JavaScript コードとともにパッケージ化されます。ページの読み込みパフォーマンスに影響は出ませんが、SDK が初期化される前にトリガーされたエラー、リソース、ユーザーアクションは取りこぼされる場合があります。注: 使用する場合、ログ SDK と一致するバージョンの使用が推奨されます。
CDN 非同期
この方法は、パフォーマンス目標のある Web アプリケーションに推奨されます。RUM SDK は、CDN から非同期的に読み込まれます。この方法を使用すると、SDK のダウンロードによるページの読み込みパフォーマンスへの影響を回避できます。ただし、SDK が初期化される前にトリガーされたエラー、リソース、ユーザーアクションは取りこぼされる場合があります。
CDN 同期
この方法は、すべての RUM イベントを収集する場合に推奨されます。RUM SDK は、CDN から同期的に読み込まれます。この方法を使用すると、最初に SDK を読み込み、すべてのエラー、リソース、ユーザーアクションを収集することができます。この方法は、ページの読み込みパフォーマンスに影響を与える可能性があります。

npm

@datadog/browser-rumpackage.json ファイルに追加したら、次のコマンドを実行して初期化します。

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

datadogRum.init({
  applicationId: '<DATADOG_APPLICATION_ID>',
  clientToken: '<DATADOG_CLIENT_TOKEN>',
  site: '<DATADOG_SITE>',
  //  service: 'my-web-application',
  //  env: 'production',
  //  version: '1.0.0',
  sampleRate: 100,
  replaySampleRate: 100, // 含まれない場合 - デフォルト 100
  trackInteractions: true,
})

: trackInteractions パラメーターは、アプリケーション内のユーザークリックの自動収集を有効にします。ページに含まれている機密データと非公開データは、やり取りされた要素を特定するために含まれる場合があります。

CDN 非同期

生成されたコードスニペットを、アプリケーションで監視するすべての HTML ページの head タグに追加します。

<script>
 (function(h,o,u,n,d) {
   h=h[d]=h[d]||{q:[],onReady:function(c){h.q.push(c)}}
   d=o.createElement(u);d.async=1;d.src=n
   n=o.getElementsByTagName(u)[0];n.parentNode.insertBefore(d,n)
})(window,document,'script','https://www.datadoghq-browser-agent.com/datadog-rum-v4.js','DD_RUM')
  DD_RUM.onReady(function() {
    DD_RUM.init({
      clientToken: '<CLIENT_TOKEN>',
      applicationId: '<APPLICATION_ID>',
      site: '<DATADOG_SITE>',
      //  service: 'my-web-application',
      //  env: 'production',
      //  version: '1.0.0',
      sampleRate: 100,
      replaySampleRate: 100, // 含まれない場合 - デフォルト 100
      trackInteractions: true,
    })
  })
</script>

:

  • trackInteractions パラメーターは、アプリケーション内のユーザークリックの自動収集を有効にします。ページに含まれている機密データと非公開データは、やり取りされた要素を特定するために含まれる場合があります。
  • 始めの RUM API 呼び出しは DD_RUM.onReady() コールバックにラップされている必要があります。こうすることで、SDK が適切に読み込まれたときにのみコードが実行されるようにできます。

CDN 同期

生成されたコードスニペットを、アプリケーションで監視するすべての HTML ページの head タグ(他のスクリプトタグの前にあるタグ)に追加します。同期型のスクリプトタグをより高い位置に含めると、Datadog RUM ですべてのパフォーマンスデータとエラーを収集できます。

<script src="https://www.datadoghq-browser-agent.com/datadog-rum-v4.js" type="text/javascript"></script>
<script>
  window.DD_RUM &&
    window.DD_RUM.init({
      clientToken: '<CLIENT_TOKEN>',
      applicationId: '<APPLICATION_ID>',
      site: '<DATADOG_SITE>',
      //  service: 'my-web-application',
      //  env: 'production',
      //  version: '1.0.0',
      sampleRate: 100,
      replaySampleRate: 100, // 含まれない場合 - デフォルト 100
      trackInteractions: true,
    })
</script>

:

  • trackInteractions パラメーターは、アプリケーション内のユーザークリックの自動収集を有効にします。ページに含まれている機密データと非公開データは、やり取りされた要素を特定するために含まれる場合があります。
  • window.DD_RUM チェックは、RUM SDK で読み込みエラーが起きた際に問題を防ぐために使用されます。

TypeScript

タイプは TypeScript >= 3.8.2 と互換性があります。以前のバージョンの場合は、JS ソースをインポートし、グローバル変数を使用してコンパイルの問題を回避します。

import '@datadog/browser-rum/bundle/datadog-rum'

window.DD_RUM.init({
  applicationId: 'XXX',
  clientToken: 'XXX',
  site: 'datadoghq.com',
  sampleRate: 100,
})

構成

初期化パラメーター

次のパラメーターを使用できます。

applicationId
必須
タイプ: 文字列
RUM アプリケーションの ID。
clientToken
必須
タイプ: 文字列
Datadog クライアントトークン
site
必須
タイプ: 文字列
デフォルト: datadoghq.com
組織の Datadog のサイト、Agent サイト構成と同じ値です。
service
オプション
タイプ: 文字列
アプリケーションのサービス名。タグの構文要件に従っている必要があります。
env
オプション
タイプ: 文字列
アプリケーションの環境 (例: prod、pre-prod、staging など)。タグの構文要件に従っている必要があります。
version
オプション
タイプ: 文字列
アプリケーションのバージョン。例: 1.2.3、6c44da20、2020.02.13 など。タグの構文要件に従っている必要があります。
trackViewsManually
オプション
タイプ: Boolean
デフォルト: false
RUM ビューの作成を制御します。デフォルトの RUM ビュー名をオーバーライドするを参照してください。
trackInteractions
オプション
タイプ: Boolean
デフォルト: false
ユーザーアクションの自動収集を有効にします。
defaultPrivacyLevel
オプション
タイプ: 文字列
デフォルト: mask-user-input
セッションリプレイプライバシーオプションを参照してください。
actionNameAttribute
オプション
タイプ: 文字列
アクションに名前を付けるために使用する独自の属性を指定できます。
sampleRate
オプション
タイプ: 数値
デフォルト: 100
追跡するセッションの割合。100 で全て、0 でなし。追跡されたセッションのみが RUM イベントを送信します。sampleRate の詳細については、サンプリング構成を参照してください。
replaySampleRate
オプション
タイプ: 数値
デフォルト: 100
セッションリプレイ料金の機能を持つ追跡されたセッションの割合。100 で全て、0 でなし。replaySampleRate の詳細については、サンプリング構成 を参照してください。
silentMultipleInit
オプション
タイプ: Boolean
デフォルト: false
Datadog の RUM がページ上ですでに初期化されている場合、初期化が暗黙に失敗します。
proxyUrl
オプション
タイプ: 文字列
オプションのプロキシ URL (例: https://www.proxy.com/path)。詳細については、完全なプロキシ設定ガイドを参照してください。
allowedTracingOrigins
オプション
タイプ: List
トレースヘッダを注入するために使用されるリクエスト起源のリスト。RUM とトレースの接続を参照してください。
tracingSampleRate
オプション
タイプ: 数値
デフォルト: 100
トレースするリクエストの割合: すべてなら 100、なしなら 0RUM とトレースを接続するを参照してください。
telemetrySampleRate
オプション
タイプ: 数値
デフォルト: 20
SDK の実行に関するテレメトリーデータ (エラー、デバッグログ) は、潜在的な問題を検出して解決するために、Datadog に送信されます。このオプションを 0 に設定すると、テレメトリー収集がオプトアウトされます。

logs SDK も使用する場合、一致するコンフィギュレーションが必要なオプション:

trackSessionAcrossSubdomains
オプション
タイプ: Boolean
デフォルト: false
同じサイトのサブドメイン間でセッションを保持します。
useSecureSessionCookie
オプション
タイプ: Boolean
デフォルト: false
安全なセッション Cookie を使用します。これにより、安全でない (HTTPS 以外の) 接続で送信される RUM イベントが無効になります。
useCrossSiteSessionCookie
オプション
タイプ: Boolean
デフォルト:false
安全なクロスサイトセッション Cookie を使用します。これにより、サイトが別のサイトから読み込まれたときに、RUM SDK を実行できます (iframe)。useSecureSessionCookie を意味します。

追跡を開始するには、Init を呼び出す必要があります。

init(configuration: {
    applicationId: string,
    clientToken: string,
    site?: string,
    sampleRate?: number,
    silentMultipleInit?: boolean,
    trackInteractions?: boolean,
    service?: string,
    env?: string,
    version?: string,
    allowedTracingOrigins?: Array<String|Regexp>,
    trackSessionAcrossSubdomains?: boolean,
    useSecureSessionCookie?: boolean,
    useCrossSiteSessionCookie?: boolean,
})

ブラウザとセッションリプレイのサンプリング構成

: この機能を使用するには、SDK v3.6.0+ が必要です。

新しいセッションが作成されると、次のいずれかとして追跡できます。

  • ブラウザ RUM: セッションビューアクション、および_エラー_のみが収集されます。startSessionReplayRecording() への呼び出しは無視されます。
  • セッションリプレイ RUM: ブラウザ RUM のすべてと、リソースロングタスク、_リプレイ_の記録が収集されます。_リプレイ_の記録を収集するには、startSessionReplayRecording() の呼び出しが必要です。

セッションの追跡方法を制御するために、2 つの初期化パラメーターが利用可能です。

  • sampleRate は、追跡されるセッション全体の割合を制御します。デフォルトは 100% で、すべてのセッションが追跡されます。

  • replaySampleRate は、全体のサンプルレートの後に適用され、セッションリプレイ RUM として追跡されるセッションの割合を制御します。デフォルトは 100% で、すべてのセッションがセッションリプレイ RUM として追跡されます。

例えば、セッションの 100% をブラウザ RUM として追跡する場合

datadogRum.init({
    ....
    sampleRate: 100,
    replaySampleRate: 0
});

例えば、セッションの 100% をセッションリプレイ RUM として追跡する場合

datadogRum.init({
    ....
    sampleRate: 100,
    replaySampleRate: 100
});

例えば、全体のセッションの 50% のみを追跡し、半分はブラウザ RUM として、残りの半分はセッションリプレイ RUM としてトラッキングする場合、sampleRatereplaySampleRate を 50 に設定します。

datadogRum.init({
    ....
    sampleRate: 50,
    replaySampleRate: 50
});

その他の参考資料

お役に立つドキュメント、リンクや記事: