kamon-io / Kamon

Distributed Tracing, Metrics and Context Propagation for applications running on the JVM
https://kamon.io
Other
1.41k stars 328 forks source link

Wishlist for Kamon Telemetry 3.x Series #1215

Open ivantopo opened 2 years ago

ivantopo commented 2 years ago

Hello people!

In the 2-ish years since we released Kamon 2.0, and I think it is time to clean things up for a new major version. I remember that back in 2019 we did a lot of "defensive" coding in Kamon because OpenTracing was still around and changing, folks were talking more about OpenCensus/w3c-tracecontext, and suddenly OpenTelemetry started taking shape.

We made things more configurable and complicated than necessary (think propagation channels, HTTP client/server instrumentation, and trace identifiers) because of the fear that we would commit to something and the standards would move in a different direction so, we would need to introduce breaking changes. After a bit over two years, things are more stable and predictable, so we can clean up and move Kamon Telemetry forward!

Here is the wishlist I have so far, but please feel free to comment below and share any ideas you might have!

lucasamoroso commented 2 years ago

Hi!

I don't know if this applies for Kamon 3 but one thing that I would love is to have a configuration field at the root of kamon to enable/disable it and this should enable/disable all modules (instrumentation, reporters, everything).

In my experience most of the times when I need to shutdown Kamon on a specific environment I need to add custom code, very simple code but needs to be added, to stop doing Kamon.init on that environment, because when there are a lot of modules in our application it's not a nice experience to disable them all one by one. I think we should be able to do this by just one configuration field on Kamon's root config.

nvollmar commented 1 year ago

Regarding the OpenTelemetry semantics it wouldn't be too much of a burden if the release came with a list of the changes to search/replace or a simple script that can be applied once and get the change done.

The other changes would be some welcome simplifications.