リアルユーザーモニタリング
CloudWatch RUM を使用すると、リアルユーザーモニタリングを実行して、実際のユーザーセッションからウェブアプリケーションのパフォーマンスに関するクライアント側のデータをほぼリアルタイムで収集し、表示することができます。可視化および分析できるデータには、ページの読み込み時間、クライアント側のエラー、ユーザーの行動などが含まれます。このデータを表示する際、すべてを集約して見ることができ、さらにお客様が使用しているブラウザやデバイスごとの内訳も確認できます。
Web クライアン ト
CloudWatch RUM Web クライアントは、Node.js バージョン 16 以上を使用して開発およびビルドされています。コードは GitHub で公開されています。このクライアントは Angular および React アプリケーションで使用できます。
CloudWatch RUM は、アプリケーションの読み込み時間、パフォーマンス、およびアンロード時間に認識できる影響を与えないように設計されています。
CloudWatch RUM 用に収集するエンドユーザーデータは 30 日間保持され、その後自動的に削除されます。RUM イベントをより長期間保存したい場合は、アプリモニターがイベントのコピーをアカウントの CloudWatch Logs に送信するように選択できます。
Web アプリケーションで広告ブロッカーによる潜在的な中断を避けたい場合は、Web クライアントを独自のコンテンツデリバリーネットワークでホストするか、自身の Web サイト内でホストすることをお勧めします。GitHub のドキュメントでは、独自のオリジンドメインから Web クライアントをホストするためのガイダンスを提供しています。
アプリケーションの認証
CloudWatch RUM を使用するには、アプリケーションが以下の 3 つのオプションのいずれかを通じて認証を行 う必要があります。
- すでにセットアップ済みの既存の ID プロバイダーからの認証を使用する
- 既存の Amazon Cognito ID プールを使用する
- CloudWatch RUM にアプリケーション用の新しい Amazon Cognito ID プールを作成させる
CloudWatch RUM にアプリケーション用の新しい Amazon Cognito ID プールを作成させるオプションが、セットアップに最も労力がかかりません。これがデフォルトのオプションです。
CloudWatch RUM は、未認証ユーザーと認証済みユーザーを分離するように設定できます。詳細については、このブログ記事 をご覧ください。
データ保護とプライバシー
CloudWatch RUM クライアントは、エンドユーザーデータの収集を支援するためにクッキーを使用することができます。これはユーザージャーニー機能に役立ちますが、必須ではありません。プライバシー関連の情報については、詳細なドキュメントをご覧ください。1
RUM を使用した Web アプリケーションのテレメトリ収集は安全であり、コンソールや CloudWatch Logs を通じて個人を特定できる情報 (PII) が露出することはありませんが、Web クライアントを通じてカスタム属性を収集できることに注意してください。このメカニズムを使用して機密データを露出させないよう注意してください。
クライアントコードスニペット
CloudWatch RUM Web クライアントのコードスニペットは自動生成されますが、要件に合わせてクライアントを設定するために手動でコードスニペットを変更することもできます。
シングルページアプリケーションでクッキーの作成を動的に有効にするには、クッキー同意メカニズムを使用してください。詳細については、このブログ記事 を参照してください。
URL 収集の無効化
個人情報を含む可能性のあるリソース URL の収集を防止します。
アプリケーションで個人を特定できる情報(PII)を含む URL を使用している場合、コードスニペットの設定で recordResourceUrl: false
を設定して、アプリケーションに挿入する前にリソース URL の収集を無効にすることを強くおすすめします。
アクティブトレースの有効化
Web クライアントで addXRayTraceIdHeader: true
を設定することで、エンドツーエンドのトレースを有効にします。これにより、CloudWatch RUM Web クライアントは HTTP リクエストに X-Ray トレースヘッダーを追加します。
この任意の設定を有効にすると、アプリケーションモニターによってサンプリングされたユーザーセッション中に行われた XMLHttpRequest および fetch リクエストがトレースされます。これにより、RUM ダッシュボード、CloudWatch ServiceLens コンソール、および X-Ray コンソールでこれらのユーザーセッションのトレースとセグメントを確認できます。
AWS コンソールでアプリケーションモニターをセットアップする際に、チェックボックスをクリックしてアクティブトレースを有効にすると、コードスニペットで自動的に設定が有効になります。
スニペットの挿入
前のセクションでコピーまたはダウンロードしたコードスニペットを、アプリケーションの <head>
要素内に挿入します。<body>
要素や他の <script>
タグの前に挿入してください。
アプリケーションに複数のページがある場合は、すべてのページに含まれる共有ヘッダーコンポーネント にコードスニペットを挿入してください。
Web クライアントを <head>
要素の可能な限り早い位置に配置することが非常に重要です!ページの HTML の下部付近に読み込まれる受動的な Web トラッカーとは異なり、RUM が最大限のパフォーマンスデータを取得するには、ページのレンダリングプロセスの早い段階でインスタンス化する必要があります。
カスタムメタデータの使用
CloudWatch RUM イベントのデフォルトのイベントメタデータにカスタムメタデータを追加できます。セッション属性は、ユーザーのセッション内のすべてのイベントに追加されます。ページ属性は、指定されたページにのみ追加されます。
カスタム属性のキー名には、このページに記載されている予約キーワードを使用しないようにしてください
ページグループの使用
ページグループを使用して、アプリケーション内の異なるページを相互に関連付けることで、ページグループの集計された分析情報を確認できます。例えば、タイプや言語別にすべてのページの集計されたページ読み込み時間を確認したい場合があります。
awsRum.recordPageView({ pageId: '/home', pageTags: ['en', 'landing']})
拡張メトリクスの使用
CloudWatch RUM によって自動的に収集されるデフォルトのメトリクスセットがあり、これらは AWS/RUM
という名前の名前空間で公開されます。これらは無料のベンダーメトリクスで、RUM がユーザーに代わって作成します。
CloudWatch RUM メトリクスを追加のディメンションと共に CloudWatch に送信することで、より詳細なビューを得ることができます。
拡張メトリクスでは、以下のディメンションがサポートされています:
- BrowserName
- CountryCode - ISO-3166 フォーマット(2 文字コード)
- DeviceType
- FileType
- OSName
- PageId
ただし、このページのガイダンスを使用して、独自のメトリクスとアラームを作成することもできます。このアプローチにより、必要な任意のデータポイント、URI、またはその他のコンポーネントのパフォーマンスを監視できます。