在Spring Boot应用程序之间Jaeger中未显示服务依赖性

时间:2019-03-19 11:09:00

标签: spring spring-boot opentracing jaeger

我目前正在尝试使用https://github.com/opentracing-contrib/java-spring-web用Jaeger跟踪两个Spring Boot(2.1.1)应用程序

<dependency>
  <groupId>io.opentracing.contrib</groupId>
  <artifactId>opentracing-spring-web-starter</artifactId>
</dependency> 

也尝试没有成功

<dependency>
  <groupId>io.opentracing.contrib</groupId>
  <artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
</dependency>

对每个服务/应用程序的Span进行跟踪都可以,但是不能在全局范围内对REST请求进行跟踪。 就像您在图中看到的那样,服务之间没有显示依赖关系。

Missing App in trace between 2 Apps

这项工作不是在图书馆中进行的吗?还是我必须自己实现一些拦截器并请求过滤器,如果是这样,怎么做?

您可以签出包含问题的简约项目 here

顺便说一句:Jaeger通过docker以多合一的方式运行并按预期工作

docker run \
--rm \
--name jaeger \
-p5775:5775/udp \
-p6831:6831/udp \
-p6832:6832/udp \
-p5778:5778 \
-p16686:16686 \
-p14268:14268 \
-p9411:9411 \
jaegertracing/all-in-one:latest

2 个答案:

答案 0 :(得分:1)

问题是您正在使用RestTemplate template = new RestTemplate();获取RestTemplate的实例以进行REST调用。

这样做意味着Opentracing无法检测调用以添加必要的HTTP标头。

请考虑使用@Autowired RestTemplate restTemplate

答案 1 :(得分:0)

您能否尝试使用Jaeger的最新版本:https://www.jaegertracing.io/docs/latest/getting-started/#all-in-one-实际上1.11已经发布,所以可以尝试。