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

OTLP Collector对接Jaeger遇TLS握手失败及配置咨询

问题解决:OTLP Collector TLS握手失败及跨服务器部署配置

错误原因

你遇到的 tls: first record does not look like a TLS handshake 错误核心原因是:Jaeger all-in-one镜像默认的4317端口(OTLP gRPC接收端)是明文传输,未启用TLS,但你的OTLP Collector导出端配置了tls: insecure: false,强制要求TLS连接,两边协议不匹配导致握手失败。


核心解决方案:修正OTLP导出端配置

直接将Collector的OTLP导出端TLS配置改为明文模式,匹配Jaeger默认设置:

exporters:
  otlp:
    endpoint: "jaegersite.com:4317"
    tls:
      insecure: true  # 关键:禁用TLS,使用明文gRPC连接Jaeger默认端口
  debug:
    verbosity: detailed

注:insecure_skip_verify: true 是用于跳过TLS证书验证的参数,前提是对方启用了TLS;而Jaeger默认4317端口根本没开TLS,所以必须设置insecure: true。


跨服务器部署全流程配置要点

1. 业务应用端(第一台服务器)

  • 配置应用的OTLP导出器,指向Collector服务器的IP/域名:
    • 若用gRPC协议:目标地址为 collector-server-ip:4317
    • 若用HTTP协议:目标地址为 http://collector-server-ip:4318/v1/traces
  • 确保应用服务器的防火墙/安全组允许访问Collector的4317/4318端口

2. OTLP Collector端(第二台服务器)

  • 接收端配置保持现有即可,0.0.0.0:4317 表示监听所有网卡,支持跨服务器接收数据:
    receivers:
      otlp:
        protocols:
          http:
          grpc:
            endpoint: "0.0.0.0:4317"
    
  • 若需要给应用→Collector的传输加密,可给Collector的接收端添加TLS配置:
    receivers:
      otlp:
        protocols:
          http:
            tls:
              cert_file: "/etc/otelcol-contrib/certs/server.crt"
              key_file: "/etc/otelcol-contrib/certs/server.key"
          grpc:
            endpoint: "0.0.0.0:4317"
            tls:
              cert_file: "/etc/otelcol-contrib/certs/server.crt"
              key_file: "/etc/otelcol-contrib/certs/server.key"
    
    此时应用端需配置信任Collector的证书,或临时启用跳过验证(仅测试环境)。
  • 确保Collector服务器的4317/4318端口对外开放,允许应用服务器IP访问

3. Jaeger端(第三台服务器)

  • 现有启动命令已正确暴露4317/4318端口,无需修改;确保Jaeger服务器的4317端口对外开放,允许Collector服务器IP访问
  • 若需给Jaeger的OTLP接收端启用TLS(生产环境加密需求),需修改启动命令添加TLS参数:
    docker run -d --name jaeger \
      -p 5775:5775/udp \
      -p 6831:6831/udp \
      -p 6832:6832/udp \
      -p 5778:5778 \
      -p 16686:16686 \
      -p 14250:14250 \
      -p 14268:14268 \
      -p 14269:14269 \
      -p 4317:4317 \
      -p 4318:4318 \
      -p 9411:9411 \
      -v /path/to/jaeger/certs:/certs \
      jaegertracing/all-in-one:1.52 \
      --otlp-grpc.tls.enabled=true \
      --otlp-grpc.tls.cert-file=/certs/jaeger.crt \
      --otlp-grpc.tls.key-file=/certs/jaeger.key
    
    同时Collector的导出端需配置:
    exporters:
      otlp:
        endpoint: "jaegersite.com:4317"
        tls:
          insecure: false
          insecure_skip_verify: true  # 自签名证书测试用,生产环境需配置ca_file
    

额外排查步骤

  • 在Collector服务器上测试Jaeger连通性:执行 grpcurl -plaintext jaegersite.com:4317 list,若返回服务列表则连通正常
  • 检查三台服务器的防火墙/安全组规则,确保对应端口的入站/出站权限开放
  • 验证Docker端口映射:Collector的Compose文件和Jaeger的启动命令已正确映射端口,无需调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:25:12