CloudWatch RUM ウェブクライアントによって収集される情報 - Amazon CloudWatch

CloudWatch RUM ウェブクライアントによって収集される情報

このセクションでは、PutRumEvents スキーマについて記述します。このスキーマでは、CloudWatch RUM を使用してユーザーセッションから収集できるデータの構造を定義します。

PutRumEvents リクエストは、以下のフィールドを持つデータ構造を CloudWatch RUM に送信します。

  • この RUM イベントのバッチ ID

  • 以下を含む、アプリケーションモニターの詳細情報:

    • アプリケーションモニター ID

    • モニターリング対象アプリケーションのバージョン

  • 以下を含むユーザーの詳細情報: このデータは、アプリケーションモニターで Cookie が有効化されている場合にのみ収集されます。

    • ウェブクライアントによって生成されたユーザー ID

    • セッション ID

  • このバッチ内での RUM イベントの配列

RUM イベントのスキーマ

各 RUM イベントの構造には、以下のフィールドが含まれます。

RUM イベントのメタデータ

メタデータには、ページメタデータ、ユーザエージェントのメタデータ、地理的位置情報のメタデータ、およびドメインメタデータが含まれます。

ページメタデータ

ページメタデータには、以下が含まれます。

  • ページ ID

  • ページタイトル

  • 親ページ ID – これらのデータは、アプリケーションモニタで Cookie が有効化されている場合にのみ収集されます。

  • 操作に関する深度 – これは、アプリケーションモニタで Cookie が有効化されている場合にのみ収集されます。

  • ページタグ — ページイベントにタグを追加して、ページをグループ化できます。詳細については、「ページグループを使用する」を参照してください。

ユーザーエージェントのメタデータ

ユーザーエージェントのメタデータには、以下が含まれます。

  • ブラウザで使用する言語

  • ブラウザ名

  • ブラウザのバージョン

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

  • オペレーティングシステムのバージョン

  • デバイスタイプ

  • プラットフォームの種類

地理的位置情報のメタデータ

地理的位置情報のメタデータには以下が含まれます。

  • 国コード

  • 区域コード

ドメインメタデータ

ドメインメタデータには URL ドメインが含まれます。

RUM イベントの詳細

イベントの詳細は、イベントタイプに応じて、以下のいずれかのタイプのスキーマに従います。

セッション開始イベント

このイベントにはフィールドは含まれません。このデータは、アプリケーションモニターで Cookie が有効化されている場合にのみ収集されます。

ページビュースキーマ

ページビューイベントには、以下のプロパティが含まれます。ページビューコレクションを非アクティブ化するように、ウェブクライアントを設定できます。詳細については、「CloudWatch RUM web client documentation」を参照してください。

名前 説明

ページ ID

文字列

アプリケーション内でこのページを一意に表す ID です。デフォルトでは URL パスが使用されます。

親ページ ID

文字列

現在のページに移動する時点で、ユーザーに対し表示されていたページの ID です。このデータは、アプリケーションモニターで Cookie が有効化されている場合にのみ収集されます。

操作に関する深度

文字列

このデータは、アプリケーションモニターで Cookie が有効化されている場合にのみ収集されます。

JavaScript エラースキーマ

エージェントによって生成される JavaScript エラーイベントには、以下のプロパティが含まれます。ウェブクライアントは、エラーテレメトリの収集を選択した場合にのみ、これらのイベントを収集します。

名前 説明

エラータイプ

文字列

エラーの名前 (存在する場合)。詳細については、「Error.prototype.name」を参照してください。

ブラウザによっては、エラータイプをサポートしていない場合があります。

エラーメッセージ

文字列

エラーが返すメッセージ。詳細については、「Error.prototype.message」を参照してください。エラーフィールドが存在しない場合、これはエラーイベントのメッセージになります。詳細については、「ErrorEvent」を参照してください。

異なるブラウザ間では、エラーメッセージが一貫しない場合があります。

スタックトレース

文字列

エラーのスタックトレース (それが存在する場合) は 150 文字に切り捨てられます。詳細については、「Error.prototype.stack」を参照してください。

ブラウザによっては、スタックトレースをサポートしていない場合があります。

DOM イベントスキーマ

エージェントによって生成されるドキュメントオブジェクトモデル (DOM) イベントには、以下のプロパティが含まれます。これらのイベントは、デフォルトでは収集されません。収集されるのは、インタラクションテレメトリをアクティブにした場合のみです。詳細については、「CloudWatch RUM web client documentation」を参照してください。

名前 説明

イベント

文字列

クリック、スクロール、ホバーなど、DOM イベントの種類。詳細については、「Event reference」を参照してください。

要素

文字列

DOM 要素タイプ

要素 ID

文字列

イベントを生成した要素が ID を持つ場合、その ID がこのプロパティに格納されます。詳細については、「Element.id」を参照してください。

CSSLocator

文字列

DOM 要素の識別に使用される CSS ロケーター。

InteractionId

文字列

ユーザーと UI 間のインタラクションにおける一意の ID です。

ナビゲーションイベントスキーマ

ナビゲーションイベントは、アプリケーションモニターでパフォーマンステレメトリが有効になっている場合にのみ収集されます。

ナビゲーションイベントでは、ナビゲーションタイミングレベル 1、およびナビゲーションタイミングレベル 2 の API を使用します。レベル 2 の API は、すべてのブラウザーでサポートされている訳ではないため、これらの新しいフィールドはオプションです。

注記

タイムスタンプのメトリクスは、DOMHighResTimestamp に基づいています。レベル 2 の API のデフォルトでは、すべてのタイミングが startTime に対し相対的です。また、レベル 1 では、タイムスタンプメトリクスから navigationStart メトリクスを減算して相対値を算出します。タイムスタンプの値はすべてミリ秒単位で表示されます。

ナビゲーションイベントには、以下のプロパティが含まれます。

名前 説明 メモ

initiatorType

文字列

パフォーマンスイベントを開始したリソースのタイプを表します。

値: 「ナビゲーション」

レベル 1: 「ナビゲーション」

レベル 2: entryData.initiatorType

navigationType

文字列

ナビゲーションのタイプを表します。

この属性は必須ではありません。

値: この値は以下のいずれかにする必要があります。

  • navigate は、リンクの選択、ブラウザのアドレスバーへの URL の入力、フォームの送信、または (reload または back_forward 以外の) スクリプト処理からの初期化によって開始されるナビゲーションです。

  • reload は、ブラウザのリロード処理もしくは location.reload() によるナビゲーションです。

  • back_forward は、ブラウザでの履歴横断の処理によるナビゲーションです。

  • prerender は、プリレンダリングヒントによって開始されるナビゲーションです。詳細については、「Prerender」を参照してください。

startTime

イベントがトリガーされるタイミングを示します。

値: 0

レベル 1: entryData.navigationStart - entryData.navigationStart

レベル 2: entryData.startTime

unloadEventStart

ウィンドウ内の前のドキュメントが、アンロードを (unload イベントがスローされた後に) 開始したタイミングを示します。

値:先に表示されたドキュメントが存在しないか、そのドキュメントもしくは必要なリダイレクトの 1 つでオリジンが異なっている場合、返される値は 0 です。

レベル 1:

entryData.unloadEventStart > 0 ? entryData.unloadEventStart - entryData.navigationStart : 0

レベル 2: entryData.unloadEventStart

promptForUnload

ドキュメントのアンロードに要した時間。つまり unloadEventStartunloadEventEnd の間の時間です。UnloadEventEnd は、アンロードイベントのハンドラが終了したタイミングを、ミリ秒単位の時間で表します。

値:先に表示されたドキュメントが存在しないか、そのドキュメントもしくは必要なリダイレクトの 1 つでオリジンが異なっている場合、返される値は 0 です。

レベル 1: entryData.unloadEventEnd - entryData.unloadEventStart

レベル 2: entryData.unloadEventEnd - entryData.unloadEventStart

redirectCount

現在のブラウジングコンテキストの下で行われた、最後の非リダイレクトナビゲーション以降のリダイレクトの数を表す数値。

この属性は必須ではありません。

値:リダイレクトが存在しない場合、またはリダイレクトがあってもそのオリジンが送信先ドキュメントと異なっている場合、返される値は 0 です。

レベル 1: 利用不可

レベル 2: entryData.redirectCount

redirectStart

最初の HTTP リダイレクトが開始された時刻。

値:リダイレクトが存在しない場合、またはリダイレクトがあってもそのオリジンが送信先ドキュメントと異なっている場合、返される値は 0 です。

レベル 1:

entryData.redirectStart > 0 ? entryData.redirectStart - entryData.navigationStart : 0

レベル 2: entryData.redirectStart

redirectTime

HTTP リダイレクトに要した時間。これは、redirectStartredirectEnd の間の差です。

レベル 1:: entryData.redirectEnd - entryData.redirectStart

レベル 2:: entryData.redirectEnd - entryData.redirectStart

workerStart

これは PerformanceResourceTiming インターフェイスのプロパティです。この値は、ワーカースレッドでのオペレーションの開始を示します。

この属性は必須ではありません。

値: Service Worker スレッドがすでに実行中である、またはそのスレッドを開始する直前である場合、このプロパティは FetchEvent をディスパッチする直前の時間を返します。リソースが Service Worker によって傍受されない場合は 0 を返します。

レベル 1: 利用不可

レベル 2: entryData.workerStart

workerTime

リソースが Service Worker によって傍受されている場合、この値にはワーカースレッドでの処理に要する時間が返されます。

この属性は必須ではありません。

レベル 1: 利用不可

レベル 2:

entryData.workerStart > 0 ? entryData.fetchStart - entryData.workerStart : 0

fetchStart

ブラウザで、HTTP リクエストによるドキュメントのフェッチが準備ができた時刻。これは、アプリケーションキャッシュがチェックされる前のタイミングです。

レベル 1:

: entryData.fetchStart > 0 ? entryData.fetchStart - entryData.navigationStart : 0

レベル 2: entryData.fetchStart

domainLookupStart

ドメインルックアップが開始された時間。

値: 永続接続が使用されている場合、または情報がキャッシュまたはローカルリソースに格納されている場合、この値は fetchStart と同じ値になります。

レベル 1:

entryData.domainLookupStart > 0 ? entryData.domainLookupStart - entryData.navigationStart : 0

レベル 2: entryData.domainLookupStart

dns

ドメインルックアップに必要な時間。

値: リソースと DNS レコードがキャッシュされている場合、この値には 0 が想定されます。

レベル 1: entryData.domainLookupEnd - entryData.domainLookupStart

レベル 2: entryData.domainLookupEnd - entryData.domainLookupStart

nextHopProtocol

文字列

リソースの取得に使用されるネットワークプロトコルを表す文字列。

この属性は必須ではありません。

レベル 1: 利用不可

レベル 2: entryData.nextHopProtocol

connectStart

ユーザーエージェントがドキュメントを取得するためにサーバーへの接続を確立した時点の直前の時間。

値: RFC2616 の永続接続が使用されている場合、または現在のドキュメントが関連するアプリケーションキャッシュまたはローカルリソースから取得された場合、この属性は値として domainLookupEnd を返します。

レベル 1:

entryData.connectStart > 0 ? entryData.connectStart - entryData.navigationStart : 0

レベル 2: entryData.connectStart

接続

転送のための接続の確立、または SSL 認証の実行に必要な時間を測定します。また、ブラウザによって発行される同時リクエストが多すぎる場合の、ブロック時間の長さも含まれます。

レベル 1: entryData.connectEnd - entryData.connectStart

レベル 2: entryData.connectEnd - entryData.connectStart

secureConnectionStart

現在のページの URL スキームが「https」の場合、この属性は、ユーザーエージェントが現在の接続を保護するためのハンドシェイクプロセスを開始する直前の時間を返します。HTTPS を使用しない場合は 0 を返します。URL スキームの詳細については、「URL representation」を参照してください。

計算式: entryData.secureConnectionStart

tlsTime

SSL ハンドシェイクを完了するのに要した時間。

レベル 1:

entryData.secureConnectionStart > 0 ? entryData.connectEnd - entryData.secureConnectionStart : 0

レベル 2:

entryData.secureConnectionStart > 0 ? entryData.connectEnd - entryData.secureConnectionStart : 0

requestStart

ユーザーエージェントが、サーバー、関連するアプリケーションキャッシュ、またはローカルからのリソースに対する要求を開始した時点の直前の時間。

レベル 1:

: entryData.requestStart > 0 ? entryData.requestStart - entryData.navigationStart : 0

レベル 2: entryData.requestStart

timeToFirstByte

リクエストが発行された後、情報の最初のバイトを受信するまでに要した時間。この時間は startTime に対して相対的です。

レベル 1: entryData.responseStart - entryData.requestStart

レベル 2: entryData.responseStart - entryData.requestStart

responseStart

ユーザーエージェントの HTTP パーサーが、関連するアプリケーションキャッシュ、ローカルリソース、またはサーバーから、最初の応答バイトを受信した直後の時間。

レベル 1:

entryData.responseStart > 0 ? entryData.responseStart - entryData.navigationStart : 0

レベル 2: entryData.responseStart

responseTime

文字列

関連するアプリケーションキャッシュ、ローカルリソース、またはサーバーから、バイト形式の完全な応答を受信するまでに要した時間。

レベル 1:

entryData.responseStart > 0 ? entryData.responseEnd - entryData.responseStart : 0

レベル 2:

entryData.responseStart > 0 ? entryData.responseEnd - entryData.responseStart : 0

domInteractive

パーサーがメインドキュメントでの作業を終了し、HTML DOM が構築された時間。この際には、Document.readyState が「interactive」に変化し、それに対応する readystatechange イベントがスローされます。

レベル 1:

entryData.domInteractive > 0 ? entryData.domInteractive - entryData.navigationStart : 0

レベル 2: entryData.domInteractive

domContentLoadedEventStart

ユーザーエージェントが、現在のドキュメントで DOMContentLoaded イベントを発行した時点の直前の時間を表します。DOMContentLoaded イベントは、最初の HTML ドキュメントが完全に読み込まれ、解析されたタイミングで発行されます。この時点では、メイン HTML ドキュメントの解析が完了し、ブラウザがレンンダーツリーの作成を開始しており、また、サブリソースをロードする必要があります。これにより、スタイルシート、画像、およびサブフレームのローディングが完了するのを待つことはありません。

レベル 1:

entryData.domContentLoadedEventStart > 0 ? entryData.domContentLoadedEventStart - entryData.navigationStart : 0

レベル 2: entryData.domContentLoadedEventStart

domContentLoaded

これは、レンダーツリー構築の開始と終了の時間で、domContentLoadedEventStartdomContentLoadedEventEnd によりマークされます。この値により、CloudWatch RUM は実行の追跡を行います。このプロパティ値は、domContentLoadedStartdomContentLoadedEnd の間の差です。

この期間の間に、DOM と CSSOM の準備が整います。このプロパティは、非同期的および動的に作成されたスクリプトを除き、スクリプトが実行されるまで待機します。また、スクリプトがスタイルシートに依存している場合、domContentLoaded はスタイルシートのために待機します。画像のためには待機しません。

注記

domContentLoadedStart そして domContentLoadedEnd での実際の値は、Google Chrome の ネットワークパネルに表示される domContentLoaded に近似します。この値は、ページの読み込みプロセスの開始から、HTML DOM と CSSOM のレンダリングツリーが構築されるまでに要した時間を示します。ナビゲーションメトリクスの場合、domContentLoaded 値は開始値と終了値間の差を表します。これは、サブリソースのダウンロードとレンダリングツリー構築に要した時間のみを反映します。

レベル 2: entryData.domContentLoadedEventEnd – entryData.domContentLoadedEventStart

レベル 2: entryData.domContentLoadedEventEnd – entryData.domContentLoadedEventStart

domComplete

現在のドキュメントの準備を完了したことを、ブラウザが知らせてきた時点の直前の時間。この時点で、画像などのサブリソースの読み込みは完了しています。これには、CSS や同期 JavaScript などのブロッキングコンテンツのダウンロードにかかる時間も含まれます。この値は、Google Chrome のネットワークパネルに表示される loadTime の値に近似します。

レベル 1:

entryData.domComplete > 0 ? entryData.domComplete - entryData.navigationStart : 0

レベル 2: entryData.domComplete

domProcessingTime

レスポンスとロードイベント開始までの間の合計時間。

レベル 1: entryData.loadEventStart - entryData.responseEnd

レベル 2: entryData.loadEventStart - entryData.responseEnd

loadEventStart

現在のドキュメントの load イベントが発行された直前の時間。

レベル 1:

entryData.loadEventStart > 0 ? entryData.loadEventStart - entryData.navigationStart : 0

レベル 2: entryData.loadEventStart

loadEventTime

loadEventStartloadEventEnd の違い。このロードイベントを待っている追加の関数またはロジックは、この間に起動されます。

レベル 1: entryData.loadEventEnd - entryData.loadEventStart

レベル 2: entryData.loadEventEnd - entryData.loadEventStart

duration

文字列

この期間は、ページの合計読み込み時間です。メインページとそのすべての同期サブリソースをダウンロードし、さらにページをレンダリングするため要した時間を記録します。この後も、スクリプトなどの非同期リソースのダウンロードは継続します。この値は、loadEventEndstartTime の 2 つのプロパティ間の差になります。

レベル 1: entryData.loadEventEnd - entryData.navigationStart

レベル 2: entryData.duration

headerSize

transferSizeencodedBodySize の間の差を返します。

この属性は必須ではありません。

レベル 1: 利用不可

レベル 2: entryData.transferSize – entryData.encodedBodySize

レベル 2: entryData.transferSize – entryData.encodedBodySize

compressionRatio

encodedBodySizedecodedBodySize の比率です。encodedBodySize の値は、HTTP ヘッダーを除くリソースの圧縮後のサイズです。decodedBodySize の値は、HTTP ヘッダーを除くリソースの解凍後のサイズです。

この属性は必須ではありません。

レベル 1: 利用不可。

レベル 2:

entryData.encodedBodySize > 0 ? entryData.decodedBodySize / entryData.encodedBodySize : 0

navigationTimingLevel

ナビゲーションタイミング API のバージョン。

値: 1 または 2

リソースイベントスキーマ

リソースイベントは、アプリケーションモニターでパフォーマンステレメトリが有効化されている場合にのみ収集されます。

タイムスタンプのメトリクスは、型定義 DOMHighResTimeStamp に基づきます。レベル 2 の API のデフォルトでは、すべてのタイミングは startTime に対して相対的です。レベル 1 API の場合には、タイムスタンプのメトリクスから navigationStart メトリクスが減算され、相対値が取得されます。タイムスタンプの値はすべてミリ秒単位で表示されます。

エージェントによって生成されたリソースイベントには、以下のプロパティが含まれます。

名前 説明 メモ

targetUrl

文字列

リソースの URL を返します。

計算式: entryData.name

initiatorType

文字列

パフォーマンスリソースイベントを開始したリソースのタイプを表します。

値: 「resource」

計算式: entryData.initiatorType

duration

文字列

responseEndstartTime の 2 つのプロパティ間の差を返します。

この属性は必須ではありません。

計算式: entryData.duration

transferSize

レスポンスヘッダーフィールドとレスポンスペイロード本体を含む、フェッチされたリソースのサイズ (オクテット単位) を返します。

この属性は必須ではありません。

計算式: entryData.transferSize

fileType

文字列

ターゲット URL パターンから派生した拡張。

最大のコンテンツフルペイントイベントのスキーマ

最大のコンテンツペイントイベントには、以下のプロパティが含まれています。

これらのイベントは、アプリケーションモニターでパフォーマンステレメトリが有効化されている場合にのみ収集されます。

名前 説明

詳細については、「Web Vitals」を参照してください。

最初の入力遅延イベント

最初の入力遅延イベントには、以下のプロパティが含まれます。

これらのイベントは、アプリケーションモニターでパフォーマンステレメトリが有効化されている場合にのみ収集されます。

名前 説明

詳細については、「Web Vitals」を参照してください。

累積的レイアウトシフトイベント

累積的レイアウトシフトイベントには、以下のプロパティが含まれます。

これらのイベントは、アプリケーションモニターでパフォーマンステレメトリが有効化されている場合にのみ収集されます。

名前 説明

詳細については、「Web Vitals」を参照してください。

HTTP イベント

HTTP イベントには、以下のプロパティが含まれます。これには、Response フィールドまたは Error フィールドのいずれかが含まれますが、両方が含まれることはありません。

これらのイベントは、アプリケーションモニターで HTTP テレメトリが有効化されている場合にのみ収集されます。

名前 説明

リクエスト

リクエストフィールドには以下が含まれます。

  • GET、POST などの値を含めることができる Method フィールドです。

  • URL

レスポンス

レスポンスには以下が含まれます。

  • 2xx、4xx、または 5xx などのステータス

  • ステータスのテキスト

エラー

このエラーフィールドには以下が含まれます。

  • タイプ

  • メッセージ

  • ファイル名

  • 行番号

  • 列番号

  • スタックトレース

X-Ray トレースイベントのスキーマ

これらのイベントは、アプリケーションモニターで X-Ray トレースが有効化されている場合にのみ収集されます。

X-Ray トレースイベントのスキーマの詳細については、AWS X-Ray segment documents を参照してください。