yuj1osm's tech blog

クラウド、セキュリティ、AIなど

Amazon CloudWatch に Network Flow Monitor を使用した AWS ワークロードのネットワークパフォーマンス監視機能が追加されました

re:Invent 2024 が始まり、新たな発表がたくさん出てきました。
今回は、Amazon CloudWatch に Network Flow Monitor を使用した AWS ワークロードのネットワークパフォーマンス監視機能が追加されたので、早速検証してみました。

docs.aws.amazon.com

アップデート概要

Amazon CloudWatch で AWS ワークロードのネットワークパフォーマンスをモニタリングできるようになった

Amazon EC2Amazon EKS などのコンピューティングインスタンスと、Amazon S3Amazon 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によるオブザーバビリティを試してみてもらえればと思います。