KubernetesSRE可观测性PrometheusGrafanaOpenTelemetry
场景
您的电商平台运行在Kubernetes上,用户反映结账页面响应缓慢。SRE团队发现P99延迟飙升,但CPU和内存指标正常。OpenTelemetry追踪数据显示部分数据库查询跨度缺失。
症状
- Grafana面板显示P99延迟从200ms上升到2s。
- Prometheus指标中,http_request_duration_seconds增加,但node_cpu_seconds_total平稳。
- OpenTelemetry追踪链不完整,缺少数据库查询的span。
- 日志系统无异常错误。
诊断
- 检查OpenTelemetry Collector配置:查看otel-collector-config.yaml,发现缺少batch处理器,导致span发送延迟。
- 验证Prometheus Scrape配置:确认scrape_configs中是否包含otel-collector的指标端点。
- 检查Collector日志:使用kubectl logs 查看错误,发现超时和重试。
命令
查看当前Collector配置
kubectl get configmap otel-collector-config -o yaml > otel-collector-config.bak.yaml
更新配置并应用
编辑配置文件,添加batch处理器:
processors:
batch:
timeout: 5s
send_batch_size: 1000
应用变更:
kubectl apply -f otel-collector-config.yaml
kubectl rollout restart deployment otel-collector
验证Prometheus Target
kubectl port-forward svc/otel-collector 8888
curl http://localhost:8888/metrics | grep otel
风险控制
- 在非生产环境先测试配置变更。
- 使用蓝绿部署策略更新Collector。
- 备份当前ConfigMap和Deployment配置。
- 监控Collector资源使用,避免OOM。
回滚
如果变更导致问题,立即回滚:
kubectl apply -f otel-collector-config.bak.yaml
kubectl rollout restart deployment otel-collector
验证
- 确认Grafana面板中P99延迟下降。
- 查看OpenTelemetry追踪是否完整,数据库查询span出现。
- 使用PromQL查询:
histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))。
何时提交OpsGlobal工单
- 经过上述步骤问题仍未解决。
- 核心指标或追踪完全丢失。
- 需要专家协助优化Collector性能或配置。
- 怀疑基础设施层面存在未知瓶颈。
适用场景
适合正在处理 Observability、Kubernetes, SRE, 可观测性, Prometheus 相关问题的团队,用于快速建立排查路径和交付标准。
问题背景
本文通过一个实际场景,详细介绍了如何诊断和解决Kubernetes环境中基于Prometheus、Grafana和OpenTelemetry的监控与追踪问题,包含完整的故障排查步骤和风险控制建议。
排查步骤
先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。
命令示例
示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。
风险说明
生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。
回滚方案
保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。
交付清单
问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。
遇到类似技术问题?
如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。