问题标签 [spring-cloud-sleuth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2048 浏览

spring - Spring Cloud sleuth with Spring data jpa

我们正在尝试在我们的项目中使用 Zipkin 实现 Spring cloud sleuth,并想知道 Spring cloud sleuth 是否支持使用 Spring data JPA 进行 DB 调用。

我想跟踪数据库调用所花费的时间,就像服务调用一样

当我使用 RestTemplate 进行服务调用时,它会被发送到 zipkin,我可以在仪表板上看到它

但是与 Spring 数据 jpa 的 DB 交互没有显示在 Zipkin 中

0 投票
1 回答
6784 浏览

java - 侦探日志 traceId 未传播到另一个服务

我尝试在我的微服务中添加分布式跟踪(在 Azure 中的 Kubernetes 下)。

我在父 pom.xml 中添加了依赖项:

我使用 1.4.1 和 CAMDEN.SR4,因为 fabric8 kubeflix 不支持更新的版本。我强迫 1.1.3.RELEASE 尝试最新的 sleuth 版本,看看它是否是旧版本的 sleuth 中的错误。

我使用 logback-spring.xml 的这个配置:

这是我的 application.yml :

zipkin URL 是暴露 Zipkin 服务器的 Kubernetes 服务(带有 @EnableZipkinServer 的 Spring boot 应用程序)

然后我使用以下代码调用第一个服务(services-1):

产生这些日志:

如您所见,它使用 RestTemplate 调用 services-i18n-2 服务,生成以下日志:

如您所见,service-2 (e0c6495a0a598cff) 中的 traceId 与 service-1 (eaf3dbcb2f92091b) 不同。

在 service-2 中,traceId 与 spanId 相同。

问题 :

  • 为什么我没有将 traceId 传播到 service-2 以便能够在 Zipkin 中看到完整的堆栈跟踪?
  • 为什么 service-2 中的 traceId 等于 spanId ?
  • 为什么 exportable 在 service-1 中是错误的?Zipkin 服务器看不到这些日志。
  • 我在 Zipkin 服务器中收到了 rxjava 跨度的垃圾邮件。我已经尝试过 spring.sleuth.rxjava.schedulers.ignoredthreads=rxjava 但它仍然适用于 Zipkin。

仅供参考,我在依赖项中有 Hystrix,并且我已经删除了 @HystrixCommand 以确保 Hystrix 在每次 HTTP 调用时创建一个新的 traceId 没有问题。

0 投票
1 回答
189 浏览

spring - Spring Cloud Sleuth - 带有 ManagedExecutorService 的 BeanCreationException

我们正在使用具有以下堆栈的 Spring Cloud 开发服务:

Spring Boot 1.5.2 Spring Cloud Camden SR 6。(Spring Cloud Consul 1.1.3)WebSphere Liberty 16.x

我们在一些服务项目中使用了 Liberty 的线程机制,如下所示:

}

出于调试目的,我正在尝试使用 Spring cloud Sleuth。在将 spring-cloud-starter-sleuth:1.1.3 添加到 POM 时,服务器启动失败并抱怨 com.ibm.ws.concurrent.internal.ManagedExecutorServiceImpl。

所以我在application.properties中添加了spring.aop.proxyTargetClass=false。但这也无济于事。我仍然在服务器启动时遇到异常。

我真的很感谢你的帮助。

堆栈跟踪

0 投票
2 回答
1031 浏览

spring - spring-cloud-sleuth(boot) 与 spring-integration 的集成

当 Spring Integration(spring boot) 应用程序调用 Spring boot 应用程序以对 traceID 和 spanID 进行侦探日志记录时,就会出现问题。

URL调用--> Facade(用spring集成编写,spring boot并支持sleuth)--> Spring boot微服务(支持Sleuth)

微服务一:spring集成Http调用

微服务 2:spring boot 休息控制器

这是两个微服务的日志的详细信息。

微服务 1 调用微服务 2

微服务 1 日志:

2017-04-18 17:42:31.887[0;39m [32m INFO [CS Facade, ff711e7b275d03a7 ,b3f14f1a5cf6bd1d,true][0;39m [35m6280[0;39m [2m---[0;39m [2m[

微服务 2 日志:

[2m2017-04-18 17:43:26.133[0;39m [32m INFO [-, 32226de675c3a463 ,32226de675c3a463,false][0;39m [35m14184[0;39m [2m---[0;39m [2m[nio -8083-exec-1][0;39m [36mc.t.cloud.resource.HelloResource

虽然,两者都有相同的请求调用,但 traceID 是不同的。当两个应用程序都是纯 spring boot 应用程序并且没有使用 http spring 集成时,它可以完美运行。

微服务 1 代码

微服务 2 代码

0 投票
1 回答
1087 浏览

spring - 侦探框架重复traceID

我知道侦探框架为每个新请求生成唯一的 TraceID。

https://cloud.spring.io/spring-cloud-sleuth/

但是,想知道它是如何生成 ID 的。今天生成的唯一 TraceID 是否有可能在几个月或几年后再次生成?是随机数生成算法吗?我需要在我的应用程序中处理这种情况吗?

0 投票
2 回答
4363 浏览

spring-boot - Sleuth 不显示跟踪 ID 和跨度 ID

我正在尝试运行 Spring Boot 应用程序并在 Sleuth 的支持下跟踪其执行情况。日志显示服务名称,但不显示跟踪 ID 或跨度 ID。我得到的只是 [myservice,,,]。

我错过了什么?

以下是日志中的一些行。

2017-04-30 14:41:38.750 INFO [myservice,,,] 7 --- [main] scaAnnotationConfigApplicationContext:刷新 org.springframework.context.annotation.AnnotationConfigApplicationContext@5e57643e:启动日期 [Sun Apr 30 14:41:38格林威治标准时间 2017];上下文层次的根

2017-04-30 14:41:39.264 INFO [myservice,,,] 7 --- [main] faAutowiredAnnotationBeanPostProcessor:发现并支持自动装配 JSR-330 'javax.inject.Inject' 注释

...

谢谢

0 投票
1 回答
949 浏览

java - 用于日志记录和分布式跟踪的 Spring Boot 自定义启动器

我正在开发一个自定义的 Spring Boot 启动器,目的是为我们在分布式系统中拥有的所有 Spring Boot 应用程序提供自动配置,所以这样,每次需要更改配置时,都可以完成在一个地方,而不是跨越所有不同的应用程序应用更改,而只需对依赖项进行版本更新就足够了。

由于我要介绍的主题是日志记录和分布式跟踪,所以现在坚持使用 logback,但考虑在未来也提供 log4j2 支持,启动器包括以下依赖项:

  • spring-boot-starter-web
  • spring-cloud-starter-sleuth

我对此的第一个看法是在启动器的自动配置模块的文件夹中包含一个logback.xml文件src/main/resources,并且使用启动器的应用程序获取配置。

我遇到的问题是,当 Sleuth 在类路径中时,当 EnvironmentPostProcessor 使用[app name, traceId, spanId, exported]元组更新级别模式时,出现的应用程序名称不是使用应用程序的 application.yml 文件中bootstrap定义的名称spring.application.name初学者,不知道为什么,找不到原因的线索:(

所以,为了解决这个问题,我做了以下事情:

  • 在模式中替换为${LOG_LEVEL_PATTERN:-%5p}%5p并在模式中的其他位置添加跟踪信息[%X{X-B3-TraceId:-},%X{X-B3-SpanId:-}]
  • 使用过滤器,自动装配,@Value("${spring.application.name}")然后MDC#put是应用程序名称。

然后我意识到,这种方法只适用于 HTTP 请求,而没有其他作用,所以这还不够好,因为应用程序还利用了与 JMS / Spring Cloud Stream 的异步通信。

然后我想将应用程序名称添加到MDC包含一个 ApplicationContextInitializer 中,认为它将使其可用于所有用例(HTTP 请求、消息传递等)。但遗憾的是,该值在应用程序启动期间存在于日志中,然后在 HTTP 请求中消失了(尚未尝试消息传递,但直觉是它也不会出现在那里)。

所以问题是,既然我有点卡住了,不知道还能去哪里看,那么实现将价值spring.application.name纳入 MDC 以便它可以出现在每个日志中的最佳方法/机制是什么?

提前致谢!

0 投票
2 回答
5854 浏览

spring-boot - 如何使用 Spring Sleuth 记录 MDC?

我有一个基于 Spring Boot + sleuth 的应用程序。一切都按预期工作。我现在有这样的日志:

现在,我想将自定义 MDC 添加到我的日志中,例如合同参考。我想要这样的日志:

我尝试了各种没有成功的事情:

  1. 使用 Spring Sleuth Tracer 添加标签;
  2. 使用 MDC.put(xxx, xxx) 将 logging.pattern.level=%5p %mdc 添加到我的 application.properties 文件中

如何将自定义 MDC/标签添加到我的日志中?

0 投票
1 回答
909 浏览

spring-boot - 使用 @ControllerAdvice 进行 Sleuth/Zipkin 跟踪

我最近将我的项目从 Spring Boot 1.4.1、Spring Cloud Sleuth 1.1.0、Spring Cloud Zipkin 1.1.0 升级到 Spring Boot 1.5.3、Spring Cloud Sleuth 1.2.0、Spring Cloud Zipkin 1.2.0。

阅读最新版本的 Spring Cloud Sleuth,他们添加了“错误”标签,如果出现任何异常,这些标签会自动报告给 Zipkin。

我有一个 @ControllerAdvice 类扩展 ResponseEntityExceptionHandler 用于自定义异常处理。在使用旧版本(Spring Boot 1.4.1、Spring Cloud Sleuth 1.1.0、Spring Cloud Zipkin 1.1.0)时,我能够使用以下方法向 Tracer 报告错误并在 Zipkin 中显示相同的错误:

升级后,这似乎不起作用,并且 spring cloud sleuth 的默认错误报告也没有发生。只有在注释掉 @ControllerAdvice 并让 Spring Boot 的默认 ErrorController 处理异常之后,我才能在 Zipkin 中可视化错误。但是,我们需要自定义异常处理来以标准方式格式化错误响应,并在我们所有的 PaaS 服务中使用错误代码。有没有办法做到这一点?我应该使用任何其他 Sleuth 对象来实现这一点吗?

0 投票
1 回答
1208 浏览

spring-boot - 如何在 Spring Boot 微服务中配置 Spring Cloud Sleuth

有人可以帮帮我吗?我想将 Spring Sleuth 与我的 Spring Boot 微服务集成。我添加了spring-cloud-starter-sleuth依赖。也尝试通过添加 SLF4J 以及它。但它是打印正常日志。不以 Sleuth 样式打印,例如应用程序名称、跨度 id、traceid 等。我不确定它是否识别依赖关系?我需要添加任何其他依赖项吗?任何属性文件?

你能指导一下确切的依赖吗?以及配置的具体步骤?