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.