预约咨询 提交工单

在生产级Kubernetes上使用Prometheus、Grafana和OpenTelemetry实现可观测性

本文介绍如何在生产级Kubernetes集群上集成Prometheus、Grafana和OpenTelemetry,实现全面的指标、日志和链路追踪可观测性。涵盖场景、症状、诊断、部署命令、风险控制、回滚和验证步骤。

在生产级Kubernetes上使用Prometheus、Grafana和OpenTelemetry实现可观测性
Observability 6min 7 浏览 2026-07-31
KubernetesSRE

场景

某电商平台运行在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

验证

  1. 检查OpenTelemetry Collector Pod运行正常:kubectl get pods -l app.kubernetes.io/name=opentelemetry-collector
  2. 在Prometheus中查询指标:rate(otelcol_exporter_sent_metric_points_total[5m])
  3. 在Grafana中查看仪表盘,确保数据可见
  4. 发送测试请求并检查追踪:使用Jaeger UI查看或kubectl logs查看Collector日志

何时提交OpsGlobal工单

  • 需要自定义OpenTelemetry Collector处理器(如过滤、采样)但缺乏内部专家
  • 跨集群联邦Prometheus时需要专家指导
  • 在遗留系统中插入OpenTelemetry SDK时遇到兼容性问题
  • 性能调优(如调整批处理大小、内存限制)

如果出现上述复杂情况,请立即联系OpsGlobal团队获取专业支持。

适用场景

适合正在处理 Observability、Kubernetes, SRE 相关问题的团队,用于快速建立排查路径和交付标准。

问题背景

本文介绍如何在生产级Kubernetes集群上集成Prometheus、Grafana和OpenTelemetry,实现全面的指标、日志和链路追踪可观测性。涵盖场景、症状、诊断、部署命令、风险控制、回滚和验证步骤。

排查步骤

先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。

命令示例

示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。

风险说明

生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。

回滚方案

保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。

交付清单

问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。

!

遇到类似技术问题?

如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。

工单 WhatsApp 联系 咨询