1

A bit of background:

We have around 10 Spring boot microservices, which communicate with each other via kafka. The logs of each microservice are sent to Kibana, and in case of any errors, we have to sift through Kibana logs.

The good thing is: at the start of any flow, a message-id is generated by one of our microservices, and that is propagated to all the others as part of the message transfer (which happens through kafka), so we can search for the message-id in the logs, and we can see the footprint of that flow across all our microservices.

The bad part: having to sift through tons of logs to get a basic idea of where things broke and why.

Now the Question:

So I was wondering if we can have some distributed tracing implemented, maybe through Zipkin (or some other open-tracing framework) that can work with the message-id that our ecosystem already produces, instead of generating a new one ?

Thank you for your time :)

Somjit
  • 2,503
  • 5
  • 33
  • 60

1 Answers1

0

I'm not entirely sure if that's what you mean, but you can use Jeager https://www.jaegertracing.io/ which checks if trace-id already exist in the invocation metadata and in it generate child trace id. Based on all trace ids call diagrams are generated

tokuch
  • 96
  • 2
  • can you elaborate with some links or examples that shows a bit more on how to do that in jaegar ? I'm absolutely new to this – Somjit Mar 26 '21 at 01:14
  • Few weeks ago i was created shared library which builds trace-id's for jeager https://github.com/oncors/microservices-utils/tree/master/trace-util you can build this lib locally and inject it into your dependencies and just follow README.md ;) – tokuch Apr 03 '21 at 19:37