Hello Everyone!

I am an Outreachy Intern implementing distributed tracing with opentelemetry
<http://opentelemetry.io/> in activemq-artemis under active mentorship
of @Clebert
Suconic

*How we wish to Implement this.*
The current goal for now is writing a Broker-plugin that will send data for
every message sent to opentelemetry servers either using the API and/or SDK
with exporters like Jeager <https://www.jaegertracing.io/>, Zipkin
<https://zipkin.io/>, OTLP etc, and packaging it nicely

I have opened a PR of a working prototype of how this might work.
<https://github.com/nbrendah/activemq-artemis/commit/a57adecdd56aaf7c5d46bfd065a40e010d29ed0f>

In little explanation of the code,

   - On calling the  initZipkin()  we are initializing and managing the
   Opentelemetry SDK but this should take place only once, like when the
   connection is started, or otherwise, we might get some errors when the SDK
   configuration is called again though some data will be received on Zipkin.
   - Each time a message is created, before sending it, we create a span
   and set its attributes (if any) and finally end the span.

*What needs improvement (not well implemented)*

   - I need to come up with a way of executing   initZipkin()  once like at
   connection creation or something like that and storing the tracer so that
   we can access it through BrokerPlugin.beforeSend(...)  method.
   - Each time we need to create a span, we can just get it from the
   session or message and then create it.


*What I have failed to implement for now.*

   - Passing a tracer created on the static main method to the overridden
   BrokerPlugin.beforeSend(...)  so that we can create a span from the
   tracer before sending each message
   - At first I tried exporting the spans to Jeager
   <https://www.jaegertracing.io/> using the Jeager-example
   
<https://github.com/open-telemetry/opentelemetry-java/tree/main/examples/jaeger>
   but i wasn't receiving data for the last two weeks but Zipkin worked fine
   on the first attempt.  However, i think Jeager and Zipkin work almost the
   same according to me


*Questions  *

   1. Which tool would you personally go with. Jeager or Zipkin?
   2. Where can we implement OpenTelemetry SDK initiation so that the
   initiation runs only once?
   3. How best can we store a tracer such that it can be accessed before a
   message is sent.

Reply via email to