用途
eks-observability 是一个面向 Amazon EKS 的完整可观测性解决方案技能,采用 AWS 原生托管服务与开源工具相结合的方式,实现指标(Metrics)、日志(Logs)、链路追踪(Traces)三大支柱的可观测性。该技能基于 2025 年最佳实践,涵盖 ADOT、Amazon Managed Prometheus、Fluent Bit 与 OpenTelemetry。
适用场景包括:为 EKS 集群设置监控、实现集中式日志管道、配置分布式追踪、在 Grafana 中构建生产仪表盘、排查应用性能问题、建立 SLO 与错误预算、优化可观测性成本、从 X-Ray SDK 迁移到 OpenTelemetry、关联指标日志与追踪、设置告警与值班运行手册。
三大支柱方案(2025 推荐)
1. 指标:CloudWatch Container Insights + Amazon Managed Prometheus(AMP)。双监控提供完整可见性:CloudWatch 用于 AWS 原生集成与快速设置,Prometheus 用于高级查询与社区仪表盘,Amazon Managed Grafana 用于可视化。
2. 日志:Fluent Bit → CloudWatch Logs。轻量级日志转发器(AWS 已于 2025 年 2 月弃用 FluentD),以 DaemonSet 部署自动采集,支持 JSON 解析的结构化日志,可选聚合到 OpenSearch 进行分析。
3. 追踪:ADOT → AWS X-Ray。采用 OpenTelemetry 标准(X-Ray SDK 将于 2026 年进入维护模式),ADOT Collector 将 OTLP 转换为 X-Ray 格式,支持微服务间分布式追踪,并与 CloudWatch ServiceLens 集成。
快速开始工作流
步骤 1:启用 CloudWatch Container Insights(推荐使用 EKS Add-on)。需先创建 IAM 策略、通过 eksctl 创建 IRSA,再安装 amazon-cloudwatch-observability 插件。可获得节点级指标、Pod 级指标、命名空间聚合、自动 CloudWatch Logs 集成与预构建仪表盘。
步骤 2:部署 Amazon Managed Prometheus。创建 AMP 工作区、为 AMP 摄取创建 IRSA,再通过 Helm 安装 kube-prometheus-stack 并配置 AMP remote write。可获得 Prometheus Operator、Node Exporter、kube-state-metrics、Alertmanager 与 100+ 预构建 Grafana 仪表盘。
步骤 3:部署 Fluent Bit 用于日志。创建 IRSA 后通过 Helm 安装 Fluent Bit,配置 CloudWatch 输出。可获得所有 Pod 的自动日志采集、结构化 JSON 解析、CloudWatch Logs 集成、多行日志支持与 Kubernetes 元数据增强。
步骤 4:部署 ADOT 用于分布式追踪。创建 IRSA、安装 ADOT 插件,再部署 OpenTelemetryCollector 自定义资源,配置 OTLP 接收器、批处理与内存限制处理器,以及 awsxray 与 awsemf 导出器。可获得 OTLP 接收器、自动 X-Ray 集成、服务地图可视化、追踪采样与过滤、CloudWatch ServiceLens 集成。
步骤 5:设置 Amazon Managed Grafana。创建工作区,添加 AMP、CloudWatch、X-Ray 数据源,并导入仪表盘(EKS Container Insights 仪表盘 ID 16028、Node Exporter Full 仪表盘 ID 1860、Kubernetes Cluster Monitoring 仪表盘 ID 15760)。
生产部署清单
涵盖基础设施(Container Insights、AMP 工作区、kube-prometheus-stack、Fluent Bit DaemonSet、ADOT Collector、AMG 工作区、IRSA 最小权限)、配置(Prometheus 抓取、Fluent Bit 日志组、ADOT 采样 5-10%、Grafana 数据源、日志保留 7-90 天、指标保留 AMP 默认 150 天)、仪表盘(集群概览、应用性能、资源利用率、成本监控、网络性能)、告警(关键、性能、资源、成本告警及 SNS 通知)、应用埋点(OpenTelemetry SDK、追踪上下文传播、自定义指标、结构化日志、日志与 trace ID 关联)。
成本优化
指标方面:对高基数指标采样(5-10% 标签)、使用指标重标记丢弃不必要标签、远程写入前聚合、设置合理保留期(通常 30-90 天)。日志方面:对冗长应用实施日志采样、使用 CloudWatch Logs Insights 而非导出到 S3、调试日志设置激进保留(7 天)、审计日志保留更久(90+ 天)。追踪方面:按流量采样(默认 5-10%)、错误增加采样(100%)、重要事务使用尾部采样、清理旧 X-Ray 追踪(默认 30 天)。典型月成本:小型集群(10 节点)50-150 美元/月,中型集群(50 节点)200-500 美元/月,大型集群(200+ 节点)1000-2000 美元/月。
集成模式
指标→日志:通过 PromQL 查询高错误率 Pod,再在 CloudWatch Logs 中搜索这些 Pod 名称。日志→追踪:在结构化日志中包含 trace_id 与 span_id。追踪→指标:用追踪数据识别慢端点、从追踪延迟百分位创建 SLI、对追踪错误率告警。CloudWatch ServiceLens 提供统一视图,结合 X-Ray 追踪、CloudWatch 指标与日志。
故障排查速查
AMP 无指标:检查 IRSA 或 remote write 配置,查看 Prometheus Pod 日志。日志未出现:Fluent Bit 未运行或 IAM 错误,查看 fluent-bit Pod 日志。X-Ray 无追踪:ADOT 未部署或应用未埋点,验证 ADOT Pod 与 OTel SDK。成本过高:数据摄取过多,启用采样、降低日志详细度。缺少 Pod 指标:kube-state-metrics 未运行。Grafana 无法连接:数据源 IAM 权限不足。
生产运行手册
事件响应:查看 Grafana 概览仪表盘识别受影响服务,审查 X-Ray 服务地图定位瓶颈,查询 CloudWatch Logs Insights 获取详细错误,关联指标峰值理解时间线与范围,执行修复(扩容、重启或回滚)。性能调查:从 RED 指标(速率、错误、持续时间)开始,检查基础设施 USE 指标(利用率、饱和度、错误),分析追踪百分位(p50、p95、p99),审查慢时段日志模式。SLO 实现:定义 SLI(可用性、延迟、错误率),计算错误预算(如 99.9% SLO = 0.1% 错误预算 = 每月 43.2 分钟停机),配置燃烧率告警(快速燃烧:1 小时消耗 5% 预算;慢速燃烧:6 小时消耗 10% 预算)。
最佳实践摘要
使用双监控(CloudWatch Container Insights + Prometheus);标准化 OpenTelemetry 以实现面向未来的埋点;为所有组件启用 IRSA(不使用节点 IAM 角色);部署 ADOT Collector 实现厂商中立可观测性;智能采样(追踪 5-10%,错误 100%);结构化日志采用 JSON 格式并包含追踪关联。
详细文档
技能包含详细参考文档:指标采集(references/metrics.md)、集中式日志(references/logging.md)、分布式追踪(references/tracing.md)。