CloudWatch でクライアントアプリのモニタリングができる Real-User Monitoring for Amazon CloudWatch(RUM) がリリースされたので試してみた #reinvent

2021.11.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ユーザーの動きをニアリアルタイムで収集し、ページのロード時間、JS エラー、HTTP エラー、利用ブラウザやユーザーのページ遷移履歴など、アプリのパフォーマンスや UX の向上に役立てられるデータを CloudWatch 上のダッシュボードで可視化できる新機能、Real-User Monitoring for Amazon CloudWatchが リリースされました。

使い方

CloudWatch RUM から生成される JavaScript のコードスニペットをクライアントアプリに埋め込んでデータを収集し、ダッシュボードで可視化します。2021.11.30 時点では JavaScript ベースのアプリケーションまたは ReactNative 製のアプリケーションのみの対応となっています。

試してみた

ざっくりと試してみました。サンプルで用意した Web ページのトラフィックがそこまで多くないため有用なデータは収集できないかもしれませんが、使い方の参考になれば幸いです。

CloudWatch メニューから RUM を選択

cw-rum

App Monitor を追加する

Monitor というリソースで RUM の管理を行います。

Monitor 名と対象のドメイン情報を入力

収集したいデータを選択

監視対象にしたいデータを選択します。RUM には以下の三つのプラグインが用意されています。必要に応じて選択します。

  • パフォーマンステレメトリ:アプリケーションのリソースがいつどのタイミングでロード、レンダリングされたかを記録。このデータに基づいてユーザー体験を可視化することができます。
  • JavaScript エラー:クライアントアプリで発生したエラーを記録
  • HTTP エラー:HTTP エラーを記録

クッキーの許可の有無 & 収集するセッションのサンプリング数

CloudWatch RUM の Web クライアントがユーザーのブラウザに Cookie を設定することを許可します。ユーザーのページ遷移情報を得るためには Cookie を利用する必要があるので、設定しない場合はページごとに集計されたデータのみの収集に限られます。

ログデータの永続化

RUM で収集されたデータは 30 日間保持され、その後破棄されます。CloudWatch Logs へデータを保存したい場合はここで設定します。

認証

イベントデータを CloudWatch へ送信する際の認証設定です。デフォルトでは Cognito Identity Pool が選択され、そのまま進めると RUM が Cognito Identity Pool を作成してくれます。

データを収集するページの設定

デフォルトで全てのページからデータを収集しますが、指定したページのみからデータを収集したいときはここで設定します。

X-Ray の有効化

X-Ray を CloudWatch RUM と併用することで end-to-end のモニタリングが可能になります。後述しますが、X-Ray の課金は CloudWatch RUM の利用料とは別に発生します。

JS コードスニペットを取得

以下のようにコードスニペットが生成されるのでこれをクライアントアプリケーションコードに差し込んで CloudWatch RUM の設定は完了です。

ダッシュボードでデータを確認する

残念ながらトラフィックが足りず可視化に十分なデータが取得できなかったため、ダッシュボードがどういうふうに見えるかはre:Invent2021のAWS on Airセッション動画から拝借しました。

セッション動画ではアプリにバグがあった時にどれだけのユーザーにどんな影響があったのかをCloudWatch RUMで可視化するデモが紹介されていました。

価格

CloudWatch RUM はページビュー、HTTP エラー、JS エラーなどのクライアントアプリからのイベントの数に応じた従量課金制です。

100,000 イベントあたり 1$の課金が発生します。例えば、月に 500,000 回訪問される Web アプリでページのロード速度とエラー収集に CloudWatch RUM を 100%サンプリングでデータ収集する場合、ユーザー一回の訪問につき 20 のイベントと 8 つのエラーが発生した場合、料金は以下のようになります。

RUMデータイベントの総数 = 20データイベント per 訪問 * 500,000訪問 = 10,000,000データイベント
10,000,000個のRUMデータ・イベントに対する料金は100,000個のデータ・イベントあたり1ドルなので:10,000,000* $1/100,000 = $100

同時に利用することが多い CloudWatch Logs 、 AWS X-Ray 、Cognito などの課金は別途追加で発生します。

参考:Example 19 - CloudWatch RUM

利用可能なリージョン

以下のリージョンで利用可能です(2021.11.30 時点)。

  • US East (N. Virginia)
  • US East (Ohio)
  • US West (Oregon)
  • Europe (Frankfurt)
  • Europe (Stockholm)
  • Europe (Ireland)
  • Europe (London)
  • Asia Pacific (Tokyo)
  • Asia Pacific (Singapore)
  • Asia Pacific (Sydney)

参考