Amazon CloudWatch Internet Monitor を使ってネットワークパフォーマンスを監視する

# 概要

* re:Invent 2022の直前に発表された **Amazon CloudWatch Internet Monitor** なる機能について実際に試しつつ、どんな機能かをまとめてみました。

https://aws.amazon.com/jp/about-aws/whats-new/2022/11/amazon-cloudwatch-internet-monitor-preview/

# Amazon CloudWatch Internet Monitor とは

* **Amazon CloudWatch** の新規プレビュー機能として発表されたのが、**Amazon CloudWatch Internet Monitor** です。
* ざっくり要約すると、**Amazon Virtual Private Cloud (VPC)**、**Amazon CloudFront ディストリビューション**、**Amazon WorkSpaces ディレクトリ** を通してアプリケーションのパフォーマンスを監視する機能になります。
* パフォーマンス？と言っても何を見れるの？となりますが、本機能の特徴は、AWS 上で稼働しているアプリケーションを利用するエンドユーザと AWS リソース間のインターネットトラフィックのパフォーマンスについてを可視化し、表示できることにあるように思います。
* また、Internet Monitor を使用することで、さまざまな地理的な場所でネットワークのエンドユーザーが感じるインターネット上で発生する問題を認識することができると謳っています。

# 対応リージョン

* **Internet Monitor は、20 の AWS リージョンでパブリック プレビューとして利用可能**

* アメリカ大陸: 米国東部 (オハイオ) 、米国東部 (バージニア北部)、米国西部 (北カリフォルニア)、米国西部 (オレゴン)、カナダ (中部)、南米 (サンパウロ)

* アジアおよび太平洋地域: アジア太平洋地域(香港)、アジア太平洋地域 (ムンバイ)、アジア太平洋地域 (ソウル)、アジア太平洋地域 (シンガポール)、アジア太平洋地域 (シドニー)、**アジア太平洋地域 (東京)**。

* ヨーロッパ、中東、アフリカ:アフリカ (ケープタウン)、ヨーロッパ (フランクフルト)、ヨーロッパ (アイルランド)、ヨーロッパ (ロンドン)、ヨーロッパ (ミラノ)、ヨーロッパ (パリ)、ヨーロッパ (ストックホルム)、中東 (バーレーン)

**また、現時点(2022/11/29時点)ではAWS CloudFormationのサポートがされていないようです。**

## 料金

* プレビュー期間中は、サービスに関連する費用は発生し無いようです。
* ただし、Internet Monitor はメトリクスとログを CloudWatch に提供するため、追加した CloudWatch ログと CloudWatch メトリクスに対しては課金されるようです。

# 試してみた

* **Internet Monitor** を有効化する際には、まず、Amazon CloudWatch のリソースに移ります。
* そうすると、左メニューに「Internet Monitor (Preview)」なるものが表示されております。
* なので、「Internet Monitor (Preview)」に移動し、「Create monitor」をクリックします。

![スクリーンショット 2022-11-28 23.50.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563635/3ad01c8e-2f42-c9e4-58ad-695a9bee8256.png)

* Monitor の名前の入力を求められるので、入力していきます。
* 次に「Specify resource」と表示があるので、「Add resources」を選択します。

![スクリーンショット 2022-11-28 23.51.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563635/55271a46-f5eb-5e30-2b37-891a390df076.png)

* 「Add resources」を選択すると、下記のように **CloudFront** のリソースと **VPC** のリソースが選択できるようになるので、監視したいリソースを選択します。

![スクリーンショット 2022-11-28 23.53.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563635/2856885d-39de-06a3-9d4c-719f2037cda4.png)

* モニターを作成すると、作成したモニターが一覧に表示されます。

![スクリーンショット 2022-11-28 23.58.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563635/8ac25327-b5ee-826c-a088-d54abcabefe8.png)

* 作成したモニターをクリックすることで、該当のリソースに関連するネットワークパフォーマンスのデータを確認することができます。(表示されるまでに10分くらい時間がかかります。)
* まず下記に表示したのが、「Overview」になります。
  * 「Health Score」: グローバルトラフィックのパフォーマンスと可用性に関する情報が表示されま
    * AWS とさまざまなネットワークプロバイダーやサービスの地理的な場所との間のネットワークトラフィックのパフォーマンスと可用性に関するデータを表示するようです。
    * 取得しているデータを分析し、ベースラインと比較して、アプリケーションのパフォーマンスと可用性がいつ低下したかを検出できます。
  * 「Internet traffic overview」: 監視対象のすべての場所の全体的なイベントステータスが表示されます。

![スクリーンショット 2022-11-29 0.47.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563635/c0cd1ac6-624e-6b95-f96f-b01ef7584e33.png)

* 検証の時はネットワーク障害や遅延を出すのが難しかったので、下記のブログより実際のアプリケーションにおけるトラフィックに問題が起きた時の表示のされ方を掲載いたします。[(画像引用元)](https://aws.amazon.com/jp/blogs/aws/cloudwatch-internet-monitor-end-to-end-visibility-into-internet-performance-for-your-applications/)

![phoebe5b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563635/f5f41532-b53e-36da-6561-f2a28c47a9c4.png)


* 「Historical Explorer」のタブ移動すると下記のような画面が表示されます。
* 可用性、パフォーマンス、転送バイト数 (またはクライアント接続数、 WorkSpaces ディレクトリのみ)、および AWS リージョン、地域間の往復時間などを表示します。

![スクリーンショット 2022-11-29 0.38.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563635/40462b22-ca2f-b6d9-eeca-8d2de11a87fe.png)

* 「Traffic insights」のタブ移動すると下記のような画面が表示されます。
* 全体的なトラフィックのデータと、その下に、総トラフィック (バイト) に基づいて監視されている上位のクライアントの場所が表示されます。

![スクリーンショット 2022-11-29 0.36.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563635/46decd9a-0570-f8f2-d3a6-f9e577d4fc9d.png)

![スクリーンショット 2022-11-29 0.37.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563635/dad5717b-ac97-530d-a15e-07fde7d7a336.png)


# まとめ

* まだプレビュー版ではあるものの、アプリケーションとエンドユーザ間のネットワークパフォーマンスを監視できることで、地理的な場所におけるネットワーク障害の可視化やヘルスイベントを Amazon EventBridge に送信して、通知させるといった監視が可能となりそうです。

* Internet Monitor の仕組みが気になったので調べてみると、さすが AWS さんドキュメントを用意してくれている。
* 本記事では仕組みまでは切り込まないが、気になる方がいればぜひ閲覧することをオススメします。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-IM-inside-internet-monitor.html


# 参考文献

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-InternetMonitor.html

https://aws.amazon.com/jp/blogs/aws/cloudwatch-internet-monitor-end-to-end-visibility-into-internet-performance-for-your-applications/