【发布时间】:2021-05-27 12:19:43
【问题描述】:
我有一个响应式 SpringBoot Web 应用程序。此应用程序使用 Spring-Data-Elasticsearch 从 Elasticsearch 请求数据。该应用程序配置为使用 Jaeger 跟踪器进行 API 请求监控。
Jaeger 工作正常,除了 Elasticsearch 请求 - 它们不会出现在跟踪的嵌套跨度中。存在任何其他网络请求。
我有以下gradle.build 配置:
gradle.build:
springBootVersion = '2.4.2'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-webflux'
implementation 'org.springframework.boot:spring-boot-starter-reactor-netty'
implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
implementation 'io.opentracing.contrib:opentracing-spring-jaeger-web-starter:2.0.3'
implementation 'io.opentracing.contrib:opentracing-elasticsearch7-client:0.1.2'
application.yml
spring:
data:
elasticsearch:
client:
reactive:
endpoints:
- localhost:9200
一个 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 14250:14250 -p 9411:9411 jaegertracing/all-in-one:latest
有人对 Jaeger 为什么不跨越 elasticsearch 请求有任何想法吗?
【问题讨论】:
-
您找到解决方案了吗?
-
我没有找到任何开箱即用的解决方案。我也尝试了 sleuth/zipkin,但也没有用。因此,我通过
.filter(ExchangeFilterFunction.ofRequestProcessor(...)和.filter(ExchangeFilterFunction.ofResponseProcessor(...)在WebClient 中手动添加了跨度,但这会产生两个单独的跨度。在我的情况下,我使用响应式 Web 客户端,我无法合并这两个跨度来计算请求的持续时间。
标签: java spring-boot elasticsearch spring-data-elasticsearch jaeger