我正在使用 Jaeger UI 来显示来自我的应用程序的跟踪。如果两个应用程序和 Jaeger 都在同一台服务器上运行,这对我来说很好。但我需要在不同的服务器上运行我的 Jaeger 收集器。我尝试使用 JAEGER_ENDPOINT、JAEGER_AGENT_HOST 和 JAEGER_AGENT_PORT,但失败了。
我不知道,我对这些变量的值设置是否错误。是否需要在应用程序代码中进行任何配置设置?
您能为我提供有关此问题的任何文档吗?
我正在使用 Jaeger UI 来显示来自我的应用程序的跟踪。如果两个应用程序和 Jaeger 都在同一台服务器上运行,这对我来说很好。但我需要在不同的服务器上运行我的 Jaeger 收集器。我尝试使用 JAEGER_ENDPOINT、JAEGER_AGENT_HOST 和 JAEGER_AGENT_PORT,但失败了。
我不知道,我对这些变量的值设置是否错误。是否需要在应用程序代码中进行任何配置设置?
您能为我提供有关此问题的任何文档吗?
在服务器 2 中,安装 jaeger
$ 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 \
-p 9411:9411 \
jaegertracing/all-in-one:latest
在服务器 1 中,设置这些环境变量。
JAEGER_SAMPLER_TYPE=probabilistic
JAEGER_SAMPLER_PARAM=1
JAEGER_SAMPLER_MANAGER_HOST_PORT=(EnterServer2HostName):5778
JAEGER_REPORTER_LOG_SPANS=false
JAEGER_AGENT_HOST=(EnterServer2HostName)
JAEGER_AGENT_PORT=6831
JAEGER_REPORTER_FLUSH_INTERVAL=1000
JAEGER_REPORTER_MAX_QUEUE_SIZE=100
application-server-id=server-x
在服务器 1 中更改跟踪器注册应用程序代码如下,以便它可以从环境变量中获取配置。
@Produces
@Singleton
public static io.opentracing.Tracer jaegerTracer() {
String serverInstanceId = System.getProperty("application-server-id");
if(serverInstanceId == null) {
serverInstanceId = System.getenv("application-server-id");
}
return new Configuration("ApplicationName" + (serverInstanceId!=null && !serverInstanceId.isEmpty() ? "-"+serverInstanceId : ""),
Configuration.SamplerConfiguration.fromEnv(),
Configuration.ReporterConfiguration.fromEnv())
.getTracer();
}
希望这有效!
检查此链接以将弹性搜索集成为持久性存储后端,以便在 Jaeger 实例停止后不会删除跟踪。 如何使用 elasticsearch 配置 Jaeger?