open-telemetry / opentelemetry-collector-contrib

Contrib repository for the OpenTelemetry Collector
https://opentelemetry.io
Apache License 2.0
2.92k stars 2.28k forks source link

Add JMS exporter #27258

Closed bputt-e closed 6 months ago

bputt-e commented 12 months ago

Component(s)

No response

Is your feature request related to a problem? Please describe.

I would like to export OTEL data through Apache ActiveMQ and while options like Kafka/Pulsar exist, JMS is my only option

Describe the solution you'd like

A JMS exporter that works with JMS backends (i.e. Apache ActiveMQ). I imagine it'll work similarly to the kafka exporter

Describe alternatives you've considered

No response

Additional context

No response

atoulme commented 11 months ago

Do you have any code towards this goal? Did you by any chance look at how golang code can interact with JMS? Any insight? Would you be interested in supporting this component moving forward?

bputt-e commented 11 months ago

No code written at the moment, it appears https://github.com/ibm-messaging/mq-golang-jms20/tree/main might be worthy to utilize. As far as supporting this component, it depends, we're trying to find another way to egress the data without requiring jms

swar8080 commented 10 months ago

Maybe this would get more traction and usage if it was specifically for RabbitMQ instead of JMS? That misses out on SQS and ActiveMQ support, but RabbitMQ is pretty popular, and then this wouldn't be limited to Java applications! That's the approach datadog is using for their telemetry pipeline, with separate exporters for RabbitMQ and SQS

With that approach, there's the RabbitMQ go client. It uses the AMQP 0.9.1 protocol which unfortunately doesn't seem compatible with any other major queues

I'm starting to build this for fun...currently looking at similar exporters like kafka and apache pulsar. Let me know if anyone wants to team-up or has suggestions for how to build it

atoulme commented 10 months ago

As you do this note we are trying to have encoding extensions to share across components.

swar8080 commented 10 months ago

It looks like JMS is just an API specification, not a common wire protocol. Each queue expects its own wire protocol, like OpenWire for ActiveMQ, and an adapter built on-top of the AMQP protocol for RabbitMQ

@bputt-e an exporter specifically for ActiveMQ would probably be needed if you're still interested. https://github.com/Azure/go-amqp is the best-maintained client library I found for it

github-actions[bot] commented 8 months ago

This issue has been inactive for 60 days. It will be closed in 60 days if there is no activity. To ping code owners by adding a component label, see Adding Labels via Comments, or if you are unsure of which component this issue relates to, please ping @open-telemetry/collector-contrib-triagers. If this issue is still relevant, please ping the code owners or leave a comment explaining why it is still relevant. Otherwise, please close it.

github-actions[bot] commented 6 months ago

This issue has been closed as inactive because it has been stale for 120 days with no activity.