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 个标签:
-
遥测数据源原生标签:来自原始接收器(例如
pod、namespace、cAdvisor 中的container) -
OpenTelemetry 资源属性:遵循 Kubernetes、主机和云的 OTel 语义约定
-
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-namecluster-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-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"otelContainerInsights":{"enabled":false}}'
要禁用 Enhanced Container Insights(Classic)并仅保留 OTel Container Insights,请运行以下命令。
aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerInsights":{"enabled":false},"otelContainerInsights":{"enabled":true}}'
开始使用
使用以下主题在 Amazon EKS 集群上设置和配置 OTel Container Insights。
主题
-
快速入门:Amazon EKS 上的 OTel Container Insights:使用最快的设置路径开始使用 OTel Container Insights。
-
从控制台启用 OTel Container Insights:通过 AWS 管理控制台启用 OTel Container Insights。
-
使用 Helm OTel Container Insights:使用 Helm 图表部署 OTel Container Insights,实现灵活、对 GitOps 友好的管理。
-
使用 CloudFormation 部署 OTel Container Insights:使用 CloudFormation 模板部署 OTel Container Insights。
-
将日志发送到 Amazon CloudWatch:为 Amazon EKS 集群配置日志收集。
-
Amazon EKS 上 OTel Container Insights 的高级配置:为您的环境自定义和微调 OTel Container Insights。