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. 遥测数据源原生标签:来自原始接收器(例如 pod、namespace、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。

主题