Jaeger 故障排除:常见问题诊断
介绍
Jaeger作为分布式追踪系统,在微服务架构中帮助开发者监控请求链路。但在实际使用中,初学者常会遇到配置错误、数据丢失或查询失败等问题。本文将逐步分析典型故障场景,并提供可操作的解决方案。
1. 连接类问题
1.1 Agent与Collector通信失败
症状:
- Jaeger UI中无最新数据
- Agent日志出现
"Failed to send spans"
错误
诊断步骤:
- 检查Agent配置中的Collector地址:
jaeger-agent --collector.host-port=jaeger-collector:14267
- 验证网络连通性:
telnet jaeger-collector 14267
# 或使用现代工具
nc -zv jaeger-collector 14267
提示
如果使用Docker,确保容器在同一个网络:
docker network create jaeger-net
docker run --network=jaeger-net jaegertracing/jaeger-collector
1.2 采样率配置错误
实际案例:
某服务部署后Jaeger无数据,发现采样率被误设为0:
# 错误配置
sampling:
strategies:
- type: probabilistic
param: 0 # 0%采样率
修正为合理值:
param: 0.1 # 10%采样率
2. 数据类问题
2.1 跨度(Span)缺失
诊断流程图:
2.2 标签(Tags)未显示
代码示例(Go语言):
错误实现:
span := tracer.StartSpan("operation")
defer span.Finish()
// 忘记设置标签
正确实现:
span.SetTag("http.method", "GET")
span.SetTag("user.id", userID)
3. 查询类问题
3.1 搜索无结果
常见原因:
- 时间范围设置错误
- 服务名大小写不匹配(Jaeger默认区分大小写)
验证方法:
直接查询存储后端(如Elasticsearch):
curl -XGET 'http://elasticsearch:9200/jaeger-span-*/_search?q=service:frontend'