<!-- AI_TASK_START: AI标题翻译 -->
[解决方案] 使用 Network Flow Monitor 可视化您的 AWS 云工作负载网络性能
<!-- AI_TASK_END: AI标题翻译 -->
<!-- AI_TASK_START: AI竞争分析 -->
# 产品功能分析
## 新功能/新产品概述
Network Flow Monitor 是 AWS 在 2024 年 re:Invent 上推出的 Amazon CloudWatch 新功能,**旨在提供跨 AWS 托管服务(如 Amazon EC2 和 Amazon EKS)的网络性能监控**,实现近实时可见性。该功能针对云环境中的网络问题,提供快速识别和解决工具,适用于应用程序性能优化场景。**背景**在于传统网络监控工具对 AWS 基础设施的可见性有限,导致故障排除时间延长;**目标用户群**包括使用 AWS 服务的开发者和运维团队,**市场定位**聚焦于提升云工作负载的整体可观测性。
## 关键客户价值
- 通过收集网络流量数据,帮助用户快速识别高延迟问题,减少 **mean time to detect (MTTD)** 和 **mean time to recovery (MTTR)**,从而提升应用可靠性。
- 与传统网络监控工具相比,该功能提供更全面的 AWS 内部网络可见性,避免了排查盲区,但在大规模环境中可能需要额外配置以管理复杂度。
- 在实际使用场景中,如跨 VPC 通信监控,它分析真实用户流量,支持网络健康指标(NHI)归因问题,显著简化故障排查过程。
## 关键技术洞察
- 技术独特性在于使用轻量级代理(基于 Linux 内核的 **bpf_sock_ops** 结构)收集性能指标,如数据传输量、重传次数和往返时间,实现被动监控真实工作负载流量,而非主动探测。
- 创新点包括网络健康指标(NHI),可帮助区分问题是否源于 AWS 基础设施,从而优化排查效率;该机制提升了性能和可用性,但代理仅访问元数据而非有效负载,确保数据隐私。
- 技术实现的挑战在于当前不支持跨账户或跨区域监控,可能限制其在多区域部署中的适用性;总体而言,该设计增强了 **CloudWatch** 的网络监控能力,但用户需关注代理安装和权限配置以避免兼容性问题。
## 其他信息
- **实施步骤**:包括启用 Network Flow Monitor、安装代理(通过 AWS Systems Manager)、查看工作负载洞察以及创建流量监控器。该过程需注意权限设置和等待数据聚合时间(最多 30 分钟)。
- **定价和可用性**:详情可参考 CloudWatch 定价页面,目前在 17 个 AWS 区域可用;用户应在测试后及时清理资源以避免不必要的费用。
- 作者背景:由 AWS 网络专家 Hiroki Fujii 和 Vishwas Puttasubbappa 撰写,提供实际指导。
<!-- AI_TASK_END: AI竞争分析 -->
<!-- AI_TASK_START: AI全文翻译 -->
# 使用 Network Flow Monitor 可视化 AWS 云工作负载的网络性能
**原始链接:** [https://aws.amazon.com/blogs/networking-and-content-delivery/visualizing-network-performance-of-your-aws-cloud-workloads-with-network-flow-monitor/](https://aws.amazon.com/blogs/networking-and-content-delivery/visualizing-network-performance-of-your-aws-cloud-workloads-with-network-flow-monitor/)
**发布时间:** 2025-04-30
**厂商:** AWS
**类型:** BLOG
---
AWS 在 2024 年 12 月 1 日的 re:Invent 大会上推出了 Network Flow Monitor(网络流量监视器),这是一个新的 [Amazon CloudWatch Network Monitoring](https://aws.amazon.com/cloudwatch/features/network-monitoring/) 功能,可提供跨 AWS 托管服务的网络性能监视。通过 Network Flow Monitor,你可以获得近实时可见性,针对计算资源(如 [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) 和 [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html))与 AWS 服务(如 [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 和 [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html))之间,以及 AWS 基础设施之间的网络流量。该收集的数据有助于你更快地识别和解决应用程序的网络问题,从而减少云环境故障排除时间。
## 云网络的可观测性挑战
当应用程序遇到高延迟时,网络问题往往是首先怀疑的原因,无论是在云环境还是本地环境。正如许多人可能已经知道的,传统网络监视工具对 AWS 网络基础设施及其与 AWS 托管服务之间的网络性能提供有限的可见性。这可能会延长故障排除过程,并影响平均检测时间 (MTTD) 和平均恢复时间 (MTTR)。
## CloudWatch 性能监视功能
Network Flow Monitor 使 CloudWatch 能够为 Network Monitoring 和 [Application Performance Monitoring](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Monitoring-Intro.html) (APM) 提供全面的可观测性服务,如下图所示。

*图 1. CloudWatch Application Performance Monitoring 和 Network Monitoring 功能*
Network Flow Monitor 使用轻量级代理,你可以在资源上安装这些代理,以从实际工作负载流量中直接收集性能指标,实现近实时监视。Network Flow Monitor 会跟踪关键网络指标,如传输的数据量、重传、重传超时和往返时间。
此外,flow monitor 的一个突出功能是网络健康指标 (NHI)。NHI 使你能够确定网络退化是否由 AWS 基础设施问题引起。当网络延迟发生时,此指标非常宝贵,可帮助你归因问题原因,从而有效集中故障排除努力。
CloudWatch Network Monitoring 套件提供了一系列网络性能功能。要了解更多,请参阅 [Using Internet Monitor](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-InternetMonitor.html) 或 [Using Network Synthetic Monitor](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/what-is-network-monitor.html) 文档。
以下部分描述了如何通过示例场景使用 Network Flow Monitor 来可视化网络性能。
## 示例监视场景
在本节中,我们观察两个位于不同虚拟私有云 (VPC) 中的 EC2 实例示例,这些实例位于同一区域,并通过 [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html) 连接。
当前,Network Flow Monitor 不支持跨账户或跨区域。
在我们的示例中,我们在 VPC 1 中的 EC2 实例 **test-instance-1** 上安装了代理,以提供网络性能数据。我们还在 VPC 2 中的第二个 EC2 实例 **test-instance-2** 上构建了 Apache Web 服务器,并启用了 httpd 服务,如下图所示。在下一节中,我们将详细描述如何安装代理。

*图 2. Network Flow Monitor 的跨 VPC 网络监视设置示例*
与主动监视解决方案不同,Network Flow Monitor 提供持续的被动监视,该监视分析工作负载之间的实际用户流量。我们已从安装了代理的 **test-instance-1** 创建测试流量,到 **test-instance-2**(Apache Web 服务器),如下图所示。

*图 3. 代理收集 VPC 1 中的实例与 VPC 2 中的 Web 服务器之间 HTTP 流量数据*
代理无法访问你的 TCP 连接的有效负载。代理仅从 Linux 内核接收名为 *bpf_sock_ops* 的结构。此结构提供本地和远程 IP 地址、本地和远程 TCP 端口,以及计数器和往返时间。
## Network Flow Monitor 设置
在本节中,我们将逐步指导基于我们的示例场景设置 Network Flow Monitor。要设置 Network Flow Monitor 以查看网络流性能指标,请执行以下操作:
1. 启用 Network Flow Monitor
2. 安装 Network Flow Monitor 代理
3. 在 Workload insights 中查看网络流
4. 创建一个或多个 flow monitor
**步骤 1: 启用 Network Flow Monitor**
在使用 Network Flow Monitor 之前,必须启用必要的权限,以将数据发送到 CloudWatch 并映射网络连接。当你首次在控制台中导航到 Network Flow Monitor 时,会提示你启用该功能,如下图所示。

*图 4. 启用 Network Flow Monitor*
启用 Network Flow Monitor 会设置权限并创建你的监视范围。目前,监视范围是您登录的 AWS 账户。要了解更多信息,请参阅 [Enable Network Flow Monitor](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-NetworkFlowMonitor-configure-begin.html#CloudWatch-NetworkFlowMonitor-configure-begin.enable)。你只需在区域中首次选择该功能时启用它。
等待一段时间(最多 30 分钟),Network Flow Monitor 会为你的账户授予使用必要服务链接角色的权限,并为你的 AWS 账户设置监视范围。
**步骤 2: 安装 Network Flow Monitor 代理**
当你在实例上安装代理时,必须为代理设置权限,以便它们可以将数据发送到 Network Flow Monitor 后端。这些数据使你能够监视网络性能。有关可用于实例的 Linux 版本的具体要求,请参阅 [the Amazon CloudWatch documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-NetworkFlowMonitor-agents.html)。
你可以将代理安装在 EC2 实例、自我管理的 Kubernetes 实例或 Amazon EKS 上。在本帖子中,我们按照 AWS 文档中所述的 [Install and manage agents for EC2 instances](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-NetworkFlowMonitor-agents-ec2.html) 步骤操作。要了解有关在 Kubernetes 或 Amazon EKS 上安装代理的信息,请参阅 [Install Network Flow Monitor agents on instances](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-NetworkFlowMonitor-agents.html)。
要启用正确的权限,运行代理的 EC2 实例必须使用带有策略 CloudWatchNetworkFlowMonitorAgentPublishPolicy 的角色,如下图所示。

*图 5. 将 Network Flow Monitor 策略附加到目标实例的角色*
我们建议你在在 EC2 实例上安装代理之前添加权限。如果实例没有角色,请创建一个新角色并附加上述策略。
接下来,我们在实例中安装代理。要安装代理,我们使用 [AWS System Manager](https://aws.amazon.com/systems-manager/) 的功能 AWS Systems Manager Agent。在开始安装代理之前,请确保每个实例都在运行 Systems Manager Agent。要了解更多信息,请参阅 [Working with Systems Manager Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html)。
要在 EC2 实例上安装代理,请执行以下操作:
1. 在控制台中,打开 AWS Systems Manager 控制台。
2. 在 **Node Tools** 下,选择 **Distributor**。
3. 在 **Owned by Amazon** 下,找到 Network Flow Monitor 包:**AmazonCloudWatchNetworkFlowMonitorAgent**。
4. 选择该包,然后选择 **Install one time** 或 **Install on schedule**,如下图所示。

*图 6. 在 Systems Manager 中选择 Network Flow Monitor 代理包*
5. 选择要安装代理的 EC2 实例。在我们的示例中,我们仅选择 **test-instance-1**,如下图所示。但是,如果你想在多个实例上安装代理,则根据标签或资源组选择实例可能更高效。

*图 7. 在 Systems Manager 中选择要安装代理的实例*
6. 最后,选择 **Run** 以启动代理安装。
安装成功完成后,你应该看到命令状态消息,如下图所示。

*图 8. 目标实例上代理安装成功*
**步骤 3: 在 Workload insights 中查看网络流**
启用 Network Flow Monitor 并安装代理后,你可以在控制台中查看网络流性能数据。我们建议从控制台可视化开始,以了解工作负载的趋势和流量模式。
在 CloudWatch 控制台中,在 **Network Monitoring** 下,选择 **Flow monitors**。然后,在 **Workload insights** 选项卡中,你可以查看顶级贡献网络流。你可以识别要更详细监视的流。此信息显示在下图中。要了解更多细节,请参阅 [Evaluate network flows with workload insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-NetworkFlowMonitor-configure-evaluate-flows.html)。

*图 9. CloudWatch 中的网络流数据*
要深入特定网络流,你可以创建监视器,这可以通过两种方式完成。你可以在 **Top contributors** 中选择网络流,然后选择 **Create monitor**。或者,你可以选择 **Create monitor**,然后指定要监视的单个本地和远程资源,如步骤 4 所述。
**步骤 4: 创建 flow monitor**
要开始创建监视器,在 Network Flow Monitor 控制台中选择 **Create monitor**,如下图所示。

*图 10. 在 Network Flow Monitor 中创建监视器*
创建监视器时,我们建议你一次性完成所有步骤,因为你无法保存工作以稍后继续。
按照创建监视器流程中的步骤操作。在我们的示例中,我们将为监视器提供以下信息。
1. 对于 **Monitor name**,我们选择 **monitor-ap-northeast-1c-1a**,如下图所示。

*图 11. 为 flow monitor 指定名称*
2. 对于 **Local resources**,指定你想要监视的网络流类型,然后为每个类型选择特定选项。Network Flow Monitor 支持的本地资源类型包括:子网、VPC 或可用区。在我们的示例中,我们选择了实例所在的子网 **flowmonitor-subnet-ap-northeast-1c**,如下图所示。

*图 12. 为 flow monitor 选择一个或多个本地资源*
3. 对于 **Remote resources**,选择 **Everywhere** 或 **Select remote resources**。如果选择 **Everywhere**,监视器将包括从选定的本地资源起源的所有网络流。否则,你可以选择特定远程资源进行监视。通过此选项,你可以在子网、VPC、可用区 (AZ) 或 AWS 服务(如 Amazon S3 和 DynamoDB)中选择一个或多个资源。
在我们的示例中,我们指定了一个子网作为托管 Web 服务器的远程资源 **flowmonitor-subnet-ap-northeast-1a**,如下图所示。选择一个本地资源和一个远程资源使我们的监视器仅包括这两个资源之间网络流的信息。

*图 13. 为 flow monitor 选择远程资源*
4. 选择 **Next**,然后查看监视器的配置。
5. 选择 **Create monitor**。
创建监视器后,等待最多 30 分钟,Network Flow Monitor 开始收集和聚合数据。
## **可视化 Network Flow Monitor 指标**
创建监视器后,Network Flow Monitor 开始发布端到端性能指标,以及针对网络退化问题的网络健康指标。你可以在 Network Flow Monitor 控制台中可视化监视器信息,或者在 CloudWatch 指标中找到这些指标,在自定义命名空间 AWS/NetworkFlowMonitor 下。
在我们的示例中,我们在 Network Flow Monitor 控制台中查看监视器的性能数据。在 **Monitors** 选项卡中,我们选择监视器 **monitor-ap-northeast-1c-1a**,如下图所示。

*图 14. 在 flow monitor 中查看性能数据*
要获取监视器网络流的整体视图,我们查看 **Overview** 选项卡,如下图所示。

*图 15. 在监视器的 Overview 选项卡上可视化性能指标*
接下来,转到 **Historical explorer** 选项卡,以查看受监视网络流的更详细指标。例如,当出现性能退化时,拓扑功能会显示网络路径中的所有组件,包括服务图标和资源 ID。如下图所示,此可视化有助于你识别每个性能指标的顶级贡献者,并在指定时间框架内对配对进行分桶,以采取恢复操作。

*图 16. 可视化网络流拓扑以处理退化问题*
## 资源清理
在完成 Network Flow Monitor 评估后,立即删除所有测试监视器和临时资源。这有助于你的组织避免不必要的开支,同时保持高效的资源管理。****
## 结论
在本帖中,我们介绍了 Network Flow Monitor,这是 Amazon CloudWatch Network Monitoring 的新可观测性功能,可为计算实例与 AWS 服务之间的工作负载提供近实时网络性能可见性。利用 flow monitor 提供的各种指标和信息,你可以快速分析并处理云工作负载的网络性能退化,从而最小化故障排除时间。
## 了解更多关于 Network Flow Monitor 的信息
现在我们已经分享了 Network Flow Monitor 的好处概述,请查看以下附加信息以获取详细信息:
* 要了解更多关于定价的信息,请访问 [CloudWatch pricing page](https://aws.amazon.com/cloudwatch/pricing/)。
* Flow Monitor 当前在 17 个 AWS 区域可用。要获取完整列表,请参阅 [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-NetworkFlowMonitor-Regions.html)。
* 要获取关于 Network Flow Monitor 的详细信息和技术指导,请参阅 [technical documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-NetworkFlowMonitor.html)。
## 关于作者

### Hiroki Fujii
Hiroki 是位于新加坡的高级技术账户经理。在加入 AWS 之前,他拥有超过 10 年的经验,在设计、构建和操作本地网络方面,包括数据中心、校园网络和骨干网络。工作之外,他喜欢健身、高尔夫,并与他的美妙家庭一起探索新的国家和文化。

### Vishwas Puttasubbappa
Vishwas 是 AWS Networking 的首席产品经理技术专家。他过去 20 年来一直从事网络领域的工作,设计和构建网络及网络产品。工作之外,他喜欢花大部分时间与家人共度。
<!-- AI_TASK_END: AI全文翻译 -->