场景
某电商平台运行在Kubernetes集群上,有50+微服务。团队发现故障定位时间(MTTR)过长,缺乏统一的指标和追踪视图。他们决定实施Prometheus、Grafana和OpenTelemetry来统一可观测性。
症状
- 故障排查时需要在多个监控工具间切换
- 无法关联指标和链路追踪
- 事件响应耗时超过4小时
诊断
- 缺乏自动检测和标准化采集
- 各团队使用不同的指标命名和标签
- 没有统一的追踪后端
命令
以下是在Kubernetes上部署OpenTelemetry Collector和配置Prometheus的示例命令(假设已安装Helm)。
1. 安装OpenTelemetry Collector
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm install otel-collector open-telemetry/opentelemetry-collector --values otel-values.yaml
otel-values.yaml示例:
mode: deployment
config:
receivers:
otlp:
protocols:
grpc:
http:
processors:
batch:
exporters:
prometheus:
endpoint: "0.0.0.0:8889"
logging:
# 可选:导出到Jaeger或Zipkin用于追踪
otlp:
endpoint: "jaeger-collector:4317"
service:
pipelines:
metrics:
receivers: [otlp]
processors: [batch]
exporters: [prometheus, logging]
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp, logging]
2. 配置Prometheus抓取OpenTelemetry Collector指标
# prometheus-scrape-config.yaml
scrape_configs:
- job_name: 'opentelemetry-collector'
scrape_interval: 15s
static_configs:
- targets: ['otel-collector:8889']
3. 部署Grafana并添加Prometheus数据源
helm install grafana grafana/grafana --set persistence.enabled=true
登录Grafana后,添加Prometheus数据源(URL: http://prometheus-server)并导入预定义仪表盘。
风险控制
- 在生产集群上先部署到非关键命名空间
- 使用Helm的
--dry-run验证配置 - 监控Collector资源使用(CPU/内存)
- 设置Pod资源限制
- 备份Prometheus和Grafana配置
回滚
# 卸载OpenTelemetry Collector
helm uninstall otel-collector
# 恢复Prometheus配置
kubectl replace -f backup-prometheus-config.yaml
# 如有需要,重新启动Prometheus Pod
kubectl rollout restart -n monitoring deployment/prometheus-server
验证
- 检查OpenTelemetry Collector Pod运行正常:
kubectl get pods -l app.kubernetes.io/name=opentelemetry-collector - 在Prometheus中查询指标:
rate(otelcol_exporter_sent_metric_points_total[5m]) - 在Grafana中查看仪表盘,确保数据可见
- 发送测试请求并检查追踪:使用Jaeger UI查看或
kubectl logs查看Collector日志
何时提交OpsGlobal工单
- 需要自定义OpenTelemetry Collector处理器(如过滤、采样)但缺乏内部专家
- 跨集群联邦Prometheus时需要专家指导
- 在遗留系统中插入OpenTelemetry SDK时遇到兼容性问题
- 性能调优(如调整批处理大小、内存限制)
如果出现上述复杂情况,请立即联系OpsGlobal团队获取专业支持。
适用场景
适合正在处理 Observability、Kubernetes, SRE 相关问题的团队,用于快速建立排查路径和交付标准。
问题背景
本文介绍如何在生产级Kubernetes集群上集成Prometheus、Grafana和OpenTelemetry,实现全面的指标、日志和链路追踪可观测性。涵盖场景、症状、诊断、部署命令、风险控制、回滚和验证步骤。
排查步骤
先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。
命令示例
示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。
风险说明
生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。
回滚方案
保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。
交付清单
问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。
遇到类似技术问题?
如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。