亚马逊AWS官方博客

使用 Container Network Observability 监控 EKS 集群的网络性能和流量



各个组织正在越来越多地部署微服务,以便以增量方式进行创新和更快速地创造商业价值,从而扩大他们的 Kubernetes 应用范围。这一增长不但导致对网络的依赖程度升高,平台的各个团队在 EKS 中监控网络性能和流量模式时也面临着极其复杂的挑战。这样一来,随着容器环境的扩展,各个组织很难保持运营效率,这往往会导致应用程序推迟交付、运营成本不断攀升。

今天,我非常高兴地宣布Amazon Elastic Kubernetes Service(Amazon EKS)中推出 Container Network Observability,这是 Amazon EKS 中的一整套网络可观测性特征,可以更好地衡量系统中的网络性能,并在 EKS 中动态显示网络流量的环境和行为。

让我们快速了解一下 Amazon EKS 中的 Container Network Observability:

EKS 中的 Container Network Observability 提供了对于工作负载流量的增强可见性,一举解决了可观测性方面的各项挑战。它提供了集群内部和具有集群外部目的地的网络流量的性能详情。这样,您的 EKS 集群网络环境就更具可观测性,同时还提供了一些内置功能,可帮助您更精确地排查问题和进行调查。

开始使用 EKS 中的 Container Network Observability

我可以为新增或现有的 EKS 集群启用这项新特征。对于新的 EKS 集群,在设置配置可观测性期间,我要导航到配置网络可观测性部分。在这里,要我选择编辑容器网络可观测性。我会看到其中包含三项特征:服务地图流量表性能指标端点,它们是由 Amazon CloudWatch 网络流量监控器启用的。

在下一页上,我需要安装 AWS 网络流量监控器代理

启用之后,我可以导航到我的 EKS 集群并选择监控集群

这样会将我引导至我的集群可观测性控制面板。随后,我要选择网络选项卡。


全面的可观测性特征
EKS 中的 Container Network Observability 提供了多种关键特征,包括性能指标、服务地图和具有三个视图的流程表:AWS 服务视图、集群视图和外部视图。

使用性能指标,您现在可以直接从网络流量监控器代理中抓取容器组(pod)和工作线程节点的网络相关系统指标,并将它们发送到您的首选监控目的地。可用的指标包括入口/出口流量计数、数据包计数、传输的字节数,以及带宽、每秒数据包数和连接跟踪限制等方面的各种超出限额计数器。如下屏幕截图显示了一个有关如何使用 Amazon Managed Grafana 来可视化使用 Prometheus 抓取的性能指标的示例。


使用服务地图特征,您可以动态显示集群中的工作负载之间的相互通信,这样即可轻松、快速地了解您的应用程序拓扑。服务地图可突出显示一些关键指标,例如重传、重传超时以及为通信容器组(pod)之间的网络流量传输的数据,从而帮助您快速发现性能问题。

我将使用一个示例电子商务应用程序,向您展示它是如何工作的。服务地图提供了微服务架构的简要视图和详细视图。在这个电子商务示例中,我们可以看到三项核心微服务协同工作:GraphQL 服务充当 API 网关,负责协调前端服务与后端服务之间的请求。

当客户浏览产品或下单时,GraphQL 服务将协调与(用于目录数据、定价和库存的)产品服务和(用于处理和管理订单的)订单服务进行的通信。这种架构允许每一项服务独立扩展,同时保持清晰的关注点分离。

要进行更深入的问题排查,您可以扩展此视图,以便查看个别容器组(pod)实例及其通信模式。详细视图显示了微服务通信的复杂性。在这里,您可以查看每一项服务的多个容器组(pod)实例以及它们之间的连接网络。

为了发现负载分布不均衡、容器组(pod)之间的通信瓶颈或者特定的容器组(pod)实例何时遇到更大的延迟等问题,这一精细的可见性至关重要。例如,如果一个 GraphQL 容器组(pod)对特定产品容器组(pod)的调用次数过多,您可以快速发现此模式并调查潜在原因。

使用流量表,可以从三个不同的视角监控集群内的 Kubernetes 工作负载中的用量最高者,每个视角都为您的网络流量模式提供了独特的洞察。

流程表 – 从三个不同的视角监控集群内的 Kubernetes 工作负载中的用量最高者,每个视角都为您的网络流量模式提供了独特的洞察:

  • AWS 服务视图会显示哪些工作负载为 Amazon Web Services(AWS)服务(例如 Amazon DynamoDBAmazon Simple Storage Service(Amazon S3))产生了最多的流量,从而让您能够优化数据访问模式以及确定潜在的成本优化机会。
  • 集群视图会显示集群内最繁忙的通信者(东西流量),这意味着您可以发现可能受益于优化或主机托管策略的聊天微服务
  • 外部视图可识别向 AWS 以外的目的地(互联网或本地)传输最多流量的那些工作负载,这对于安全监控和带宽管理非常有用。

流量表提供了详细的指标和筛选功能,用于分析网络流量模式。在此示例中,我们可以看到,流程表显示了我们的电子商务服务之间的集群视图流量。此表表明,订单容器组(pod)正在与多个产品容器组(pod)进行通信,并传输大量的数据。此模式表明,订单服务经常在订单处理期间查找产品。

筛选功能对于排查问题非常有用,例如,可以重点关注来自特定订单容器组(pod)的流量。在调查性能问题时,这一精细的筛选可帮助您快速隔离通信模式。例如,如果客户遇到结账缓慢问题,您可以进行筛选,以便了解订单服务调用产品服务的次数是否过多,或者特定的容器组(pod)实例之间是否存在网络瓶颈。

其他注意事项
对于 EKS 中的 Container Network Observability,需要注意下面这几个要点:

  • 定价 – 对于网络监控,您需要支付标准的 Amazon CloudWatch 网络流量监控器定价。
  • 发布情况 – EKS 中的 Container Network Observability 已在所有提供了 Amazon CloudWatch 网络流量监控器的商业 AWS 区域中推出。
  • 将指标导出到您的首选监控解决方案 – 指标以 OpenMetrics 格式提供,并与 Prometheus 和 Grafana 兼容。有关配置的详细信息,请参阅网络流量监控器文档

立即开始使用 Amazon EKS 中的 Container Network Observability,以便提高集群中的网络可观测性。

祝您构建顺利!
Donnie

AWS 架构师中心: 云端创新的引领者

探索 AWS 架构师中心,获取经实战验证的最佳实践与架构指南,助您高效构建安全、可靠的云上应用