View a markdown version of this page

Enhanced Container Insights(建议) - Amazon CloudWatch

Enhanced Container Insights(建议)

OTel Container Insights 是在 Amazon EKS 集群上启用 Container Insights 的推荐方法。它基于 OpenTelemetry 构建,采用简化的部署模型并积极持续开发,可提供跨指标和日志的全面可观测性。

OTel Container Insights 和 Enhanced Container Insights(Classic)都使用相同的 amazon-cloudwatch-observability Amazon EKS 附加组件。区别在于附加组件的版本和配置,而非不同的产品。OTel Container Insights 是该附加组件更新的、积极开发的配置。

此方法专为以下使用案例而设计:

  • 希望获得集群可观测性最佳支持方案的 Amazon EKS 新客户

  • 希望整合到单一现代遥测管道上的现有客户

  • 采用 OpenTelemetry 且希望与 CloudWatch 进行原生集成的团队

主要优势

OTel Container Insights 可带来以下优势:

  • 简化设置:通过控制台、AWS CLI 或 CloudFormation,在几分钟内即可实现全面的可观测性

  • 全面的信号:从单个代理部署中收集指标和日志

  • 增强的可观测性:访问详细的 Kubernetes 指标、容器组(pod)级的洞察和相关信号

  • 积极开发:持续获得新功能、性能改进和更大的信号覆盖范围

  • OpenTelemetry 原生:基于 OpenTelemetry Collector 构建,与行业标准的可观测性框架保持一致

为何推荐使用此方法

建议使用 OTel Container Insights 而不是其他 Container Insights 方法,因为该方法以最简单的部署模型提供了最广泛的信号覆盖范围(指标和日志)。其他方法处于仅维护模式或者需要更复杂的手动配置。

下表将 OTel Container Insights 与 Enhanced Container Insights(Classic)进行了比较。

考虑因素 OTel Container Insights Enhanced Container Insights(Classic)
信号 指标、日志 指标、日志
增强的可观测性 支持
维护状态 积极开发 维护
部署复杂性

指标来源和接收器

OTel Container Insights 从开源接收器收集指标,并使用 OpenTelemetry 语义约定自动丰富这些指标。与使用专有指标名称的 Enhanced Container Insights(Classic)不同,OTel Container Insights 保留了每个来源的原始指标名称。这使它们与现有的 PromQL 控制面板和社区文档兼容。

OTel Container Insights 使用 OpenTelemetry Protocol(OTLP),以 30 秒的粒度收集多个接收器中的开源指标。指标使用其原始来源名称(例如,cAdvisor 中的 container_cpu_usage_seconds_total)而不是 CloudWatch 格式的名称,您可以使用 PromQL 对其进行查询。

下表列出了可用的接收器及其先决条件。

接收方 收集对象 先决条件
cAdvisor 容器 CPU、内存、网络、磁盘/文件系统指标 内置于 kubelet 中,无需额外设置
Prometheus Node Exporter 节点级 CPU、内存、磁盘、文件系统、网络、系统、VMStat、netstat/套接字指标 包含在附加组件中
Kube State Metrics 容器组(pod)、节点、部署、DaemonSet、StatefulSet、ReplicaSet、任务、CronJob、服务、命名空间、PV、PVC 指标 包含在附加组件中
Kubernetes API 服务器 API 服务器和 etcd 指标 控制面板上可用
NVIDIA DCGM GPU 利用率、内存、功耗/散热、节流、错误/可靠性、NVLink 指标 需要 NVIDIA 设备插件和容器工具包
AWS Neuron Monitor NeuronCore、NeuronDevice 和 Neuron 系统指标 需要 Neuron 驱动程序和设备插件
AWS Elastic Fabric Adapter EFA 网络指标 需要 EFA 设备插件
NVMe NVMe SMART 运行状况指标 无需额外设置

每个指标都补充了以下三个来源的多达 150 个标签:

  1. 遥测数据源原生标签:来自原始接收器(例如 podnamespace、cAdvisor 中的 container

  2. OpenTelemetry 资源属性:遵循 Kubernetes、主机和云的 OTel 语义约定

  3. Kubernetes 容器组(pod)和节点标签:来自 Kubernetes API 的所有标签,前缀为 k8s.pod.label.*k8s.node.label.*

双重发布和迁移

OTel Container Insights 默认已禁用。要启用它,请在附加组件配置中将 otelContainerInsights.enabled 设置为 true

从附加组件版本 v6.2.0 开始,该附加组件支持通过 Enhanced Container Insights(Classic)和 OTel Container Insights 同时发布指标。这样便可在完全迁移之前验证新的指标管道。

要启用 OTel Container Insights 以及 Enhanced Container Insights(Classic),请运行以下命令。

aws eks update-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerInsights":{"enabled":true},"otelContainerInsights":{"enabled":true}}'

要禁用 OTel Container Insights 并仅保留 Enhanced Container Insights(Classic),请运行以下命令。

aws eks update-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"otelContainerInsights":{"enabled":false}}'

要禁用 Enhanced Container Insights(Classic)并仅保留 OTel Container Insights,请运行以下命令。

aws eks update-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerInsights":{"enabled":false},"otelContainerInsights":{"enabled":true}}'

开始使用

使用以下主题在 Amazon EKS 集群上设置和配置 OTel Container Insights。

主题