2

On https://opentracing.io/ they state that opentracing API is:

A Vendor-neutral APIs and instrumentation for distributed tracing

Okay great but what does that actually mean in the context of an actual application?

What parts does this Opentracing API actually consist of, what is its purpose and how does it interact with other logging related systems like "zipkin" and "jaeger"

  • Is using Opentracing API for Java a requirement to be able to claim "My App supports" opentracing?

  • Is there one Opentracing protocol (e.g data send over the wire) or are they just saying opentracing is a middle layer which allows multiple other tracing frameworks to interoperate with each other? Especially this diagram makes me think that.

Th 00 mÄ s
  • 3,776
  • 1
  • 27
  • 46
  • 1
    It's worth noting that OpenTracing has been abandoned and the contributors are now working on OpenTelemetry. c.f. https://opensource.googleblog.com/2019/05/opentelemetry-merger-of-opencensus-and.html – Graham Lea Aug 19 '21 at 12:49

1 Answers1

2

OpenTracing is the API that your code will interact with directly.

Basically, your application would be "instrumented" using the OpenTracing API and a concrete tracer (like Jaeger or Brave/Zipkin) would capture the data and send it somewhere. This allows your application to use a neutral API throughout your code so that you can change from one provider to another without having to change your entire code base.

Another way to think about it is that OpenTracing is like SLF4J in the Java logging world, whereas Jaeger and Zipkin are the concrete implementations, such as Log4j in the Java logging world.

jpkroehling
  • 13,881
  • 1
  • 37
  • 39
  • Does Zipkin actually implement the OpenTracing protocol? According to [this](https://www.jaegertracing.io/docs/1.12/features/#BackwardscompatibilitywithZipkin):`Although we recommend instrumenting applications with OpenTracing API and binding to Jaeger client libraries to benefit from advanced features not available elsewhere, if your organization has already invested in the instrumentation using Zipkin libraries, you do not have to rewrite all that code. Jaeger provides backwards compatibility with Zipkin by accepting spans in Zipkin formats (Thrift or JSON v1/v2) over HTTP.` – sam-6174 Jun 11 '19 at 20:09
  • OpenTracing is more like an API than a protocol. There's a Zipkin-compatible tracer (Brave), so that your application can be instrumented using the OpenTracing API, with data reaching Zipkin backend. – jpkroehling Jun 19 '19 at 11:42