re:Invent 2024 が始まり、新たな発表がたくさん出てきました。
今回は、Amazon CloudWatch に Network Flow Monitor を使用した AWS ワークロードのネットワークパフォーマンス監視機能が追加されたので、早速検証してみました。
アップデート概要
Amazon CloudWatch で AWS ワークロードのネットワークパフォーマンスをモニタリングできるようになった
Amazon EC2 や Amazon EKS などのコンピューティングインスタンスと、Amazon S3、Amazon RDS、Amazon DynamoDB などの AWS サービス間のワークロードのネットワークパフォーマンスを可視化できる
Network Flow Monitorでネットワークパフォーマンスを観測してみる
エージェントのインストール
CloudWatchの「フローモニター」を選択し、「ネットワークフローモニターを有効にする」を押下します。

監視対象にエージェントをインストールする必要がある。
そのため、あらかじめEC2インスタンスをデプロイしておく。
EC2インスタンスがログをNetwork Flow Monitorに転送できるように、以下のポリシーをEC2インスタンスのロールにアタッチしておく。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "networkflowmonitor:Publish" ], "Resource": "*" } ] }
Network Flow Monitor は、エージェントをインストールするためのディストリビューターパッケージを AWS Systems Manager で提供しています。
そのため、Systems Managerを開きます。

パッケージ「AmazonCloudWatchNetworkFlowMonitorAgent」で「1回限りのインストール」を押下します。

ターゲットに監視対象のEC2インスタンスを選択します。

実行の出力をS3やCloudWatchに保存できるので、必要に応じて設定しましょう。

問題なければ実行ステータスが成功になります。

モニターの作成
続いて、モニターを作成します。
今回は、ローカルリソースにEC2インスタンスを配置したサブネット、リモートリソースにS3をそれぞれ選択します。

プレビューを確認し、「モニターを作成」を押下します。

モニターが作成されました。

モニターの確認
「概要」タブでは、ネットワークヘルスインジケーターやトラフィックの概要を確認できます。
ネットワークヘルスインジケーターは、期間中にネットワークフローに問題があったかどうかの状態を表示します。


「Historical Explorer」タブでは、再送信やタイムアウトなどの情報が確認できます。

「モニターの詳細」タブでは、モニターの状態、ARN、作成日時と修正日時など、モニターに関する詳細を確認できます。

ここで、EC2とS3間に通信を発生させてみます。
例えば、EC2で以下のように定期的にファイルをアップロードするコマンドを実行してみます。
$ touch test.txt $ watch -n 1 "aws s3 cp ./test.txt s3://test-nwfmonitor-s3"
しばらくすると、モニターに値が表示されました。
RTTや転送されるデータの平均値、時系列のグラフからネットワークパフォーマンスの分析ができます。


まとめ
簡単にネットワークパフォーマンスを観測できるようになりました。
CloudWatchにより、アプリケーション、データベース、ネットワークなど様々なパフォーマンス計測ができるため、手軽にオブザーバビリティを実現することができる段階まで来ました。
これを機に、CloudWatchによるオブザーバビリティを試してみてもらえればと思います。