Push data from Jaeger to Elastic APM


(Trondhindenes) #1

We already have a fully working Jaeger infra setup. Is there (or is there planned) any simple way of simply pushing that data into Elastic APM straight from the Jaeger collector?


(Andrew Wilkins) #2

Not currently, but your interest is noted! You're probably already aware, but just in case: there is an Elasticsearch storage backend, but its schema won't be compatible with the APM UI.

If you don't mind, could you please provide a little info on why you would want this, as opposed to replacing with Elastic APM? The Elastic APM agents implement the OpenTracing API, so they should be compatible with your instrumentation. Is there something that Jaeger does that is lacking in the Elastic APM agents or server?


(Trondhindenes) #3

The use-case I'm specifically thinking about is making migrating from Jaeger to Elastic APM easier by pushing data into both tracing systems for a while. Otherwise we'd have to do a yuge amount of work in order to "re-instrument" all of our services and libraries.


(Andrew Wilkins) #4

The use-case I'm specifically thinking about is making migrating from Jaeger to Elastic APM easier by pushing data into both tracing systems for a while. Otherwise we'd have to do a yuge amount of work in order to "re-instrument" all of our services and libraries.

Just to be clear, you shouldn't need to change the instrumentation code - this is what I meant by my previous reference to OpenTracing. Jaeger relies on the OpenTracing API for instrumentation, and the Elastic APM agents all have support the OpenTracing API too.

You would need to modify the apps a little bit to configure an alternative Tracer. For example in a Python application, you can follow the instructions in https://www.elastic.co/guide/en/apm/agent/python/current/opentracing-bridge.html. But after tracer configuration (which should just be in your main application(s), and not libraries), the usage of the tracer to instrument the web requests and so on should not have to change.


(Felix Barnsteiner) #5

Depending on your use case, another approach might also be feasible: Our agents have the ability to auto-instrument common frameworks. Which language and frameworks are you using?

To use Elastic APM in addition to Jaeger, you could try to use the Jaeger instrumentation as-is and additionally instrument your application via the auto-instrumentation capabilities of the Elastic APM agents.


(Felix Barnsteiner) #6

Another idea that just came to my mind is you could write a compound tracer implementation of the OT API. That would take a list if tracers and performs each operation on multiple tracers at the same time. That would increase the overhead, however.

I hope one of those options work for you :slight_smile:


(system) closed #7

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.