

# Enhanced Container Insights（建议）
<a name="container-insights-eks-otel"></a>

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 进行原生集成的团队

## 主要优势
<a name="container-insights-eks-otel-benefits"></a>

OTel Container Insights 可带来以下优势：
+ **简化设置**：通过控制台、Amazon CLI 或 Amazon CloudFormation，在几分钟内即可实现全面的可观测性
+ **全面的信号**：从单个代理部署中收集指标和日志
+ **增强的可观测性**：访问详细的 Kubernetes 指标、容器组（pod）级的洞察和相关信号
+ **积极开发**：持续获得新功能、性能改进和更大的信号覆盖范围
+ **OpenTelemetry 原生**：基于 OpenTelemetry Collector 构建，与行业标准的可观测性框架保持一致

## 为何推荐使用此方法
<a name="container-insights-eks-otel-comparison"></a>

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

下表将 OTel Container Insights 与 Enhanced Container Insights（Classic）进行了比较。


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

## 指标来源和接收器
<a name="container-insights-eks-otel-receivers"></a>

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 设备插件和容器工具包 | 
| Amazon Neuron Monitor | NeuronCore、NeuronDevice 和 Neuron 系统指标 | 需要 Neuron 驱动程序和设备插件 | 
| Amazon Elastic Fabric Adapter | EFA 网络指标 | 需要 EFA 设备插件 | 
| NVMe | NVMe SMART 运行状况指标 | 无需额外设置 | 

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

1. **遥测数据源原生标签**：来自原始接收器（例如 `pod`、`namespace`、cAdvisor 中的 `container`）

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

1. **Kubernetes 容器组（pod）和节点标签**：来自 Kubernetes API 的所有标签，前缀为 `k8s.pod.label.*` 和 `k8s.node.label.*`

## 双重发布和迁移
<a name="container-insights-eks-otel-dual-publishing"></a>

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}}'
```

## 开始使用
<a name="container-insights-eks-otel-topics"></a>

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

**Topics**
+ [快速入门：Amazon EKS 上的 OTel Container Insights](container-insights-eks-otel-quickstart.md)：使用最快的设置路径开始使用 OTel Container Insights。
+ [从控制台启用 OTel Container Insights](container-insights-eks-otel-console.md)：通过 Amazon 管理控制台启用 OTel Container Insights。
+ [使用 Helm OTel Container Insights](container-insights-eks-otel-helm.md)：使用 Helm 图表部署 OTel Container Insights，实现灵活、对 GitOps 友好的管理。
+ [使用 Amazon CloudFormation 部署 OTel Container Insights](container-insights-eks-otel-cfn.md)：使用 Amazon CloudFormation 模板部署 OTel Container Insights。
+ [将日志发送到 Amazon CloudWatch](container-insights-eks-otel-logs.md)：为 Amazon EKS 集群配置日志收集。
+ [Amazon EKS 上 OTel Container Insights 的高级配置](container-insights-eks-otel-advanced.md)：为您的环境自定义和微调 OTel Container Insights。