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

跨主机运行服务的Jaeger后端配置及教程适配设置问题

刚好处理过不少跨主机部署Jaeger的场景,来给你详细解答这两个问题:

1. 跨主机场景下的Jaeger后端配置

要让不同主机上的服务都能把追踪数据发到同一Jaeger后端,核心是解决网络连通和客户端配置两个问题:

  • 先搞定网络可达性:
    确保Jaeger后端所在主机的防火墙/安全组开放了必要端口:
    • Collector的HTTP端口:14268(默认)
    • Collector的gRPC端口:14250(默认)
    • 如果用Jaeger Agent转发,还要开放Agent的UDP端口:6831/6832(默认)
      可以在服务主机上用curl http://<jaeger主机IP>:14268测试是否能连通。
  • 选择合适的部署模式:
    • 直接发送到Collector:适合服务数量不多、网络稳定的场景。只需要在每个服务的Jaeger客户端里,把数据发送地址配置成Jaeger主机的IP/域名+Collector端口,比如HTTP地址就是http://<jaeger主机IP>:14268/api/traces。
    • 通过Agent转发:适合服务数量多或者网络波动大的场景。在每个服务所在的主机上部署一个轻量的Jaeger Agent(守护进程),服务客户端只需要把数据发给本地Agent(默认是localhost:6831),再让Agent批量转发到远端的Collector。启动Agent的时候指定Collector地址就行,比如:
      jaeger-agent --reporter.grpc.host-port=<jaeger主机IP>:14250
      

2. 针对你提到的Java教程的具体设置

那个教程里的示例是多服务的分布式追踪场景,要让不同主机上的服务都发数据到同一Jaeger后端,这么改就行:

  • 方法一:修改代码配置
    教程里创建Tracer的代码大概是用JaegerTracer.Builder,你需要给Reporter指定远端Collector的地址,比如:
    JaegerTracer tracer = new JaegerTracer.Builder("你的服务名称")
        .withReporter(new RemoteReporter.Builder()
            .withSender(new HttpSender("http://<jaeger主机IP>:14268/api/traces"))
            .build())
        .withSampler(new ConstSampler(true))
        .build();
    
    每个服务都要对应修改自己的服务名称和Collector地址。
  • 方法二:用环境变量(更方便,不用改代码)
    运行每个服务的时候,先设置环境变量指定Jaeger的Endpoint:
    • Linux/macOS终端:
      export JAEGER_ENDPOINT=http://<jaeger主机IP>:14268/api/traces
      # 然后启动你的Java服务,比如 java -jar your-service.jar
      
    • Windows命令行:
      set JAEGER_ENDPOINT=http://<jaeger主机IP>:14268/api/traces
      # 再启动Java服务
      
  • 要是你想用Agent模式,就在每个服务主机上先启动Jaeger Agent(命令参考上面第一部分),然后服务的客户端保持默认的本地Agent配置就行,不用改代码或者环境变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:32:45