概要

このガイドに従って、Browser RUM および Browser Logs SDK のメジャーバージョン間で移行してください。SDK の特徴と機能の詳細については、SDK ドキュメントを参照してください。

v4 から v5 への移行

v5 では、以下の変更点などが導入されています。

  • Session Replay の新しい構成とプライバシーのデフォルト設定
  • フラストレーションシグナルの自動収集
  • パフォーマンスメトリクスの更新
  • SDK パラメーターと API の更新

SDK をアップグレードする際には、以下の変更点にご注意ください。変更点は、影響の分野ごとにグループ化されています。

一般

SDK 初期化パラメーター

取るべきアクション: 非推奨パラメーターを v5 の新しいパラメーターに置き換えてください。旧パラメーター名は v5 では使用できません。

非推奨パラメーター名 (v4 以前)新しいパラメーター名 (v5)
proxyUrlプロキシ
sampleRatesessionSampleRate
allowedTracingOriginsallowedTracingUrls
tracingSampleRatetraceSampleRate
trackInteractionstrackUserInteractions
premiumSampleRatesessionReplaySampleRate
replaySampleRatesessionReplaySampleRate

パブリック API

取るべきアクション: 非推奨 API を新しい API に置き換えてください。旧 API は v5 では使用できません。

非推奨パラメーター名 (v4 以前)新しいパラメーター名 (v5)
DD_RUM.removeUserDD_RUM.clearUser
DD_RUM.addRumGlobalContextDD_RUM.setGlobalContextProperty
DD_RUM.removeRumGlobalContextDD_RUM.removeGlobalContextProperty
DD_RUM.getRumGlobalContextDD_RUM.getGlobalContext
DD_RUM.setRumGlobalContextDD_RUM.setGlobalContext
DD_LOGS.addLoggerGlobalContextDD_LOGS.setGlobalContextProperty
DD_LOGS.removeLoggerGlobalContextDD_LOGS.removeGlobalContextProperty
DD_LOGS.getLoggerGlobalContextDD_LOGS.getGlobalContext
DD_LOGS.setLoggerGlobalContextDD_LOGS.setGlobalContext
logger.addContextlogger.setContextProperty
logger.removeContextlogger.removeContextProperty

インテークドメイン

v5 では、以前のバージョンとは異なるインテークドメインにデータが送信されます。

取るべきアクション: Content Security Policy (CSP)connect-src エントリを新しいドメインに更新してください。

Datadog サイトドメイン
US1connect-src https://browser-intake-datadoghq.com
US3connect-src https://browser-intake-us3-datadoghq.com
US5connect-src https://browser-intake-us5-datadoghq.com
EU1connect-src https://browser-intake-datadoghq.eu
US1-FEDconnect-src https://browser-intake-ddog-gov.com
AP1connect-src https://browser-intake-ap1-datadoghq.com

信頼されているイベント

不正または不正確なデータの収集を避けるために、v5 ではユーザーのアクションによって生成されたイベントのみをリッスンし、スクリプトによって生成されたイベントは無視されます。詳細については、信頼されているイベントを参照してください。

取るべきアクション: プログラムによるイベントも SDK に考慮させたい場合は、以下のように __ddIsTrusted 属性を追加してください。

const click = new Event('click')
click.__ddIsTrusted = true
document.dispatchEvent(click)

取るべきアクション: 例えば、自動化された UI テスト環境などでプログラムによるイベントに大きく依存している場合は、allowUntrustedEvents: true を設定して、すべての信頼されていないイベントを許可することができます。

beforeSend の戻り値の型

beforeSend コールバック関数はブール値を返す必要があります。

beforeSend(event: any, context?: any) => boolean

実装は変更されていませんが、値が返されない場合でもイベントは破棄されません。

取るべきアクション: beforeSendtrue を返すとイベントは保持され、false を返すと破棄されることを確認してください。これにより、関連する TypeScript のコンパイルエラーが解決されます。

セッション リプレイ

セッションリプレイマスキング

Session Replay のデフォルトのマスキング設定 defaultPrivacyLevelmask-user-input から mask に変更されました。これにより、Session Replay 記録の全データがデフォルトで非表示になり、閲覧時に機密性の高い情報が見えなくなります。詳細は Session Replay ブラウザプライバシーオプションを参照してください。

取るべきアクション: Session Replay で機密性のない HTML コンテンツやユーザーが入力したテキストなどのマスクされていないデータを表示したい場合は、defaultPrivacyLevelmask-user-input または allow に設定してください。

Session Replay 用にサンプリングされたセッションの自動記録

sessionReplaySampleRate を使用して Session Replay 用にサンプリングされたセッションは、セッションの開始時に自動的に記録されます。つまり、記録をキャプチャするために startSessionReplayRecording() メソッドを呼び出す必要はありません。言い換えると、記録の取りこぼしを防ぐことができます。

取るべきアクション: 古い記録方法を継続し、記録の開始タイミングをカスタマイズしたい場合は、startSessionReplayRecordingManuallytrue に設定してください。

セッションが記録をキャプチャした場合にのみ Session Replay の料金が発生する

以前のバージョンの SDK では、セッションはサンプリングメカニズムによってセッションリプレイセッションと判断されています。v5 では、セッション中に記録がキャプチャされた場合のみ、セッションはセッションリプレイセッションとしてカウントされます。これにより、セッションリプレイの使用量を追跡しやすくなりました。

アクションは必要ありません: この動作は v5 で自動的に有効になります。

デフォルトの Session Replay サンプリングレート

v5 では、デフォルトの sessionReplaySampleRate は 100 ではなく 0 です。サンプリングレートを指定しないと、リプレイは記録されません。

取るべきアクション: Session Replay を使用するには、sessionReplaySampleRate: 100 (または他のサンプリングレート) を明示的に設定してください。

RUM

APM インテグレーション

OpenTelemetry のサポートと利用を促進するために、デフォルトのプロパゲータタイプに tracecontextdatadog に加えて追加されました。

取るべきアクション: まだ allowedTracingUrls の初期化パラメーターで希望するプロパゲータを指定していない場合は、サーバーの Access-Control-Allow-Headers を構成して traceparent ヘッダーも受け付けるようにしてください。詳細は RUM とトレースの接続を参照してください。

セッションプランフィールド

Session Replay の変更に伴い、session.plan フィールドはセッションイベントでのみ利用可能です。

取るべきアクション: 保存しているモニターやダッシュボードのクエリを更新し、非セッションイベントの session.plan フィールドを除外してください。

フラストレーションシグナルが自動的に収集される

フラストレーションシグナルを含むすべてのユーザーインタラクションを収集するには、trackUserInteractions: true を設定するだけです。trackFrustrations パラメーターを個別に設定する必要はありません。

取るべきアクション: フラストレーションシグナルを追跡するには、trackUserInteractions: true を設定してください。trackFrustrations パラメーターは削除しても構いません。

フリーズしたページではリソースの継続時間が省略される

ページがバックグラウンドになったために延長されたリソースの持続時間は、リソースコレクションで省略されます。例えば、ページの読み込み中にユーザーが別のタブをクリックした場合などです。

アクションは必要ありません: この動作は v5 で自動的に有効になります。

リソースとロングタスクの追跡

replaySampleRatepremiumSampleRate (どちらも非推奨) の代わりに sessionReplaySampleRate を使用する場合、リソースとロングタスクを明示的に構成する必要があります。

取るべきアクション: これらのイベントを収集するには、trackResourcestrackLongTaskstrue に設定されていることを確認してください。

リソースメソッド名が大文字

大文字と小文字の違い (POST vs post) によって同じメソッド名が異なる値として扱われるのを避けるため、メソッド名は一貫して大文字で送信されるようになりました。

取るべきアクション: モニターやダッシュボードのクエリを更新し、resource.method フィールドに大文字の値を使用してください。

beforeSend アクションイベント

beforeSend API は、収集したイベントのコンテキスト情報へのアクセスを許可します (RUM データの情報付加と管理を参照)。

フラストレーションシグナルの導入により、アクションイベントは複数の DOM イベントに関連付けることができます。

この更新に伴い、context.event 属性は削除され、context.events 属性が使用されるようになりました。

取るべきアクション: beforeSend のコードを更新し、context.event の代わりに context.events を使用してください。

beforeSend: (event, context) => {
  if (event.type === 'action' && event.action.type === 'click') {
    // アクションイベントに関連するブラウザイベントにアクセス
    // 以前は単一イベント: context.event
    // 現在は複数イベント: context.events
  }
}

beforeSend のフォアグラウンド期間

view.in_foreground_periods 属性は SDK から送信されるのではなく、バックエンドで直接計算されます。

取るべきアクション: beforeSend のコードから view.in_foreground_periods を削除してください。特定のユースケースでこの属性に依存していた場合は、サポートにお問い合わせください。

beforeSend パフォーマンスエントリ

beforeSend コンテキストの performanceEntry 属性が JSON 表現から更新され、パフォーマンスエントリオブジェクトを直接含むようになりました。

エクスポートされた PerformanceEntryRepresentation 型は削除され、標準の PerformanceEntry 型が使用されるようになりました。

取るべきアクション: beforeSend のコードでは PerformanceEntryRepresentation 型の代わりに PerformanceEntry 型を直接使用してください。

Logs

コンソールエラーのプレフィックスを削除

ログメッセージの “console error:” プレフィックスが削除されました。この情報は origin 属性で確認できます。

取るべきアクション: "console error:" プレフィックスを使用しているモニターやダッシュボードのクエリを更新し、代わりに @origin:console を使用してください。

error.origin を削除

すべてのログに origin 属性が導入されたため、error.origin は冗長となり、削除されました。

取るべきアクション: error.origin を使用しているモニターやダッシュボードのクエリを更新し、代わりに origin を使用してください。

メインロガーを分離

SDK がランタイムエラーやネットワーク、レポート、コンソールログを収集する際に、メインロガー (DD_LOGS.logger) に固有のコンテキストを追加せず、そのロガーに設定されたレベルやハンドラーを使用しません。

取るべきアクション: 非ロガーのログを除外するためにメインロガーのレベルに依存していた場合、代わりに専用の初期化パラメーターを使用してください。

取るべきアクション: 非ロガーのログにコンテキストを追加するためにメインロガーのコンテキストに依存していた場合、代わりにグローバルコンテキストを使用してください。

v3〜v4

v4 では、RUM と Logs Browser SDK にいくつかの重大な変更が加えられました。

変更

取込先 URL

RUM Browser SDK のデータ送信先 URL が変更になりました。コンテンツセキュリティポリシーが最新であることを確認してください。

最小限の Typescript のバージョンサポート

RUM Browser SDK v4 は、v3.8.2 より前の TypeScript と互換性がありません。TypeScript を使用する場合は、バージョンが v3.8.2 以上であることを確認してください。

タグの構文

versionenvserviceの初期化パラメーターは、Datadog にタグとして送信されます。RUM Browser SDK は、複数のタグが生成されないように、それらをわずかにサニタイズし、それらの値がタグの要件構文に適合しない場合は警告を表示します。

初期化パラメーターの型の厳格化

TypeScript の初期化パラメーターを表す型はより厳しくなっており、以前受け取ったサポートされていないパラメーターは拒否されることがあります。もし型チェックのエラーが発生した場合は、サポートされている初期化パラメーターを指定していることを確認してください。

プライバシーオプションの優先順位

複数のプライバシーオプションが同じ要素に指定されている場合、Datadog は最も制限の厳しいオプションを適用し、機密データの予期せぬ漏えいを回避します。例えば、同じ要素に dd-privacy-allowdd-privacy-hidden の両方のクラスが指定されている場合、allow の代わりに hidden が適用されます。

アクション名計算

RUM Browser SDK は、アクション名を計算する際に、data-dd-action-name 属性を持つ子要素のテキストを内側のテキストから削除しています。

例えば、次の container 要素の場合、以前は計算されるアクション名は Container sensitive data でしたが、v4 では計算されるアクション名は Container になります。

<div id="container">
  Container
  <div data-dd-action-name="sensitive">sensitive data</div>
</div>

削除

XHR _datadog_xhr フィールド

RUM Browser SDK は、以前は XMLHttpRequest オブジェクトの内部状態を表す _datadog_xhr プロパティを使用していました。このプロパティは、外部で使用されることを想定していなかったため、代替することなく削除されました。

proxyHost 初期化パラメーター

初期化パラメーター proxyHost は削除されました。代わりに初期化パラメーター proxyUrl を使用してください。

プライバシーオプション対応

プライバシーオプションの input-ignoredinput-masked は無効となりました。代わりに mask-user-input プライバシーオプションを使用してください。

具体的には、以下のように置き換えてください。

  • dd-privacy-input-ignored および dd-privacy-input-masked クラス名を dd-privacy-mask-user-input に置き換えます。
  • dd-privacy="input-masked" および dd-privacy="input-ignored" 属性値を dd-privacy="mask-user-input" に置き換えます。

v2〜v3

Browser SDK v3 に Session Replay が新登場。この大きなバージョンアップデートにより、RUM および Logs Browser SDK が大きく変わります。

変更

RUM エラー

RUM Browser SDK では、失敗した XHR および Fetch 呼び出しに対する RUM エラーが作成されなくなります。このような失敗したネットワークリクエストは、依然として RUM リソースとして収集され、ステータスコード属性を含みます。

引き続き、失敗したネットワークリクエストを RUM エラーとして表示するには、Datadog では beforeSend API を使用したリソースの傍受、status_code プロパティのチェック、そして addError API を使用したエラーの手動送信をおすすめします。

beforeSend: (event) => {
    if (event.type === 'resource' && event.resource.status_code >= 500) {
        datadogRum.addError(`${event.resource.method} ${event.resource.url} ${event.resource.status_code}`); // "GET https://www.example.com/ 504"
    }
}

RUM エラーソース属性

RUM Browser SDK では、addError API で収集されたエラーのソースの特定ができなくなります。この API で収集されたすべてのエラーは、ソース属性が custom に設定されます。addError API は、コンテキストオブジェクトをその 2 番目のパラメーターとして受容し、エラーに関する追加コンテキストを渡すために使用されます。

削除

RUM API

旧 API新 API
addUserActionaddAction

初期化オプション

旧オプション新オプション
publicApiKeyclientToken
datacentersite
resourceSampleRateなし

TypeScript タイプ

旧タイプ新タイプ
RumUserConfigurationRumInitConfiguration
RumRecorderUserConfigurationRumRecorderInitConfiguration
LogsUserConfigurationLogsInitConfiguration

その他の参考資料

PREVIEWING: mervebolat/span-id-preprocessing