4ステップで始めるCloudWatch Network Flow Monitor

# はじめに
12/2から12/6にラスベガスでre:Invnet2024が開催されました。re:Invnet2024で発表されたCloud Operations関連のアップデートにおいて、Amazon CloudWatch Network Monitorについて触ってみたところ、たった4ステップで簡単に始められたので共有させていただきます。

re:Invent近辺のCloud Operations関連のアップデート、トピックはAWS SA堀さんが日本語の記事にしてくれていますので、ぜひそちらを参照してください。

https://aws.amazon.com/jp/blogs/news/top-announcements-for-aws-cloud-operations-at-reinvent-2024/

それでは早速始めていきましょう。

# Step1：CloudWatch Network Flow Monitor 有効化
CloudWatchの画面で以下の流れで設定していきます。
「フローモニター」を選択して、「ネットワークフローモニターを有効にする」をクリック
![cw001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/144f950a-91ca-7ed7-582c-e0884ebae7fe.jpeg)

保留中に変わります。
有効化が完了されるまで数分かかりましたので、この間に次のステップに進みます。
![cw002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/94ee54be-bd60-f314-960e-13c6c68dbd45.jpeg)

ちなみに有効化が完了すると以下の画面になります。
![cw003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/637e3016-454f-2b52-698b-7c7d959a4064.jpeg)


# Step2：IAMロールに対象ポリシーをアタッチ
続いて必要となるポリシー「CloudWatchNetworkFlowMonitorAgentPublishPolicy」をアタッチしていきます。

:::note warn
次のステップでエージェントをインストールできるOSとKernel versionに制限があるということですので、ポリシーアタッチの段階からご注意ください。Windowsは対象外な点と、LinuxもKernel versionが5.8以降である必要があります。

![cw_instances.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/f9a820cd-5268-5c05-273b-67b83863aed5.png)

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-NetworkFlowMonitor-agents.html
:::

以下はEC2インスタンスにアタッチする例です。
EC2にアタッチしているポリシーを選択して、「許可を追加」を選択します。
![cw004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/de92a805-01af-439b-ab24-6fd0292ec029.png)

検索欄に「CloudWatchNetworkFlowMonitorAgentPublishPolicy」を入力して、表示されたポリシーにチェックを入れて「許可を追加」をクリックします。
![cw005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/0dbf6201-e4be-cdbd-9434-4b4000fef926.png)

ロールにポリシーがアタッチされました。
![cw006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/35565a63-6844-ad43-9e7a-41ea453099c3.png)

# Step3：Network Flow Monitor agentsをインストール
次にEC2インスタンスにNetwork Flow Monitor agentsをインストールしていきます。

AWS Systems Managerでディストリビューターを選択します。
検索窓に「AmazonCloudWatchNetworkFlowMonitorAgent」を入力して絞り込みます。
表示されたディストリビューターのラジオボタンにチェックして、「1回限りのインストール」をクリックします。
![cw007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/376a6f53-b681-138b-367c-75158b610f76.png)

コマンドの実行画面でインスタンスを指定します。他は特にデフォルト値で問題ありません。
![cw008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/6ceb34b2-a9fb-3fda-e291-df866a264494.png)

一番下の「実行」ボタンをクリックします。
![cw009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/314fe022-614c-261c-9000-9d2094e2eb36.png)

エージェントのインストールが完了しました。
![cw010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/77bbe9fa-18cf-1777-d1e0-ec7f9c3b43ea.png)

# Step4：ネットワークフローモニターの作成
いよいよ最後のステップです。
ネットワークフローモニターの画面で「モニター」タブを選択し、「モニターを作成」をクリックします。
![cw011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/024cf71b-f10f-3d6b-9b09-eed2d45c13c8.png)

モニター名にお好きな名前を入力して、ローカルリソース（今回はVPCを選択）、リモートリソース（今回は全てを選択）を選択して、「次へ」をクリックします。
リモートリソースには、S3やDynamoDBが指定できるようになっています。
![cw012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/9ed6a6d2-48ab-71a0-9d08-17562220d53a.png)

プレビューと作成画面で内容を確認して「モニターを作成」をクリックします。
![cw013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/071dc697-e41a-f83a-7207-fcb2c7b88237.png)

無事、モニターが作成されました。
![cw014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/9f0f1f85-2d9b-9168-9e69-bca5f7229d38.png)


# モニターでの監視
最後に作成されたモニターを確認してみましょう。
作成されたばかりのモニターは情報が空の状態です。
![cw015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/d793e0db-a296-beac-5f84-8756921a0848.png)

時間が経過すると情報が蓄積されていき、ステータス以外にも転送量やラウンドトリップ時間など色々なネットワークの状況が可視化されます。
![cw016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/b3fb06ac-1a0c-c372-740c-a406cd628088.png)

![cw017.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/c9410464-8231-f9e8-7ea0-92cfae73a175.png)

![cw018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/021438d7-b92f-817f-cebf-f8950ab12433.png)

再送が発生していることも見えました。
![cw019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/97492dc4-6fc9-820d-f293-e4c8240d51e7.png)

再送について「Historical Explorer」タブを選択すると詳細を見ることができました。
こちらはEC2にアタッチされたENIとELBにアタッチされたENIとの間で再送が発生していました。
トポロジによる可視化もされており、わかりやすいと感じました。
![cw020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/b31ae7d3-f908-1950-add2-bcd22e25635d.png)

# まとめ
これまでは、障害が発生した際にAWS環境内のネットワークの状況が見づらいと感じていました。（Network Monitoringはインスタンス等に対する疎通確認のため、特定インスタンスを中心としたネットワーク全体の状況は見られない）

今回、Network Flow Monitorが提供されたことで、AWS環境内のネットワークの再送等の情報がマネージメントコンソール上で簡単に見られるようになりました。システムで問題が発生した時、ネットワークの問題か、アプリケーションの問題かを切り分けするための1つの材料になると考えています。

以上、今回はCloudWatch Network Flow Monitorをお試ししてみました。
どなたかの参考になれば幸いです。

他にもCloudWatchの機能拡張がリリースされていますので、引き続きチェックしていきたいと思います。