问题标签 [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 回答
219 浏览

java - spring cloud sleuth 和 Oauth2Template

我们使用带有 oauth2 的微服务作为安全机制。目前我们正在调用其他微服务,OAuth2RestTemplate如下所示:

我们使用@Autowired 注入 OAuth2RestTemplate 如下:

因此,我们的下一步是使电话可追踪。我们想使用spring cloud sleuth。

所以我添加了如下依赖:

之后,Spring 不再能够自动装配 OAuth2RestTemplate:

在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor 中抛出 IllegalArgumentException:

field.set(bean, value);导致以下异常:

如何将 OAuth2RestTemplate 与侦探结合使用?

谢谢

最大限度

0 投票
1 回答
2843 浏览

zipkin - 如何在zipkin的线程池中使用的线程中传递traceid,spanid?

我正在使用 zipkin 来跟踪跨微服务的请求。我的一项服务是使用线程池运行作业。如何将 zipkin 标头值传输到线程?是否有可用的 Zipkin 包裹的线程池/执行器?

0 投票
1 回答
608 浏览

zipkin - 如何自定义 Zipkin 消息发布者?

我创建了一个 spring-boot 应用程序,它将 zipkin 日志发布给 zipkin 消费者。但是 Zipkin 消费者(另一个 Spring Boot 应用程序)在一些身份验证过滤器后面,这些过滤器在允许之前检查请求中的多个参数/标头。在这种情况下,如何使用我自己的自定义 HttpClient 发布来自生产者的消息?

0 投票
2 回答
5675 浏览

spring - 使用 Spring Cloud Sleuth 将跟踪数据发送到 OpenZIpkin

更新:我已将代码推送到我的仓库,因此人们可以在那里查看可能出现的问题。

编辑:我几乎可以肯定它是客户端代码没有向服务器发布任何统计信息,但下面的指南都没有解释如何启用它:是否有我缺少的配置设置?

我一直在关注OpenZipkinSpring Sleuth的快速入门:我有一个从docker-zipkin运行的 Zipkin 服务器,使用docker-composeCassandra 作为后端:

我已经创建并运行了Spring Sleuth 示例应用程序,它似乎已正确配置为跟踪调用:

日志似乎表明应该记录跟踪:

但是,无论我做什么,UI 都不会显示任何痕迹。奇怪的是,它localhost:9411/trace确实显示了一堆痕迹(它们似乎主要来自 Zipkin 本身)但没有来自zipkin-demo应用程序。

我相信这是由于演示应用程序没有将跟踪发送到主机,但我只是使用Spring 的示例应用程序,所以我做错了什么?

0 投票
2 回答
2604 浏览

spring-boot - 将 Spring Cloud Sleuth 与 Spring boot amqp 集成

寻找一个显示将 spring cloud sleuth 与 spring boot amqp (rabbit) 发布者和订阅者集成的示例。

我确实在日志中看到以下消息

2016-10-21 08:35:15.708 INFO [producer,9148f56490e5742f,943ed050691842ab,false] 30928 --- [nio-8080-exec-1] abccontrollers.MessagingController:收到请求以 Activity OrderShipped 2016-10-21 08 发布:35:15.730 INFO [producer,9148f56490e5742f,943ed050691842ab,false] 30928 --- [nio-8080-exec-1] abcservice.ProducerService:消息已发布

当我查看 Queue 上的消息时,我没有看到 traceId 或添加到标题的任何其他详细信息。我应该使用 MessagePostProcessor 将这些添加到标题中吗?

另外在接收服务上应该做什么?

0 投票
2 回答
2931 浏览

spring-boot - Spring Cloud Sleuth 日志中的应用程序名称不正确

我有两个 Spring Boot 应用程序 - Application1 和 Application2。这两个应用程序都使用 Spring Cloud Sleuth。两个应用程序都部署在同一个外部 tomcat 上。以下是配置的详细信息 - 为了提供应用程序名称,我在资源文件夹中为每个应用程序添加了单独的 bootstrap.yml 文件。- 我还在 bootstrap.yml 文件中提供了活动配置文件。- 应用程序名称也添加到 application-${profile}.properties 文件中。- 之后我在类路径中添加了 logback-spring.xml。现在,当我使用两个应用程序启动 tomcat 服务器时,我在两个应用程序的 Spring Cloud Sleuth 日志中都获得了第一个应用程序名称。

我正在使用 Spring boot 1.4.1 和 Spring cloud sleuth 1.0.10

编辑:我在 bootstrap.yml 添加了应用程序名称,但我仍然面临同样的问题

0 投票
1 回答
702 浏览

java - Spring MVC HandlerInterceptorAdapter 缺少 slf4j Logback Trace ID

我有 Spring MVC 应用程序,我在其中实现了一个扩展 HandlerInterceptorAdapter 的类,以便我在执行任何控制器之前在 preHandle、postHandle 和 afterCompletion 中执行一些操作。以下是我正在观察的内容。

preHandle 日志记录 AppTime 的日志条目:00:30:01.230 | 线程:[http-nio-8080-exec-1] | 级别:信息 | 类:hello.extractor | X-Span-Export=false,X-B3-SpanId=3aad3f52e26eb59d,X-B3-TraceId=3aad3f52e26eb59d | 消息:内部 preHandle

postHandle 日志记录的日志条目 AppTime: 00:30:01.394 | 线程:[http-nio-8080-exec-1] | 级别:信息 | 类:hello.extractor | X-Span-Export=false,X-B3-SpanId=3aad3f52e26eb59d,X-B3-TraceId=3aad3f52e26eb59d | 消息:内部 postHandle

afterCompletionlogging AppTime 的日志条目:00:30:01.395 | 线程:[http-nio-8080-exec-1] | 级别:信息 | 类:hello.extractor | | 消息:在完成后。

如果您看到第三个条目缺少跟踪 ID 和跨度 ID。关于如何解决这个问题的任何想法?

公共类提取器扩展 HandlerInterceptorAdapter {

}

0 投票
1 回答
1658 浏览

spring - Spring Sleuth - 跟踪失败

在微服务环境中,我看到通过整个业务流程中的所有微服务实例跟踪请求有两个主要好处。

  1. 查找服务实例之间或之中的延迟差距
  2. 寻找失败的根源,无论是技术上的还是与商业案例有关的

Zipkin有一个工具可以解决第一个问题。但是如何使用跟踪来揭示微服务环境中的故障​​?我绝对想跟踪所有受错误影响的跨度,但不是每个请求都没有出错。正如这里提到的,可以使用自定义采样器。

或者,您可以注册自己的 Sampler bean 定义并以编程方式决定应该对哪些请求进行采样。您可以对要跟踪的内容做出更明智的选择,例如,忽略成功的请求,也许检查某个组件是否处于错误状态,或者其他任何事情。

所以我试图实现它,但它不起作用或者我用错了。因此,正如博客文章所建议的那样,我注册了自己的 Sampler:

在我的控制器中,我创建了一个新的 Span,如果引发异常,它将被标记为错误

现在,这行不通。如果我请求 /calc/a,则在 Controller 方法抛出 NumberFormatException 之前调用方法 Sampler.isSampled(Span)。这意味着,当 isSampled() 检查 Span 时,它还没有标签。并且在该过程的后期不会再次调用 Sampler 方法。只有当我打开采样器并允许对每个跨度进行采样时,我才会稍后在 Zipkin 中看到我标记的错误跨度。在这种情况下, Sampler.isSampled(Span) 只被调用了 1 次,但 HttpZipkinSpanReporter.report(Span) 被执行了 3 次。

那么用例会是什么样子,只传输具有错误跨度的跟踪?这甚至是用任意“error_”标签标记跨度的正确方法吗?

0 投票
1 回答
385 浏览

spring-boot - Spring Boot 微服务跟踪选项

我有以下要求,是否有任何开源库将涵盖所有这些。

0 投票
1 回答
2465 浏览

spring - 更改spring boot中过滤器的顺序

我在我的 Web 应用程序中使用 spring-cloud-sleuth。不幸的是,我接到电话的第三方正在 X-B3-TraceId 标头中发送 UUID。但是在从字符串转换为十六进制时,由于 UUID 中的“-”字符,spring 中的 TraceFilter 可能会发现错误。所以我决定编写自己的过滤器,它将在 TraceFilter 之前拦截请求并从标头中删除跟踪 id。这是我的配置:

这是来自 spring-cloud-sleuth 的 TraceFilter:

所以跟踪过滤器的顺序是准确的-2147483643,我认为这使它出现在我的过滤器之前。我不想更改过滤器的顺序。由于Spring Boot 自动配置自动注册,如何更改TraceFilterto的顺序?2TraceFilter