EKS上Jaeger未接收HotRod应用追踪数据问题求助
排查Jaeger与HotRod追踪数据不显示的问题
核心排查步骤
1. 验证命名空间与服务可达性
- 确认HotRod与Jaeger Collector是否在同一命名空间:如果HotRod不在
observability命名空间,http://jaeger-collector:14250无法解析。解决方式:要么将HotRod部署到observability,要么使用跨命名空间服务地址http://jaeger-collector.observability.svc.cluster.local:14250。 - 进入HotRod容器内部执行
curl -v http://jaeger-collector:14250(或对应跨命名空间地址),确认能连通Collector的gRPC端口(14250为Jaeger gRPC接收端口)。若不通,排查网络策略、Service端口暴露配置。
2. 检查Jaeger Collector配置与日志
- 查看Collector日志:
kubectl logs -n observability <jaeger-collector-pod-name>,搜索是否有接收追踪数据的日志,或格式错误、权限异常等报错信息。 - 确认Collector启用gRPC端口:检查启动参数是否包含
--collector.grpc-server.host-port=:14250(默认启用,但DaemonSet部署可能存在自定义配置)。
3. 检查HotRod环境变量与日志
- 验证HotRod环境变量:执行
kubectl exec <hotrod-pod-name> -- printenv | grep OTEL_EXPORTER_JAEGER_ENDPOINT,确保地址配置正确。 - 查看HotRod日志:
kubectl logs <hotrod-pod-name>,搜索是否有发送追踪数据的错误日志(如连接超时、发送失败),HotRod基于OpenTelemetry SDK,日志会包含exporter相关信息。
4. 验证Jaeger存储后端状态
- 若使用默认内存存储,确认Collector内存充足,无数据被覆盖情况;生产环境建议切换至Elasticsearch等持久化存储。
- 查看Jaeger Query日志:
kubectl logs -n observability <jaeger-query-pod-name>,确认Query能正常连接存储后端,无查询报错。
5. 排查网络策略与EKS安全组
- 检查命名空间网络策略:确认
observability命名空间允许HotRod所在命名空间的Pod访问Collector的14250端口。 - 检查Node安全组:确认DaemonSet部署的Jaeger组件所在Node允许Pod间gRPC流量(14250端口)。
快速验证方案
若以上排查无结果,可临时将HotRod部署至observability命名空间,重新配置环境变量为http://jaeger-collector:14250,操作生成追踪数据后再查看,排除跨命名空间访问问题。
内容的提问来源于stack exchange,提问作者Anamika Khantwal
相关产品推荐
相关产品推荐

