在 EKS 上搭建 Metrics、Logs、Traces 一体化可观测平台
一篇关于 Prometheus、OpenTelemetry、Loki、Tempo、Grafana 和 Nightingale 的生产实践笔记
配置快照:2026-09
本文已脱敏,账号、集群、域名、CIDR、ARN、bucket 和业务名称均使用占位符
本文同时收录于知识库:EKS Metrics、Logs、Traces 一体化可观测平台。
写在前面
最早搭监控时,我们通常从 Prometheus 开始;遇到线上问题以后,又补一个 Loki;再往后为了分析跨服务调用,继续部署 Tempo 或 Jaeger。三个系统都有了,但数据还是割裂的:指标告诉我们“出问题了”,日志告诉 我们“报了什么错”,Trace 才能解释“请求到底在哪一跳变慢”。
这次改造的目标不是简单把三个开源组件安装进 Kubernetes,而是把它们连接成一条完整的排障链路:
告警发现异常
-> 指标确定受影响服务和时间窗口
-> Trace 找到慢调用或错误调用
-> trace_id 跳转到对应日志
-> 回到 Pod、节点和 Kubernetes 事件定位根因
最终采用的核心组件是:
- Prometheus:Kubernetes 与应用指标存储和 PromQL 查询;
- OpenTelemetry Operator/Collector:Trace、日志采集、尾部采样和 Span Metrics;
- Loki:容器日志存储和 LogQL 查询;
- Tempo:分布式 Trace 存储和查询;
- Grafana:Metrics、Logs、Traces 的统一查询与关联;
- Nightingale:告警规则评估、事件管理和通知。
这篇笔记重点记录四件事:部署过程、架构设计、关键参数,以及系统上线以后仍需要继续优化的部分。
