Warning
|
The project is WIP and very experimental ! |
The project is an experimental place for context management and propagation.
-
Use OpenTracing api.
-
Do not provide a scala wrapper api for opentracing-java.
-
Provide Helpers for
-
Let developer (user of the lib) choose between explicit context propagation, implicit propagation or mixed (optionnated).
-
implicit mode off by default, need explicit setup
-
when implicit on, take care of context to not duplicate (eg. don’t create open tracing span with kind == "jdbc" if current span.kind == "jdbc" )
It should be done explicitly, :-P by:
-
Create a "META-INF/aop.xml" file (available at runtime) where you enable/disable instrumentation (aspects) as you like.
-
Add setup of static accessor (used by Aspects) to the initialization of your app
-
Enable aspectj weaving (TODO)
Kamon is a great piece of code, and far more mature than this project. It is an inspiration, and the lib used one of its sbt plugins. But it doesn’t match our requirements:
-
Kamon is a "all-in-one",
-
tracing AND metrics, so it’s duplication when you already have metrics and only want tracing
-
In the current version (0.6.6), doesn’t support OpenTracing. And I don’t see how to cleanly integrate
-
Concept are different Kamon Trace or Segment doesn’t match OpenTracing Span (scope, propagation, feature)
-
It should be possible to create a reporter of Kamon Trace reporter, that convert into Span for OpenTracing backend, if developer (or lib) doesn’t use OpenTracing API
-
Contact me for more info