

# CloudWatch RUM ウェブクライアントによって収集される情報
<a name="CloudWatch-RUM-datacollected"></a>

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

**PutRumEvents** リクエストは、以下のフィールドを持つデータ構造を CloudWatch RUM に送信します。
+ この RUM イベントのバッチ ID
+ 以下を含む、アプリケーションモニターの詳細情報: 
  + アプリケーションモニター ID
  + モニターリング対象アプリケーションのバージョン
+ 以下を含むユーザーの詳細情報: ** このデータは、アプリケーションモニターで Cookie が有効化されている場合にのみ収集されます。**
  + ウェブクライアントによって生成されたユーザー ID
  + セッション ID
+ このバッチ内での [RUM イベント](#CloudWatch-RUM-datacollected-event)の配列

## RUM イベントのスキーマ
<a name="CloudWatch-RUM-datacollected-event"></a>

各 RUM イベントの構造には、以下のフィールドが含まれます。
+ イベントの ID
+ タイムスタンプ
+ イベントタイプ
+ ユーザーエージェント
+ [メタデータ](#CloudWatch-RUM-datacollected-metadata)
+ [RUM イベントの詳細](#CloudWatch-RUM-datacollected-eventDetails)

## RUM イベントのメタデータ
<a name="CloudWatch-RUM-datacollected-metadata"></a>

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

### ページメタデータ
<a name="CloudWatch-RUM-datacollected-metadata-page"></a>

ページメタデータには、以下が含まれます。
+ ページ ID
+ ページタイトル
+ 親ページ ID。– **これらのデータは、アプリケーションモニタで Cookie が有効化されている場合にのみ収集されます。**
+ 操作に関する深度 – **これは、アプリケーションモニタで Cookie が有効化されている場合にのみ収集されます。**
+ ページタグ — ページイベントにタグを追加して、ページをグループ化できます。詳細については、「[ページグループを使用する](CloudWatch-RUM-page-groups.md)」を参照してください。

### ユーザーエージェントのメタデータ
<a name="CloudWatch-RUM-datacollected-metadata-useragent"></a>

ユーザーエージェントのメタデータには、以下が含まれます。
+ ブラウザで使用する言語
+ ブラウザ名
+ ブラウザのバージョン
+ オペレーティングシステム名
+ オペレーティングシステムのバージョン
+ デバイスタイプ
+ プラットフォームの種類

### 地理的位置情報のメタデータ
<a name="CloudWatch-RUM-datacollected-metadata-geolocation"></a>

地理的位置情報のメタデータには以下が含まれます。
+ 国コード
+ 区域コード

### ドメインメタデータ
<a name="CloudWatch-RUM-datacollected-metadata-domain"></a>

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

## RUM イベントの詳細
<a name="CloudWatch-RUM-datacollected-eventDetails"></a>

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

### セッション開始イベント
<a name="CloudWatch-RUM-datacollected-sessionstart"></a>

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

### ページビュースキーマ
<a name="CloudWatch-RUM-datacollected-pageview"></a>

**ページビュー**イベントには、以下のプロパティが含まれます。ページビューコレクションを非アクティブ化するように、ウェブクライアントを設定できます。詳細については、「[CloudWatch RUM web client documentation](https://github.com/aws-observability/aws-rum-web/blob/main/docs/cdn_installation.md)」を参照してください。


| 名前 | 型 | 説明 | 
| --- | --- | --- | 
|  **ページ ID** |  String  |  アプリケーション内でこのページを一意に表す ID です。デフォルトでは URL パスが使用されます。  | 
|  **親ページ ID** |  String  |  現在のページに移動する時点で、ユーザーに対し表示されていたページの ID です。**このデータは、アプリケーションモニターで Cookie が有効化されている場合にのみ収集されます。**  | 
|  **操作に関する深度** |  String  |  **このデータは、アプリケーションモニターで Cookie が有効化されている場合にのみ収集されます。**  | 

### JavaScript エラースキーマ
<a name="CloudWatch-RUM-datacollected-JavaScriptError"></a>

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


| 名前 | 型 | 説明 | 
| --- | --- | --- | 
|  **エラータイプ** |  String  |  エラーの名前 (存在する場合)。詳細については、「[Error.prototype.name](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/name)」を参照してください。 ブラウザによっては、エラータイプをサポートしていない場合があります。  | 
|  **エラーメッセージ** |  String  |  エラーが返すメッセージ。詳細については、「[Error.prototype.message](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/message)」を参照してください。エラーフィールドが存在しない場合、これはエラーイベントのメッセージになります。詳細については、「[ErrorEvent](https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent)」を参照してください。 異なるブラウザ間では、エラーメッセージが一貫しない場合があります。  | 
|  **スタックトレース** |  String  |  エラーのスタックトレース (それが存在する場合) は 150 文字に切り捨てられます。詳細については、「[Error.prototype.stack](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/Stack)」を参照してください。 ブラウザによっては、スタックトレースをサポートしていない場合があります。  | 

### DOM イベントスキーマ
<a name="CloudWatch-RUM-datacollected-DOMEvent"></a>

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


| 名前 | 型 | 説明 | 
| --- | --- | --- | 
|  **イベント** |  String  |  クリック、スクロール、ホバーなど、DOM イベントの種類。詳細については、「[イベントのリファレンス](https://developer.mozilla.org/en-US/docs/Web/Events)」を参照してください。  | 
|  **要素** |  String  |  DOM 要素タイプ  | 
|  **要素 ID** |  String  |  イベントを生成した要素が ID を持つ場合、その ID がこのプロパティに格納されます。詳細については、「[Element.id](https://developer.mozilla.org/en-US/docs/Web/API/Element/id)」を参照してください。  | 
|  **CSSLocator** |  String  |  DOM 要素の識別に使用される CSS ロケーター。  | 
|  **InteractionId** |  String  |  ユーザーと UI 間のインタラクションにおける一意の ID です。  | 

### ナビゲーションイベントスキーマ
<a name="CloudWatch-RUM-datacollected-NavigationEvent"></a>

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

ナビゲーションイベントでは、[ナビゲーションタイミングレベル 1](https://www.w3.org/TR/navigation-timing/#performancetiming)、および[ナビゲーションタイミングレベル 2](https://w3c.github.io/navigation-timing) の API を使用します。レベル 2 の API は、すべてのブラウザーでサポートされている訳ではないため、これらの新しいフィールドはオプションです。

**注記**  
タイムスタンプのメトリクスは、[DOMHighResTimestamp](https://www.w3.org/TR/hr-time-2/#sec-domhighrestimestamp) に基づいています。レベル 2 の API のデフォルトでは、すべてのタイミングが `startTime` に対し相対的です。また、レベル 1 では、タイムスタンプメトリクスから `navigationStart` メトリクスを減算して相対値を算出します。タイムスタンプの値はすべてミリ秒単位で表示されます。

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


| 名前 | 型 | 説明 | 注意事項 | 
| --- | --- | --- | --- | 
|  **initiatorType** |  String  |  パフォーマンスイベントを開始したリソースのタイプを表します。 |  **値:** 「ナビゲーション」 **レベル 1:** 「ナビゲーション」 **レベル 2:** entryData.initiatorType | 
|  **navigationType** |  String  |  ナビゲーションのタイプを表します。この属性は必須ではありません。 |  **値:** この値は以下のいずれかにする必要があります。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM-datacollected.html) | 
|  **startTime** |  Number  |  イベントがトリガーされるタイミングを示します。 |  **値:** 0 **レベル 1:** entryData.navigationStart - entryData.navigationStart  **レベル 2:** entryData.startTime | 
|  **unloadEventStart** |  Number  |  ウィンドウ内の前のドキュメントが、アンロードを (`unload` イベントがスローされた後に) 開始したタイミングを示します。 |  **値:**先に表示されたドキュメントが存在しないか、そのドキュメントもしくは必要なリダイレクトの 1 つでオリジンが異なっている場合、返される値は 0 です。 **レベル 1:** <pre>entryData.unloadEventStart > 0<br />  ? entryData.unloadEventStart - entryData.navigationStart<br />  : 0<br /></pre> **レベル 2:** entryData.unloadEventStart | 
|  **promptForUnload** |  Number  |  ドキュメントのアンロードに要した時間。つまり `unloadEventStart` と `unloadEventEnd` の間の時間です。`UnloadEventEnd` は、アンロードイベントのハンドラが終了したタイミングを、ミリ秒単位の時間で表します。 |  **値:**先に表示されたドキュメントが存在しないか、そのドキュメントもしくは必要なリダイレクトの 1 つでオリジンが異なっている場合、返される値は 0 です。 **レベル 1:** entryData.unloadEventEnd - entryData.unloadEventStart **レベル 2:** entryData.unloadEventEnd - entryData.unloadEventStart | 
|  **redirectCount** |  Number  |  現在のブラウジングコンテキストの下で行われた、最後の非リダイレクトナビゲーション以降のリダイレクトの数を表す数値。 この属性は必須ではありません。 |  **値:**リダイレクトが存在しない場合、またはリダイレクトがあってもそのオリジンが送信先ドキュメントと異なっている場合、返される値は 0 です。 **レベル 1:** 利用不可 **レベル 2:** entryData.redirectCount | 
|  **redirectStart** |  Number  |  最初の HTTP リダイレクトが開始された時刻。  |  **値:**リダイレクトが存在しない場合、またはリダイレクトがあってもそのオリジンが送信先ドキュメントと異なっている場合、返される値は 0 です。 **レベル 1:** <pre>entryData.redirectStart > 0<br />  ? entryData.redirectStart - entryData.navigationStart<br />  : 0</pre> **レベル 2:** entryData.redirectStart | 
|  **redirectTime** |  Number  |  HTTP リダイレクトに要した時間。これは、`redirectStart` と `redirectEnd` の間の差です。  |  **レベル 1:**: entryData.redirectEnd - entryData.redirectStart **レベル 2:**: entryData.redirectEnd - entryData.redirectStart | 
|  **workerStart** |  Number  |  これは `PerformanceResourceTiming` インターフェイスのプロパティです。この値は、ワーカースレッドでのオペレーションの開始を示します。 この属性は必須ではありません。 |  **値:** Service Worker スレッドがすでに実行中である、またはそのスレッドを開始する直前である場合、このプロパティは `FetchEvent` をディスパッチする直前の時間を返します。リソースが Service Worker によって傍受されない場合は 0 を返します。 **レベル 1:** 利用不可 **レベル 2:** entryData.workerStart | 
|  **workerTime** |  Number  |  リソースが Service Worker によって傍受されている場合、この値にはワーカースレッドでの処理に要する時間が返されます。 この属性は必須ではありません。 |  **レベル 1:** 利用不可  **レベル 2:** <pre>entryData.workerStart > 0<br />   ? entryData.fetchStart - entryData.workerStart<br />   : 0</pre>  | 
|  **fetchStart** |  Number  |  ブラウザで、HTTP リクエストによるドキュメントのフェッチが準備ができた時刻。これは、アプリケーションキャッシュがチェックされる前のタイミングです。 |  **レベル 1:**  <pre>: entryData.fetchStart > 0<br />  ? entryData.fetchStart - entryData.navigationStart<br />  : 0</pre> **レベル 2:** entryData.fetchStart | 
|  **domainLookupStart** |  Number  |  ドメインルックアップが開始された時間。 |  **値:** 永続接続が使用されている場合、または情報がキャッシュまたはローカルリソースに格納されている場合、この値は `fetchStart` と同じ値になります。 **レベル 1:** <pre>entryData.domainLookupStart > 0<br />  ? entryData.domainLookupStart - entryData.navigationStart<br />  : 0</pre> **レベル 2:** entryData.domainLookupStart | 
|  **dns** |  Number  |  ドメインルックアップに必要な時間。 |  **値:** リソースと DNS レコードがキャッシュされている場合、この値には 0 が想定されます。 **レベル 1:** entryData.domainLookupEnd - entryData.domainLookupStart **レベル 2:** entryData.domainLookupEnd - entryData.domainLookupStart | 
|  **nextHopProtocol** |  String  |  リソースの取得に使用されるネットワークプロトコルを表す文字列。 この属性は必須ではありません。 |  **レベル 1:** 利用不可 **レベル 2:** entryData.nextHopProtocol | 
|  **connectStart** |  Number  |  ユーザーエージェントがドキュメントを取得するためにサーバーへの接続を確立した時点の直前の時間。 |  **値:** RFC2616 の永続接続が使用されている場合、または現在のドキュメントが関連するアプリケーションキャッシュまたはローカルリソースから取得された場合、この属性は値として `domainLookupEnd` を返します。 **レベル 1:** <pre>entryData.connectStart > 0<br />  ? entryData.connectStart - entryData.navigationStart<br />  : 0</pre> **レベル 2:** entryData.connectStart  | 
|  **接続** |  Number  |  転送のための接続の確立、または SSL 認証の実行に必要な時間を測定します。また、ブラウザによって発行される同時リクエストが多すぎる場合の、ブロック時間の長さも含まれます。  |  **レベル 1:** entryData.connectEnd - entryData.connectStart **レベル 2:** entryData.connectEnd - entryData.connectStart | 
|  **secureConnectionStart** |  Number  |  現在のページの URL スキームが「https」の場合、この属性は、ユーザーエージェントが現在の接続を保護するためのハンドシェイクプロセスを開始する直前の時間を返します。HTTPS を使用しない場合は 0 を返します。URL スキームの詳細については、「[URL representation](https://url.spec.whatwg.org/#concept-url-scheme)」を参照してください。  |  **計算式:** entryData.secureConnectionStart | 
|  **tlsTime** |  Number  |  SSL ハンドシェイクを完了するのに要した時間。  |  **レベル 1:** <pre>entryData.secureConnectionStart > 0<br />   ? entryData.connectEnd - entryData.secureConnectionStart<br />   : 0</pre> **レベル 2:** <pre>entryData.secureConnectionStart > 0<br />   ? entryData.connectEnd - entryData.secureConnectionStart<br />   : 0</pre>  | 
|  **requestStart** |  Number  |  ユーザーエージェントが、サーバー、関連するアプリケーションキャッシュ、またはローカルからのリソースに対する要求を開始した時点の直前の時間。  | **レベル 1:** <pre>: entryData.requestStart > 0<br />  ? entryData.requestStart - entryData.navigationStart<br />  : 0<br /></pre> **レベル 2:** entryData.requestStart | 
|  **timeToFirstByte** |  Number  |  リクエストが発行された後、情報の最初のバイトを受信するまでに要した時間。この時間は `startTime` に対して相対的です。  | **レベル 1:** entryData.responseStart - entryData.requestStart **レベル 2:** entryData.responseStart - entryData.requestStart | 
|  **responseStart** |  Number  |  ユーザーエージェントの HTTP パーサーが、関連するアプリケーションキャッシュ、ローカルリソース、またはサーバーから、最初の応答バイトを受信した直後の時間。  | **レベル 1:** <pre>entryData.responseStart > 0<br />   ? entryData.responseStart - entryData.navigationStart<br />   : 0</pre> **レベル 2:** entryData.responseStart   | 
|  **responseTime** |  String  |  関連するアプリケーションキャッシュ、ローカルリソース、またはサーバーから、バイト形式の完全な応答を受信するまでに要した時間。  | **レベル 1:** <pre>entryData.responseStart > 0<br />  ? entryData.responseEnd - entryData.responseStart<br />  : 0</pre> **レベル 2:** <pre>entryData.responseStart > 0<br />  ? entryData.responseEnd - entryData.responseStart<br />  : 0</pre>  | 
|  **domInteractive** |  Number  |  パーサーがメインドキュメントでの作業を終了し、HTML DOM が構築された時間。この際には、`Document.readyState` が「interactive」に変化し、それに対応する `readystatechange` イベントがスローされます。  | **レベル 1:** <pre>entryData.domInteractive > 0<br />  ? entryData.domInteractive - entryData.navigationStart<br />  : 0</pre> **レベル 2:** entryData.domInteractive  | 
|  **domContentLoadedEventStart** |  Number  |  ユーザーエージェントが、現在のドキュメントで DOMContentLoaded イベントを発行した時点の直前の時間を表します。DOMContentLoaded イベントは、最初の HTML ドキュメントが完全に読み込まれ、解析されたタイミングで発行されます。この時点では、メイン HTML ドキュメントの解析が完了し、ブラウザがレンンダーツリーの作成を開始しており、また、サブリソースをロードする必要があります。これにより、スタイルシート、画像、およびサブフレームのローディングが完了するのを待つことはありません。  | **レベル 1:** <pre>entryData.domContentLoadedEventStart > 0<br />  ? entryData.domContentLoadedEventStart - entryData.navigationStart<br />  : 0<br /></pre> **レベル 2:** entryData.domContentLoadedEventStart  | 
|  **domContentLoaded** |  Number  |  これは、レンダーツリー構築の開始と終了の時間で、`domContentLoadedEventStart` と `domContentLoadedEventEnd` によりマークされます。この値により、CloudWatch RUM は実行の追跡を行います。このプロパティ値は、`domContentLoadedStart` と `domContentLoadedEnd` の間の差です。 この期間の間に、DOM と CSSOM の準備が整います。このプロパティは、非同期的および動的に作成されたスクリプトを除き、スクリプトが実行されるまで待機します。また、スクリプトがスタイルシートに依存している場合、`domContentLoaded` はスタイルシートのために待機します。画像のためには待機しません。  `domContentLoadedStart` そして `domContentLoadedEnd` での実際の値は、Google Chrome の ネットワークパネルに表示される `domContentLoaded` に近似します。この値は、ページの読み込みプロセスの開始から、HTML DOM と CSSOM のレンダリングツリーが構築されるまでに要した時間を示します。ナビゲーションメトリクスの場合、`domContentLoaded` 値は開始値と終了値間の差を表します。これは、サブリソースのダウンロードとレンダリングツリー構築に要した時間のみを反映します。   | **レベル 2:** entryData.domContentLoadedEventEnd – entryData.domContentLoadedEventStart  **レベル 2:** entryData.domContentLoadedEventEnd – entryData.domContentLoadedEventStart  | 
|  **domComplete** |  Number  |  現在のドキュメントの準備を完了したことを、ブラウザが知らせてきた時点の直前の時間。この時点で、画像などのサブリソースの読み込みは完了しています。これには、CSS や同期 JavaScript などのブロッキングコンテンツのダウンロードにかかる時間も含まれます。この値は、Google Chrome のネットワークパネルに表示される `loadTime` の値に近似します。  | **レベル 1:** <pre>entryData.domComplete > 0<br />  ? entryData.domComplete - entryData.navigationStart<br />  : 0<br /></pre> **レベル 2:** entryData.domComplete  | 
|  **domProcessingTime** |  Number  |  レスポンスとロードイベント開始までの間の合計時間。  | **レベル 1:** entryData.loadEventStart - entryData.responseEnd **レベル 2:** entryData.loadEventStart - entryData.responseEnd  | 
|  **loadEventStart** |  Number  |  現在のドキュメントの `load` イベントが発行された直前の時間。 |  **レベル 1:** <pre>entryData.loadEventStart > 0<br />  ? entryData.loadEventStart - entryData.navigationStart<br />  : 0<br /></pre> **レベル 2:** entryData.loadEventStart | 
|  **loadEventTime** |  Number  |  `loadEventStart` と `loadEventEnd` の違い。このロードイベントを待っている追加の関数またはロジックは、この間に起動されます。 |  **レベル 1:** entryData.loadEventEnd - entryData.loadEventStart **レベル 2:** entryData.loadEventEnd - entryData.loadEventStart | 
|  **duration** |  String  |  この期間は、ページの合計読み込み時間です。メインページとそのすべての同期サブリソースをダウンロードし、さらにページをレンダリングするため要した時間を記録します。この後も、スクリプトなどの非同期リソースのダウンロードは継続します。この値は、`loadEventEnd` と `startTime` の 2 つのプロパティ間の差になります。  | **レベル 1:** entryData.loadEventEnd - entryData.navigationStart **レベル 2:** entryData.duration | 
|  **headerSize** |  Number  |  `transferSize` と `encodedBodySize` の間の差を返します。 この属性は必須ではありません。  | **レベル 1:** 利用不可 **レベル 2:** entryData.transferSize – entryData.encodedBodySize **レベル 2:** entryData.transferSize – entryData.encodedBodySize | 
|  **compressionRatio** |  Number  |  `encodedBodySize` と `decodedBodySize` の比率です。`encodedBodySize` の値は、HTTP ヘッダーを除くリソースの圧縮後のサイズです。`decodedBodySize` の値は、HTTP ヘッダーを除くリソースの解凍後のサイズです。 この属性は必須ではありません。  | **レベル 1:** 利用不可。 **レベル 2:**<pre>entryData.encodedBodySize > 0<br />  ? entryData.decodedBodySize / entryData.encodedBodySize<br />  : 0</pre>  | 
|  **navigationTimingLevel** |  Number  |  ナビゲーションタイミング API のバージョン。  | **値:** 1 または 2  | 

### リソースイベントスキーマ
<a name="CloudWatch-RUM-datacollected-ResourceEvent"></a>

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

タイムスタンプのメトリクスは、型定義 [DOMHighResTimeStamp](https://www.w3.org/TR/hr-time-2/#sec-domhighrestimestamp) に基づきます。レベル 2 の API のデフォルトでは、すべてのタイミングは `startTime` に対して相対的です。レベル 1 API の場合には、タイムスタンプのメトリクスから `navigationStart` メトリクスが減算され、相対値が取得されます。タイムスタンプの値はすべてミリ秒単位で表示されます。

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


| 名前 | 型 | 説明 | 注意事項 | 
| --- | --- | --- | --- | 
|  **targetUrl** |  String  |  リソースの URL を返します。 |  **計算式:** [entryData.name](http://entrydata.name/) | 
|  **initiatorType** |  String  |  パフォーマンスリソースイベントを開始したリソースのタイプを表します。 |  **値:** 「resource」 **計算式:** entryData.initiatorType | 
|  **duration** |  String  |  `responseEnd` と `startTime` の 2 つのプロパティ間の差を返します。この属性は必須ではありません。  | **計算式:** entryData.duration | 
|  **transferSize** |  Number  |  レスポンスヘッダーフィールドとレスポンスペイロード本体を含む、フェッチされたリソースのサイズ (オクテット単位) を返します。この属性は必須ではありません。  | **計算式:** entryData.transferSize | 
|  **fileType** |  String  |  ターゲット URL パターンから派生した拡張。  |   | 

### 最大のコンテンツフルペイントイベントのスキーマ
<a name="CloudWatch-RUM-datacollected-LargestPaintEvent"></a>

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

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


| 名前 | 説明 | 
| --- | --- | 
|  **値** |  詳細については、「[Web Vitals](https://web.dev/vitals/)」を参照してください。 | 

### 最初の入力遅延イベント
<a name="CloudWatch-RUM-datacollected-FirstInputDelayEvent"></a>

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

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


| 名前 | 説明 | 
| --- | --- | 
|  **値** |  詳細については、「[Web Vitals](https://web.dev/vitals/)」を参照してください。 | 

### 累積的レイアウトシフトイベント
<a name="CloudWatch-RUM-datacollected-CumulativeShift"></a>

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

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


| 名前 | 説明 | 
| --- | --- | 
|  **値** |  詳細については、「[Web Vitals](https://web.dev/vitals/)」を参照してください。 | 

### HTTP イベント
<a name="CloudWatch-RUM-datacollected-HTTP"></a>

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

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


| 名前 | 説明 | 
| --- | --- | 
|  **リクエスト** |  リクエストフィールドには以下が含まれます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM-datacollected.html)  | 
|  **レスポンス** |  レスポンスには以下が含まれます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM-datacollected.html)  | 
|  **[エラー]** |  このエラーフィールドには以下が含まれます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM-datacollected.html)  | 

### X-Ray トレースイベントのスキーマ
<a name="CloudWatch-RUM-datacollected-xraytraceEvent"></a>

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

X-Ray トレースイベントのスキーマの詳細については、「[AWS X-Ray セグメントのドキュメント](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html)」を参照してください。

# 単一ページアプリケーションのルート変更の時間計測
<a name="CloudWatch-RUM-route-change-timing"></a>

従来のマルチページアプリケーションでは、ユーザーが新しいコンテンツのロードを要求すると、ユーザーは実際にはサーバーから新しい HTML ページを要求することになります。その結果、CloudWatch RUM ウェブクライアントは、通常のパフォーマンス API メトリクスを使用してロード時間をキャプチャします。

しかし、単一ページのウェブアプリケーションでは、JavaScript と Ajax を使用して、サーバーから新しいページをロードせずにインターフェイスが更新されます。単一ページの更新は、ブラウザの時間計測 API では記録されず、ルート変更の時間計測を使用します。

CloudWatch RUM は、サーバーからの全ページロードと単一ページ更新の両方のモニターリングをサポートしていますが、次の違いがあります。
+ ルート変更の時間計測については、`tlsTime`、`timeToFirstByte` などのようなブラウザ提供のメトリクスはありません。
+ ルート変更の時間計測については、`initiatorType` フィールドは `route_change` になります。

CloudWatch RUM ウェブクライアントは、ルートの変更につながる可能性のあるユーザーインタラクションをリッスンし、そのようなユーザーインタラクションが記録されると、ウェブクライアントはタイムスタンプを記録します。次の両方に該当すると、ルート変更の時間計測が開始されます。
+ ブラウザ履歴 API (ブラウザの [進む] ボタンと [戻る] ボタンを除く) を使用してルート変更を実行した。
+ ルート変更検出時刻と最新のユーザーインタラクションタイムスタンプの差が 1000 ms 未満。これにより、データスキューが回避されます。

その後、ルート変更の時間計測が始まると、進行中の AJAX リクエストと DOM ミューテーションがない場合、その時間計測は完了します。このとき、最後に完了したアクティビティのタイムスタンプが完了タイムスタンプとして使用されます。

進行中の AJAX リクエストまたは DOM ミューテーションが 10 秒 (デフォルト) を超えると、ルート変更の時間計測がタイムアウトします。この場合、CloudWatch RUM ウェブクライアントは、このルート変更の時間計測を記録しなくなります。

その結果、ルート変更イベントの期間は次のように計算されます。

```
(time of latest completed activity) - (latest user interaction timestamp)
```