収集された RUM ブラウザデータ
Incident Management が一般に使用できるようになりました。 Incident Management が広範に使用できるようになりました。

収集された 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.loading_time は “view” RUM イベントに関連付けられ、属性 resource.method は “resource” RUM イベントに関連付けられます。ユーザーがいる元のページ (view.url) や devicegeolocation などのユーザー情報などのデフォルト属性があり、これらはすべての RUM イベントに存在します。

ページビューとは、ウェブサイトからページへアクセスするユーザー数のことです。一意の属性 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 アンカータグからくるイベントは無視されます。

ビュータイミングメトリクス

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

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

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

リソースタイミングメトリクス

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

リソースの属性

属性タイプ説明
resource.type文字列収集されるリソースのタイプ (cssjavascriptmediaXHRimage など)。
resource.method文字列HTTP メソッド (POSTGET など)。
resource.status_code数値応答ステータスコード。
resource.url文字列リソースの URL。
resource.url_host文字列URL のホスト部分。
resource.url_path文字列URL のパス部分。
resource.url_queryオブジェクトクエリパラメーターの key/value 属性として分解された、URL のクエリ文字列部分。
resource.url_scheme文字列URL のプロトコル名 (HTTP または HTTPS)。
resource.provider.name文字列リソースプロバイダー名。デフォルトは unknown となります。
resource.provider.domain文字列リソースプロバイダーのドメイン。
resource.provider.type文字列リソースプロバイダーのタイプ (first-partycdnadanalytics など)。

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

ロングタスクタイミングメトリクス

メトリクスタイプ説明
long_task.duration数値ロングタスクの時間。

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

エラーの原因

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

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

エラー属性

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

ネットワークエラー

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

属性タイプ説明
error.resource.status_code数値応答ステータスコード。
error.resource.method文字列HTTP メソッド (POSTGET など)。
error.resource.url文字列リソースの URL。
error.resource.url_host文字列URL のホスト部分。
error.resource.url_path文字列URL のパス部分。
error.resource.url_queryオブジェクトクエリパラメーターの key/value 属性として分解された、URL のクエリ文字列部分。
error.resource.url_scheme文字列URL のプロトコル名 (HTTP または HTTPS)。
error.resource.provider.name文字列リソースプロバイダー名。デフォルトは unknown となります。
error.resource.provider.domain文字列リソースプロバイダーのドメイン。
error.resource.provider.type文字列リソースプロバイダーのタイプ (first-partycdnadanalytics など)。

ソースエラー

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

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

アクションの自動収集

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

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

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

アクションの読み込み時間はどのように計算されますか?

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

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

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

アクションタイミングメトリクス

メトリクスタイプ説明
action.loading_time数値(ns)アクションの読み込み時間。ユーザーアクションのドキュメントで計算方法を確認してください。
action.long_task.count数値このアクションについて収集されたすべてのロングタスクの数。
action.resource.count数値このアクションについて収集されたすべてのリソースの数。
action.error.count数値このアクションについて収集されたすべてのエラーの数。

アクションの属性

属性タイプ説明
action.id文字列ユーザーアクションの UUID。
action.type文字列ユーザーアクションのタイプ。カスタムユーザーアクションの場合、custom に設定されます。
action.target.name文字列ユーザーが操作したエレメント。自動収集されたアクションのみ対象
action.name文字列作成されたユーザーフレンドリーな名称 (Click on #checkout など)。カスタムユーザーアクションの場合は、API コールで提供されたアクション名。

デフォルト属性

これらの各イベントタイプには、デフォルトで次の属性が付加されています。したがって、照会される RUM イベントタイプに関係なくそれらを使用できます。

コア

属性名タイプ説明
type文字列イベントのタイプ (viewresource など)。
application.id文字列Datadog アプリケーション ID。

ビュー属性

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

デバイス

以下のデバイス関連属性は、Datadog により収集されるすべてのイベントに自動的にアタッチされます。

属性名タイプ説明
device.type文字列User-Agent によって報告されたデバイスタイプ
device.brand文字列User-Agent によって報告されたデバイスブランド。
device.model文字列User-Agent によって報告されたデバイスモデル。
device.name文字列User-Agent によって報告されたデバイス名。

オペレーティングシステム

以下の OS 関連属性は、Datadog により収集されるすべてのイベントに自動的にアタッチされます。

属性名タイプ説明
os.name文字列User-Agent によって報告された OS 名。
os.version文字列User-Agent によって報告された OS バージョン。
os.version_major文字列User-Agent によって報告された OS のメジャーバージョン。

位置情報

以下は、IP アドレスのジオロケーションに関連する属性です。

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

追加属性

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

その他の参考資料