angrybobcat
angrybobcat

Reputation: 300

Spring Boot 2 integrate Brave MySQL-Integration into Zipkin

I am trying to integrate the Brave MySql Instrumentation into my Spring Boot 2.x service to automatically let its interceptor enrich my traces with spans concerning MySql-Queries.

The current Gradle-Dependencies are the following

compile 'io.zipkin.zipkin2:zipkin:2.4.5'
compile('io.zipkin.reporter2:zipkin-sender-okhttp3:2.3.1')
compile('io.zipkin.brave:brave-instrumentation-mysql:4.14.3')
compile('org.springframework.cloud:spring-cloud-starter-zipkin:2.0.0.M5')

I already configured Sleuth successfully to send traces concerning HTTP-Request to my Zipkin-Server and now I wanted to add some spans for each MySql-Query the service does.

The TracingConfiguration it this:

@Configuration
public class TracingConfiguration {
    /** Configuration for how to send spans to Zipkin */
    @Bean
    Sender sender() {
        return OkHttpSender.create("https://myzipkinserver.com/api/v2/spans");
    }

    /** Configuration for how to buffer spans into messages for Zipkin */
    @Bean AsyncReporter<Span> spanReporter() {
        return AsyncReporter.create(sender());
    }

    @Bean Tracing tracing(Reporter<Span> spanListener) {
      return Tracing.newBuilder()
              .spanReporter(spanReporter())
              .build();
  }
}

The Query-Interceptor works properly, but my problem now is that the spans are not added to the existing trace but each are added to a new one.

I guess its because of the creation of a new sender/reporter in the configuration, but I have not been able to reuse the existing one created by the Spring Boot Autoconfiguration. That would moreover remove the necessity to redundantly define the Zipkin-Url (because it is already defined for Zipkin in my application.yml).

I already tried autowiring the Zipkin-Reporter to my Bean, but all I got is a SpanReporter - but the Brave-Tracer-Builder requries a Reporter<Span>

Do you have any advice for me how to properly wire things up?

Upvotes: 1

Views: 1225

Answers (1)

Marcin Grzejszczak
Marcin Grzejszczak

Reputation: 11179

Please use latest snapshots. Sleuth in latest snapshots uses brave internally so integration will be extremely simple.

Upvotes: 0

Related Questions