Sleuth not sending trace information to Zipkin

2020-07-09 08:18发布

问题:

Sleuth is not sending the trace information to Zipkin, even though Zipkin is running fine. I am using Spring 1.5.8.RELEASE, spring cloud Dalston.SR4 and I have added the below dependencies in my microservices:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

My Logs are always coming false: [FOOMS,2e740f33c26e286d,2e740f33c26e286d,false]

My Zipkin dependencies are:

<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin-autoconfigure-ui</artifactId>
    <scope>runtime</scope>
</dependency>

Why am I getting false instead of true in my slueth statements? The traceId and SpanId are properly generated for all the calls though. My Zipkin is running in port 9411

回答1:

I found that I need to add a sampler percentage. By default zero percentage of the samples are sent and that is why the sleuth was not sending anything to zipkin. when I added spring.sleuth.sampler.percentage=1.0 in the properties files, it started working.



回答2:

For the latest version of cloud dependencies <version>Finchley.SR2</version>
The correct property to send traces to zipkin is: spring.sleuth.sampler.probability=1.0 Which has changed from percentage to probability.



回答3:

If you are exporting all the span data to Zipkin, sampler can be installed by creating a bean definition in the Spring boot main class

  @Bean
  public Sampler defaultSampler() {
    return new AlwaysSampler();
  }