spring-projects / spring-boot

Spring Boot
https://spring.io/projects/spring-boot
Apache License 2.0
74.82k stars 40.6k forks source link

Investigate how to support sending OTLP over Brave #42583

Open mhalbritter opened 2 hours ago

mhalbritter commented 2 hours ago

There's a OtlpProtoV1Encoder in https://github.com/openzipkin-contrib/zipkin-otel and here's a sample project.

The weird situation we now have is that we use Brave as a tracer, and something OTLP-capable as a backend. But there's also Zipkin (at least the client-side components) in the mix, because it is sending the Brave Spans through the AsyncZipkinSpanHandler and the BytesMessageSender.

That means both management.zipkin.tracing.* and management.otlp.tracing.* properties could be applicable.

mhalbritter commented 2 hours ago

We have the following properties:

Zipkin

OTLP

mhalbritter commented 2 hours ago

I think we should hide the fact that Brave while sending OTLP is using the Zipkin client-side components under the hood and use the management.otlp.tracing.* properties if OtlpProtoV1Encoder is on the classpath.

That means:

management.zipkin.tracing.connect-timeout (-> management.otlp.tracing.connect-timeout)

management.zipkin.tracing.encoding (not applicable, because OTLP is always encoded as Proto3)

management.zipkin.tracing.endpoint (-> management.otlp.tracing.endpoint)

management.zipkin.tracing.export.enabled (-> management.otlp.tracing.export.enabled)

management.zipkin.tracing.read-timeout (hmmm)

management.otlp.tracing.compression (we could make the compression in our Zipkin senders an opt-in)

management.otlp.tracing.headers.* (we could add support for additional headers in our Zipkin senders)

management.otlp.tracing.timeout (hmmm)

management.otlp.tracing.transport (we should document that, when using Brave, only http is supported. There are no plans to implement a gRPC based Zipkin sender)