You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行OpenTelemetry Collector报Jaeger连接TRANSIENT_FAILURE无链路数据

问题原因定位

TRANSIENT_FAILURE错误本质是OTel Collector的Jaeger Exporter无法和Jaeger Collector后端建立gRPC连接,同时无Collector日志说明Go应用的链路数据根本没有发送到OTel Collector侧,常见具体错误点如下:

  • 容器网络配置错误:OTel Collector和Jaeger未处于同一docker网络,无法互相解析主机名,或者Jaeger的gRPC端口(默认14250)未对Collector开放
  • OTel Collector配置错误:Jaeger Exporter的端点地址/端口填写错误,或者OTLP Receiver未开启、监听地址限制为容器本地无法接收宿主机请求,或者traces链路管道未关联对应的接收器和导出器
  • Go应用配置错误:OTLP导出端点指向了错误的地址/端口,或者采样规则配置为0采样率,没有生成链路数据上报
解决方法

步骤1:修复OTel Collector到Jaeger的连接问题

优先解决TRANSIENT_FAILURE报错

  • 检查docker-compose.yaml配置,确保OTel Collector和Jaeger服务被划分到同一个自定义网络下,Jaeger服务暴露14250 gRPC端口
  • 修改OTel Collector配置中Jaeger Exporter的端点,填写Jaeger服务的docker服务名+端口,示例:endpoint: "jaeger:14250",禁止填写127.0.0.1:14250(容器内部127.0.0.1无法访问其他容器的端口)
  • 进入Jaeger容器执行netstat -tnlp,确认14250端口处于LISTEN状态

步骤2:修复Go应用到OTel Collector的上报问题

解决无Collector日志的问题

  • 修改OTel Collector的OTLP Receiver监听地址为0.0.0.0:4317,避免限制为容器本地访问
  • 检查docker-compose.yaml中OTel Collector的端口映射,确保4317(gRPC)/4318(HTTP)端口已映射到宿主机对应端口
  • 调整Go应用的OTLP导出端点:如果Go应用跑在宿主机,填写127.0.0.1:4317;如果Go应用也跑在容器中,填写OTel Collector的docker服务名+4317端口
  • 临时将Go应用的采样规则调整为全采样trace.AlwaysSample(),排除采样过滤导致无数据的问题

步骤3:验证Collector链路管道配置

确认OTel Collector配置中的traces管道已关联对应组件,示例配置:

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [jaeger]

内容的提问来源于stack exchange,提问作者SDB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:09:02