当前位置: 首页 > 知识库问答 >
问题:

用RabbitMQ-Binder通过spring-cloud-stream跟踪spring-cloud-sleuth:如何完成跟踪

羊舌洛华
2023-03-14

我已经使用spring-cloud-stream和RabbitMQ-binders和spring-cloud-sleuth建立了一个演示项目。

dependencies {
    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" // for @ConfigurationProperties, make sure compileJava.dependsOn(processResources)
    compile 'org.springframework.boot:spring-boot-starter-security'
    compile 'org.springframework.boot:spring-boot-starter-actuator'
    compile 'org.springframework.cloud:spring-cloud-starter-config'
    compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    compile 'org.springframework.cloud:spring-cloud-starter-sleuth'
    compile "org.springframework.boot:spring-boot-starter-web-services" // I also have some REST endpoints
    compile 'org.springframework.cloud:spring-cloud-stream-binder-rabbit'
}

我有一个预定的春-云-流源:

@Scheduled(fixedDelay = 2500, initialDelay = 500)
@HystrixCommand(fallbackMethod = "fallbackTimerMessageSource")
@SendTo(SourceChannels.OUTPUT)
public void timerMessageSource() {
     ...
@Autowired
private Tracer sleuthTracer;


@StreamListener(SinkChannels.INPUT)
public void sinked(MessageDTO payload) {
    logger.info("[{}]sinked by {} with '{}'", instanceIndex, Sink.class.getSimpleName(), payload);
    ...
2018-03-20 20:55:10.580  INFO [circuitbreakers_sink,820fcab9830191c7,a388974ea57dac3a,true] 43379 --- [k27JdIWK8axsQ-1] c.d.minimal.circuitbreaker.sinks.Sink    : [0]sinked by Sink with 'Tue Mar 20 20:55:06 CET 2018 MESSAGE: 'fromSource transformed by tier1 transformed by tier2' modifiers: ' modBy:tier1:i0 modBy:tier2:i0''

我是不是漏掉了什么?(对zipkin来说相当陌生,勇敢而侦探)

共有1个答案

赵英哲
2023-03-14

Zipkin中没有痕迹整理的概念。跟踪中的跨度可以开始和结束。我们不会在不同的主机上启动和停止跨越,所以未完成的跨越可能是偶然的。如果你喜欢https://gitter.im/spring-cloud/spring-cloud-sleuth,你可以在这里聊更多

 类似资料:
  • 我有两个非常简单的spring-cloud-stream应用程序。消息生产者Service3通过Binder-Kafka向消费者Service4发送消息。 我用春云侦探来追踪它们之间的跨度。但是只有Service3中的跨在zipkin服务器中可用。Service4没有显示span。

  • 我使用Spring Cloud Sleuth Zipkin来了解服务的时间和行为。 我发现的唯一缺点是:当每个微服务都有几个实例时,我没有找到一种方法来确定Zipkin信息所指的是哪个实例,因为Zipkin信息通过其服务名称(对所有人来说都是相同的)来识别它们。 有没有办法配置Sleuth在Zipkin中添加服务实例dinstination?

  • 我使用Kafka来实现微服务之间的呼叫同步,并使用SpringSleuth进行日志记录。日志记录是可以的,但是当有一条消息从MicroService 1发送到MicroService 2时,日志记录的消息具有不同的跟踪ID。它们不是必须具有相同的跟踪ID但具有不同的SpanId吗?是否有任何特殊配置?

  • 我们正在考虑利用spring cloud sleuth进行分布式跟踪,并且我们已经开发了一个PoC。这似乎是一个很好的解决方案,开箱即用。 但我有一个后续问题: 我们使用随机UUID和64位ID作为跟踪ID。我们知道自定义头(例如,一个新的跟踪Id)可以与sleuth头一起添加,但是否可以覆盖slueth的默认跟踪Id格式?我们已经查看了文档,也许传播是我们要走的路。有谁做了这一点,可以指出我们在

  • 我有一些微服务作为分布式日志管理器与Spring Cloud Sleuth一起运行。对于一些微服务,还包括Spring AOP,主要是关于方法执行时间日志的建议(下面的代码)。 现在,我可能在这里错过了AOP点,并且不太明白建议何时真正生效,但是否有可能将Sleuth跟踪ID包含在从定义的类生成的日志中? 代码: 方面类(从组织aspectj和组织slf4j导入): Spring Boot版本为2

  • 我目前正在使用spring cloud sleuth依赖项进行spring webflux项目。 我正在开发一组API,这些API可以获得包含3个字符串的请求负载。我想连接这3个字符串作为我的自定义跟踪id。我还想达到以下要求。 这个自定义跟踪id应该能够添加到每个日志中。(我们通过在log4j.xml文件中添加以打印所有日志中的traceId来获取日志中的sleuth跟踪id) 注意,sprin