首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jaeger不跨越elasticsearch请求

Jaeger不跨越elasticsearch请求
EN

Stack Overflow用户
提问于 2021-05-27 12:19:43
回答 1查看 478关注 0票数 1

我有一个反应性的SpringBoot网络应用程序。这个应用程序使用从Elasticsearch请求数据。应用程序被配置为使用Jaeger跟踪器来监视API请求。

Jaeger工作正常,除了Elasticsearch请求--它们不会出现在跟踪的嵌套范围中。任何其他网络请求都会出现。

我有以下gradle.build配置:

代码语言:javascript
复制
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 run命令:

代码语言:javascript
复制
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请求?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-15 12:56:14

这里有一个可行的解决方案。我们需要

  • 重用存在的bean、TracerTracer

  • 在ES web客户端配置中添加了一个跟踪过滤器:

@Configuration @RequiredArgsConstructor公共类ElasticSearchClientConfiguration实现ErrorLogging {私有最终跟踪器属性;私有最终跟踪器跟踪器;私有最终列表spanDecorators;@Bean public ClientConfiguration clientConfiguration() ({ElasticSearchClientConfiguration builder = ClientConfiguration.builder().connectedTo(properties.getEndpoints().toArray(new String));configureWebClient(构建器);返回builder.build();}私有空configureWebClient(ClientConfiguration.TerminalClientConfigurationBuilder构造器){ builder.withWebClientConfigurer( webClient -> webClient .mutate() .filters(addTraceExchangeFilterFunctionIfNotPresent()) .build());}私有Consumer addTraceExchangeFilterFunctionIfNotPresent() {返回函数-> { if (functions.stream() .noneMatch(Function->functions.stream)){functions.add(跟踪器,TracingExchangeFilterFunction));}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67721987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档