Since October last year, the Hawkular APM project has been actively working on supporting, and contributing to,
the OpenTracing standard.
We began by implementing our own Java OpenTracing provider, followed by a Node.js/Javascript implementation. We have
also been active in the OpenTracing community, developing Java framework integrations and more recently a
Java Agent that can be used to automatically install those framework integrations without any changes to the
application code.
However we realised that the core model used in Hawkular APM (fragments of call traces)
was not particularly well aligned with the model used in OpenTracing (span based). This made it more complicated to
implement client providers, as they need to build the call trace fragments from multiple spans, and it means
the information stored in the server wasn’t in the same form expected by users of the OpenTracing API.
Therefore at the beginning of this year we made the decision to change the core model used by Hawkular APM to be
compatible with the model used by the OpenTracing API - and essentially provide an "OpenTracing" native solution.
During the initial design meetings to discuss the proposed changes, we became aware of a
blog post from Uber
regarding the future of their Jaeger project.
Up until that point Jaeger used the Zipkin project to provide its
backend tracing solution.
This new version of Jaeger provides very similar functionality to Zipkin, which is focused on visualising individual
traces. It does not have the aggregated views currently supported in Hawkular APM - however from discussions with the
Jaeger project, they are keen to be able to provide aggregated views.
Therefore we have made the decision that, rather than refactor the Hawkular APM project’s model to be more
OpenTracing compatible, it makes more sense to collaborate on the Jaeger project.
Figure 1: Individual trace captured from the Jaeger HotRod example
The current Hawkular APM codebase will still be available as an OpenTracing solution - however our intention is to focus more effort on the Jaeger project, initially with the aim of making it easy to use within OpenShift, and then adding aggregated views.
Published by Gary Brown on 19 April 2017