当前位置: 首页 > 知识库问答 >
问题:

如何在java中为Jaeger API更改主机和端口

寇照
2023-03-14
sudo docker run -d --name jaeger \
  -p 5775:5775/udp \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 14268:14268 \
  jaegertracing/all-in-one:latest
@WebListener
public class TracingContextListener implements ServletContextListener {

      @Inject
      private io.opentracing.Tracer tracer;

        public void contextInitialized(ServletContextEvent servletContextEvent) {
             GlobalTracer.register(tracer);
        }

        public void contextDestroyed(ServletContextEvent servletContextEvent) {

        }

        @Produces
        @Singleton
        public static io.opentracing.Tracer jaegerTracer() {
          return new Configuration("MyApplication", new Configuration.SamplerConfiguration(
              ProbabilisticSampler.TYPE, 1),
              new Configuration.ReporterConfiguration())
              .getTracer();
        }
}

现在,这一切都很好,我可以在http://localhost:16686中看到跟踪

问题:我想在外部环境中设置Jager,并从另一个应用服务器连接(应用服务器在主机模式下运行在Wildfly10 docker上)。将来,Jaeger实例可能会被多个服务器实例用于跟踪。

在查看了如下所述的来源和各种参考资料后,我尝试了以下选项。但它总是连接到本地。我尝试了不同的端口,如5775,6831,6832,但结果是一样的。

  return new Configuration("MyApplication", new Configuration.SamplerConfiguration(
          ProbabilisticSampler.TYPE, 1, "server2.mycompany.com:5778"),
          new Configuration.ReporterConfiguration())
          .getTracer();

此外,我还尝试将JAEGER_ENDPOINT和JAEGER_SAMPLER_MANAGER_HOST_PORT设置为环境变量。但失败了。

在一篇参考文章中,我发现“Jaeger客户机库希望jaeger-agent进程在每个主机上本地运行……”。

这是否意味着我不能以cebtrelized的方式使用它,而需要在每个应用服务器实例中设置Jaeger?否则怎么办?

共有1个答案

万俟财
2023-03-14

答对了!

我们需要如下所示设置ReporterConfigurations。以前我的是默认的,这就是为什么它总是连接到本地。

return new Configuration("MyApplication", 
        new Configuration.SamplerConfiguration(ProbabilisticSampler.TYPE, 1, "server2.mycompany.com:5778"),
        new Configuration.ReporterConfiguration(false, "server2.mycompany.com",6831,1000,100))
        .getTracer();

更好的是,您可以从如下所示的环境中创建配置,提供如下所示的环境变量

return Configuration.fromEnv().getTracer();
 -DJAEGER_SAMPLER_TYPE=probabilistic
 -DJAEGER_SAMPLER_PARAM=1
 -DJAEGER_SAMPLER_MANAGER_HOST_PORT=server2.mycompany.com:5778
 -DJAEGER_REPORTER_LOG_SPANS=false
 -DJAEGER_AGENT_HOST=server2.mycompany.com
 -DJAEGER_AGENT_PORT=6831
 -DJAEGER_REPORTER_FLUSH_INTERVAL=1000
 -DJAEGER_REPORTER_MAX_QUEUE_SIZE=100
 -DJAEGER_SERVICE_NAME=MyApplicationNameX 
 类似资料:
  • 您可以通过不同方式配置主机和端口,如下列出从最高优先级到最低优先级。 注意: 如果为port指定字符串值'0'(不是 0),将为您的Nuxt应用程序分配一个随机端口。 作为命令参数直接传递 nuxt --hostname myhost --port 3333 或 "scripts": { "dev": "nuxt --hostname myhost --port 3333" } 在 nuxt.

  • 我在windows 10上使用MAMP,无法启动Apache服务器,因为系统使用了我的默认端口(80)。所以我把默认端口改为8080。但现在我无法访问以前设置的虚拟主机站点。请帮帮我 我已经试过了: 1) MAMP\bin\apache\conf\httpd。形态 2) MAMP\bin\apache\conf\extra\httpd ssl。形态 3) 主机文件 4) MAMP\bin\apac

  • 我是一个新的Android系统,我有一个按钮,当我点击按钮时,它会显示一个弹出菜单。 它有两个项目,白天和晚上。 当我按夜间按钮时,整个活动主题更改为黑色,文本颜色为白色,而按白天按钮时,活动主题更改为白色,文本颜色为黑色。 我有一个代码,但它只更改弹出菜单。 我如何更改活动主题。 我的代码: style.xml

  • 我想用sun jdk改变maven java home,它是开放的jdk。我怎么做? 太抱歉了。我忘了写下面的代码: 我的java home默认路径已经是sun jdk了。但是maven java home已经指出了OpenJDK。我只想为Maven修复它。

  • 问题内容: 我想更改运行我的应用程序的主机和端口。我设置并进入,但是命令仍然在默认值上运行。如何更改flask命令使用的主机和端口? 问题答案: 该命令与方法分开。它看不到应用程序或其配置。要更改主机和端口,请将它们作为选项传递给命令。 通过以获取完整的选项列表。 设置配置也不会影响该命令,因为该命令看不到应用程序的配置。 切勿将开发服务器暴露在外部(例如绑定到)。使用生产WSGI服务器,例如uW

  • 问题内容: 我正在尝试使用python更改url中的主机名,并且一直在使用urlparse模块一段时间,但找不到令人满意的解决方案。例如,考虑URL: https://www.google.dk:80/barbaz 我想将“ www.google.dk”替换为“ www.foo.dk”,因此得到以下网址: https://www.foo.dk:80/barbaz。 因此,我要替换的部分是urlpa