Amazon CloudWatch Network Flow Monitor とは
AWS ワークロードのネットワーク通信をリアルタイムで監視する機能です。
コンピューティング(Amazon EC2、EKS)と他の AWS サービス(Amazon S3、Amazon DynamoDB など)間のトラフィックにおける、パケットロスやレイテンシーといったネットワークパフォーマンスをほぼリアルタイムで可視化します。
これにより、ワークロードにおけるネットワークに起因する障害を迅速に検出し、その原因を特定することが可能になります。
主な特徴
- リアルタイム監視
ネットワークの遅延(レイテンシー)やパケットロス(データの欠損)をほぼリアルタイムで把握
- 問題の原因特定
ネットワークの問題が発生した際、原因がアプリケーション側にあるのか、AWS 基盤側にあるのかを判別
活用場面
個人的には昔はログを解析したけど原因がわからなく、わざわざ AWS サポートに問い合わせて結果 AWS 内部のネットワークの問題でしたみたいなことがよくありました。
とは言ってもですが、本当に数秒となる原因なものが多いと思いますので、微々たるエラーも見逃せないワークロードなどに適切な気がします。
設定
あくまで Amazon CloudWatch Network Flow Monitor は AWS ネットワークの内部の問題」を検知するものとのことで再現性は難しそうですので、どのように設定するのか、どのように表示されるのかだけ簡単に確認していきます。
1. Network Flow Monitor を初期化
2. Network Flow Monitor エージェントをインストール
インストール方法は 3 つあるようです。
- CDK で UserData からインストール
- AWS CLI でインストール
- Systems Manager でインストール、有効化する
今回は Systems Manager からインストールしてみたいと思います。
なお、Systems Manager の使い方はご存知の方も多いと思うため簡略化します。
2-1. エージェントのアクセス許可を設定する
EC2 インスタンスの IAM ロールに次の IAM ポリシーが付与されている必要があります。
CloudWatchNetworkFlowMonitorAgentPublishPolicy
2-2. Systems Manager を使用してエージェントをインストールする
Systems Manager の Distributor から以下を使ってインストールします。
AmazonCloudWatchNetworkFlowMonitorAgent
2-3. Systems Manager を使用して、エージェントをアクティブ化する
Systems Manager の Documents から以下を使って有効化します。
AmazonCloudWatch-NetworkFlowMonitorManageAgent
3. モニターを作成
CloudWatch > Network Flow Monitor > モニターを作成 の画面へ遷移し、
- モニターの詳細
- ローカルリソース
- リモートリソース
を選択していきます。
今回は、EC2 → S3 をモニターしたいため、ローカルリソースは EC2 があるサブネット、リモートリソースは S3 を選択していきます。

動作確認
EC2 から S3 にアクセス後表示を確認してみます。
異常が検出された場合、
ネットワークヘルスインジケーターの値は、
- 1 (パフォーマンス低下)
- 0 (正常)
と表示されるようです。


