収集された RUM ブラウザデータ
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

収集された RUM ブラウザデータ

デフォルトでは、収集されたすべてのデータは詳細な粒度で 15 日間保持されます。Datadog リアルユーザーモニタリングのスクリプトが、Datadog に 5 種類の主なイベントタイプを送信します。

  • View: ユーザーがセットアップアプリケーションのページにアクセスするたびに、ビューイベントが作成されます。ユーザーがそのビューにとどまっている間、収集されたすべてのデータは、view.id 属性でそのビューにアタッチされます。
  • Resource: 画像、XHR/Fetch、CSS、または JS ライブラリのリソースイベントを生成できます。名前や関連付けられている読み込み時間など、リソースに関する情報が含まれています。
  • Long task: メインスレッドを 50 ミリ秒以上ブロックするブラウザのタスクはすべて、ロングタスクと見なされ、特定のイベントが生成されます。
  • Error: ブラウザによってフロントエンドエラーが発生するたびに、RUM はそれをキャッチし、Error Event として Datadog に送信します。
  • User Action: User Action イベントは、特定のユーザーアクションに対して生成できるカスタムイベントです。

ページビューとは、ウェブサイトからページへアクセスするユーザー数のことです。一意の属性 view.id を使うと、ページビューの間のエラーリソースロングタスクユーザーアクションがそのページビューにアタッチされます。新しいイベントが収集されると、ページビューは更新されます。

ページビューには、読み込みパフォーマンスのメトリクスが Paint Timing APINavigation Timing API の両方から収集されます。

シングルページアプリケーション

シングルページアプリケーション (SPA) の場合、RUM SDK は、loading_type 属性を使用して、initial_load ナビゲーションと route_change ナビゲーションを区別します。ウェブページをクリックすると、ページが完全に更新されずに新しいページが表示される場合、RUM SDK は、loading_type:route_change を使用して新しいビューイベントを開始します。RUM は、履歴 APIを使用してページの変更を追跡します。

Datadog は、ページの読み込みに必要な時間を計算する独自のパフォーマンスメトリクス、loading_time を提供します。このメトリクスは、initial_loadroute_change の両方のナビゲーションで機能します。

読み込み時間はどのように計算されますか?

最新のウェブアプリケーションを考慮するために、読み込み時間はネットワークリクエストと DOM のミューテーションを監視します。

  • Initial Load: 読み込み時間は、次のどちらか長い方になります*。

    • navigationStartloadEventEnd の差。
    • または、navigationStart と、ページに 100 ミリ秒を超えて初めてアクティビティがないときの差 (アクティビティは、進行中のネットワークリクエストまたは DOM ミューテーションとして定義)。
  • SPA Route Change: 読み込み時間は、ユーザーのクリックと、ページに 100 ミリ秒を超えて初めてアクティビティがないときの差に等しくなります (アクティビティは、進行中のネットワークリクエストまたは DOM ミューテーションとして定義)。

Hash SPA ナビゲーション

ハッシュ (#) ナビゲーションは RUM SDK によって自動で監視されます。SDK は HashChangeEvent を監視し、新しいビューを表示します。現在のビューのコンテキストに影響しない HTML アンカータグからくるイベントは無視されます。

収集されるメトリクス

属性タイプ説明
duration数値(ns)現在のビューに費やした時間。
view.loading_time数値(ns)ページの準備が整い、ネットワークリクエストまたは DOM ミューテーションが現在発生していない状態になるまでの時間。収集データドキュメントの詳細
view.measures.first_contentful_paint数値(ns)ブラウザによりテキスト、画像(背景画像を含む)、白以外のキャンバス、または SVG が最初にレンダリングする時間。ブラウザのレンダリングの詳細については、w3 定義を参照してください。
view.measures.dom_interactive数値(ns)パーサーによりメインドキュメントの作業が終了する瞬間。MDN ドキュメントの詳細
view.measures.dom_content_loaded数値(ns)最初の HTML ドキュメントがレンダリング以外のブロッキングスタイルシート、画像、サブフレームの読み込み完了を待たずに完全に読み込まれ解析される際に発生するイベント。MDN ドキュメントの詳細
view.measures.dom_complete数値(ns)ページとすべてのサブリソースの準備が完了。ユーザー側では、ローディングスピナーの回転が停止。MDN ドキュメントの詳細
view.measures.load_event_end数値(ns)ページが完全に読み込まれた際に発生するイベント。通常は追加のアプリケーションロジックのトリガー。MDN ドキュメントの詳細
view.measures.error_count数値このビューについてこれまでに収集されたすべてのエラーの数。
view.measures.long_task_count数値このビューについて収集されたすべてのロングタスクの数。
view.measures.resource_count数値このビューについて収集されたすべてのリソースの数。
view.measures.user_action_count数値このビューについて収集され多すべてのユーザーアクションの数。

デフォルトで、Web サイトのすべてのリソース(画像、XHR、XMLHttpRequest、CSS の各ファイル、JS アセット、およびフォントファイル)が収集されます。

アプリケーションリソースのロードについて、ネットワークの詳細なタイミングデータが、Performance Resource Timing API を使用して収集されます。

収集されるメジャー

属性タイプ説明
duration数値リソースのロードにかかった全時間。
network.bytes_written数値(バイト)リソースのサイズ。
http.performance.connect.duration数値(ns)サーバーへの接続が確立されるまでにかかった時間(connectEnd - connectStart)。
http.performance.ssl.duration数値(ns)TLS ハンドシェイクにかかった時間。最後のリクエストが HTTPS 経由ではなかった場合、このメトリクスは収集されません(connectEnd - secureConnectionStart)。
http.performance.dns.duration数値(ns)最後のリクエストの DNS 名が解決されるまでにかかった時間(domainLookupEnd - domainLookupStart)。
http.performance.redirect.duration数値(ns)後続の HTTP リクエストにかかった時間(redirectEnd - redirectStart)。
http.performance.first_byte.duration数値(ns)応答の最初のバイトを受信するまでにかかった時間(responseStart - RequestStart)。
http.performance.download.duration数値(ns)応答のダウンロードにかかった時間(responseEnd - responseStart)。

収集されるファセット

属性タイプ説明
resource.kind文字列収集されるリソースの種類またはタイプ(CSS、JS、メディア、XHR、画像)
http.status_code数値応答ステータスコード。
http.url文字列リソースの URL。
http.url_details.host文字列URL の HTTP ホスト部分。
http.url_details.path文字列URL の HTTP パス部分。
http.url_details.queryStringオブジェクトクエリパラメーターの key/value 属性として分解された、URL の HTTP クエリ文字列部分。
http.url_details.scheme文字列URL のプロトコル名 (HTTP または HTTPS)

ロングタスクとは、メインスレッドを 50 ミリ秒以上ブロックするタスクのことです。インプットの高レイテンシーやインタラクションの遅延などの原因となります。ブラウザのパフォーマンスプロファイラーで、ロングタスクの原因を理解しましょう。

収集されるメジャー

属性タイプ説明
duration数値ロングタスクの時間。

フロントエンドのエラーはリアルタイムモニタリング (RUM) で収集されます。エラーメッセージとスタックトレースが利用できる場合は含まれます。

エラーの原因

フロントエンドのエラーは、それぞれの error.origin により 3 つのカテゴリーに分類されます。

  • network: AJAX リクエストが原因の XHR または Fetch エラー。ネットワークエラーの特定の属性はドキュメントを参照してください。
  • source: 未処理の例外または未処理の約束拒否(ソースコード関連)。
  • console: console.error() API 呼び出し。

収集されるファセット

属性タイプ説明
error.origin文字列エラーの発生元(コンソール、ネットワークなど)。
error.kind文字列エラーのタイプまたは種類 (場合によってはコード)。
error.message文字列イベントについて簡潔にわかりやすく説明する 1 行メッセージ。
error.stack文字列スタックトレースまたはエラーに関する補足情報。

ネットワークエラー

ネットワークエラーには失敗した HTTP リクエストに関する情報が含まれます。次のファセットも収集されます。

属性タイプ説明
http.status_code数値応答ステータスコード。
http.url文字列リソースの URL。
http.url_details.host文字列URL の HTTP ホスト部分。
http.url_details.path文字列URL の HTTP パス部分。
http.url_details.queryStringオブジェクトクエリパラメーターの key/value 属性として分解された、URL の HTTP クエリ文字列部分。
http.url_details.scheme文字列URL のプロトコル名 (HTTP または HTTPS)

ソースエラー

ソースエラーには、エラーに関するコードレベルの情報が含まれます。エラーの種類に関する詳細は、 MDN ドキュメントを参照してください。

属性タイプ説明
error.kind文字列エラーのタイプまたは種類 (場合によってはコード)。

ユーザーアクションの自動収集

Real User Monitoring (RUM) SDK は、ユーザージャーニー中に実行されるユーザーのインタラクションを検出します。この機能を有効にするには、trackInteractions 初期化パラメーターtrue に設定します。

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

インタラクションが検出されると、すべての新しい RUM イベントは、完了したと見なされるまで、進行中のユーザーアクションにアタッチされます。ユーザーアクションは、その親ビュー属性 (ブラウザ情報、ジオロケーションデータ、グローバルコンテキストなど) からも恩恵を受けます。

ユーザーアクション期間はどのように計算されますか?

インタラクションが検出されると、RUM SDK は DOM ミューテーションのネットワークリクエストを監視します。100 ミリ秒を超えてページにアクティビティがない場合、インタラクションは完了したと見なされます (アクティビティは、進行中のネットワークリクエストまたは DOM ミューテーションとして定義)。

カスタムユーザーアクション

カスタムユーザーアクションは、addUserAction API を介して手動で宣言および送信されるユーザーアクションです。カスタムタイミングや顧客のカート情報など、ユーザージャーニー中に発生するイベントに関連する情報を送信できます。

収集されるメジャー

属性タイプ説明
duration数値(ns)ユーザーアクションの長さ。ユーザーアクションのドキュメントで計算方法を確認してください。
user_action.measures.long_task_count数値このユーザーアクションについて収集されたすべてのロングタスクの数。
user_action.measures.resource_count数値このユーザーアクションについて収集されたすべてのリソースの数。
user_action.measures.user_action_count数値このユーザーアクションについて収集されたすべてのユーザーアクションの数。

収集されるファセット

属性タイプ説明
user_action.id文字列ユーザーアクションの UUID。
user_action.type文字列ユーザーアクションのタイプ。カスタムユーザーアクションの場合、custom に設定されます。
event.name文字列ユーザーアクションの名前。自動的に収集されたユーザーアクションの場合、ユーザーが操作した要素。

デフォルト属性

以下の 5 つのイベントカテゴリには、デフォルトで属性がアタッチされています。

コア

属性名タイプ説明
application_id文字列Datadog アプリケーション ID。
session_id文字列セッション ID。

ビュー属性

属性名タイプ説明
view.id文字列ページビューごとにランダムに生成された ID。
view.url文字列ビューの URL。
view.loading_type文字列ページ読み込みのタイプ: initial_load または route_change。詳細については、シングルページアプリケーションサポートドキュメントを参照してください。
view.referrer文字列現在リクエストされているページへのリンクがたどられた前のウェブページの URL。
view.url_details.host文字列URL の HTTP ホスト部分。
view.url_details.path文字列URL の HTTP パス部分。
view.url_details.path_group文字列同様の URL に対して生成された自動 URL グループ。(例: /dashboard/123/dashboard/456 に対する /dashboard/?
view.url_details.queryStringオブジェクトクエリパラメーターの key/value 属性として分解された、URL の HTTP クエリ文字列部分。

ユーザーエージェント

Datadog 標準属性ロジックに続く次のコンテキストは、Datadog に送信されるすべてのイベントに自動的にアタッチされます。

属性名タイプ説明
http.useragent_details.os.family文字列User-Agent によって報告された OS ファミリー。
http.useragent_details.browser.family文字列User-Agent によって報告されたブラウザファミリー。
http.useragent_details.device.family文字列User-Agent によって報告されたデバイスファミリー。
http.useragent_details.device.category文字列User-Agent によって報告されたデバイスカテゴリ。

位置情報

以下は、ネットワーク通信で使用される IP アドレスの位置情報に関連する属性です。すべてのフィールドに network.client.geoip または network.destination.geoip というプレフィックスが付きます。

完全名タイプ説明
network.client.geoip.country.name文字列国の名前。
network.client.geoip.country.iso_code文字列国の ISO コード (米国は US、フランスは FR など)。
network.client.geoip.continent.code文字列大陸の ISO コード (EUASNAAFANSAOC)
network.client.geoip.continent.name文字列大陸名 (EuropeAustraliaNorth AmericaAfricaAntarticaSouth AmericaOceania)
network.client.geoip.subdivision.name文字列その国で最大規模の地方区分 (米国は California 州、フランスは Sarthe 県など)
network.client.geoip.subdivision.iso_code文字列その国で最大規模の地方区分の ISO コード (米国は CA、フランスは SA など)
network.client.geoip.city.name文字列都市名 (ParisNew York など)

追加属性

デフォルトの属性に加えて、収集されたすべてのイベントに特定のグローバルコンテキストを追加します。これにより、ユーザーのサブセットのデータを分析することができます。たとえば、ユーザーメール別のグループエラー、パフォーマンスが最も悪い顧客の把握などです。

その他の参考資料