Skip to content

Releases: kamon-io/Kamon

v2.4.8 - Token Authentication for InfluxDB

22 Feb 14:52
b3f5962

Choose a tag to compare

Starting on this release you can use API Token authentication when sending data to InfluxDB using this setting:

kamon.influxdb.authentication {
  token = "your-glorious-token-here"
}

Improvements

  • influxdb. Introduced a new authentication.token configuration setting for cases where the InfluxDB reporter needs to authenticate with an API token. Contributed by @ivantopo via #1110.

v2.4.7 - Controlling the db.statement tag in JDBC calls

11 Feb 12:09
aa6c127

Choose a tag to compare

You can now use the kamon.instrumentation.jdbc.add-db-statement-as-span-tag setting to control the db.statement tag in JDBC calls. This is especially important when your JDBC calls might contain sensitive information that you don't want to share with third parties, like your tracing vendor. The possible setting values are:

  • always: (default) will always add the db.statement tag to spans
  • prepared: will only add the the db.statement tag when the traced execution was made with a PreparedStatement, which should ensure no placeholder values are leaked to the tracing backend
  • never: completely disables adding the db.statement tag to spans

Improvements

  • jdbc: control what kind of JDBC statements will be added to the db.statement tag in JDBC spans. Contributed by @ivantopo via #1103

v2.4.6 - Namespaced Environment Tags

01 Feb 13:39
af70b8e

Choose a tag to compare

Namespaced Environment Tags

Now you can add namespaced (i.e. tags with dots in their name) environment tags to the kamon.environment.tags settings in your configuration file.

kamon.environment.tags {
  container.id = "4444444444"
  k8s {
    namespace.name = "production"
    cluster {
      name = "strong-cluster"
    }
  } 
}

For example, the settings above in your application.conf file would add the container.id, k8s.namespace.name, and k8s.cluster.name tags to the environment. Most reporters will automatically add all of these tags to metrics and spans before they get sent out.

Improvements

  • core: It is now possible to have namespaced tags inside the kamon.environment.tags configuration. Contributed by @ivantopo via #1101.

v2.4.5 - Support for Finagle Client & Lagom Circuit Breakers

27 Jan 07:47

Choose a tag to compare

New Instrumentation

  • finagle: Now you can add a new HTTP filter to trace Finagle Client requests. Contributed by @seglo via #1096
  • lagom: We are now shipping a Lagom CircuitBreakerMetricsProvider that keeps track of all circuit breakers by default. Contributed by @ihostage via #760

New Features

  • runtime-attacher: We are now shipping a new artifact called kamon-runtime-attacher that contains the Kanela agent and the logic to attach it in a running JVM. It is basically the bundle, but without the dependencies. Contributed by @ivantopo via d5ce436
  • apm: The Kamon APM reporter now sends environment tags as part for metrics and spans ingestion requests. Contributed by @ivantopo via 2235b79

v2.4.2 - Maintenance Release

30 Nov 20:47

Choose a tag to compare

Fixes

  • akka-http: Fix a "requirement failed: HTTP/1.0 responses must not have a chunked entity" error message when using HttpEntity.Default in responses. Fixed by @ivantopo via d8a5791

v2.4.1 - JVM Thread States Metrics

23 Nov 14:58
558e837

Choose a tag to compare

This improvement was originally meant to go out with v2.4.0, but it slipped through the cracks. Sorry!

Improvements

  • system: Add a new jvm.threads.states gauge tracking the number of threads on each possible state. Contributed by @getArtemUsername via #1075

v2.4.0 - Local Tail Sampling & More!

23 Nov 14:13

Choose a tag to compare

Introducing Local Tail Sampling

This release comes with a new way of ensuring you will get traces for slow and failed requests, at least locally: the Local Tail-based Sampler.

The quick summary is that the local tail sampler can keep finished spans in memory for a few seconds and then override their sampling decision if they reach a configurable latency or error count threshold. If you want the full story check out our post about how to keep traces for slow and failed requests.

You can enabled the local tail sampler with these settings:

kamon.trace {
  span-reporting-delay = 20 seconds

  local-tail-sampler {
    enabled = yes
    error-count-threshold = 1
    latency-threshold = 1 second
  }
}

Improvements

  • datadog: The OkHttp dependency is now shaded into the Datadog reporter jar to avoid classpath clashes. Contributed by @seglo via #1069
  • prometheus: Get easy access to the Prometheus scrape data through PrometheusReporter.latestScrapeData() in case you need it for exposing on your own HTTP server. Contributed by @ivantopo via #1079
  • redis: The Jedis instrumentation now works with Jedis 2.x as well. There is still a known issue in #1082 that should get solved soon after. Contributed by @jtjeferreira via #1076
  • apm: The Kamon APM reporter now drops old Spans that might be accumulated in the reporters' executor and comes with lower retries and backoff default settings. Contributed by @ivantopo via eeb0596 and 49aef33

Fixes

  • bundle: Remove a misplaced logback.xml from kamon-mongo that was ending up in the bundle. Thanks @PavelPenkov for reporting the issue. Fixed by @ivantopo via d37cb48
  • general: @Philippus helped us get a bunch of typos fixed!

v2.3.1 - Maintenance Release

26 Oct 06:05

Choose a tag to compare

Fixes

  • play: The GuiceModule we include in the kamon-play instrumentation was not updated to start Kamon's scheduler after the updates we introduced in Kamon 2.3.0. This release adds a new Kamon.initWithoutAttaching(...) API that does the right initialization. This was reported and fixed by @ihostage, then @ivantopo just committed the lines via #1065.

v2.3.0 - GraalVM and Scala 3 Support

21 Oct 10:28

Choose a tag to compare

GraalVM

This is the first Kamon release that can be used in applications that target native images with GraalVM 🎉

There was a non-trivial amount of work under the hood to ensure we are not starting any threads on static initializers, and ensuring that everything that requires a thread is delayed until Kamon.init(...) is called, and it works! All the core APIs, the Status Page, and all the reporters are now available to native image users.

The main driver for this change was bringing support for Quarkus, and that's where we are going next! Creating a quarkus extension for Kamon is going to be a bit more challenging than we expected, particularly because we can't use automatic instrumentation in there. Also, Quarkus encourages using SmallRye Context Propagation, but Kamon has its own Context Propagation mechanism in place. It will be a fun ride :).. Join our Discord server if you want to participate on that adventure.

Scala 3

Starting on this release, we are also publishing the Core, Status Page, and Reporter artifacts for Scala 3! We still need to put some work on publishing all of our instrumentation for Scala 3. If you want to give a hand, check out #1064 as a starting point.


New Features

  • Support for Scala 3 was brought up by @dpsoft, building on the work started by @bplommer. Thanks a lot for this contribution!
  • GraalVM Native Image support was contributed by @ivantopo via #1055

Fixes

  • cassandra: Guard against unknown query formats in the Cassandra client instrumentation. Reported as #1058 and fixed by @ivantopo via c5ac1ea.
  • akka-http: Handle sub-route rejections on the path matchers instrumentation. Thanks very much to @seglo for providing a reproducible for the issue via #1063. Fixed by @ivantopo on that same #1063 PR.

Deprecation Removals

  • We completely removed the Scala Future Chaining instrumentation that was deprecated in v2.1.21. This included a few deprecated functions for creating Spans with the old instrumentation, and a tiny bit of instrumentation for Akka HTTP's FastFuture that is no longer necessary. Those instrumentation pieces were already disabled since v2.2.0, and shouldn't be missed at all after the upgrade. Full diff here: 39191f8.

v2.2.3 - Rediscala instrumentation

23 Jul 08:26
21117d4

Choose a tag to compare

  • kamon-redis: Add tracing for the rediscala library. Contributed by @SimunKaracic #1052
  • kamon-jdbc: Add SQL parsing to get better operation names. Disabled by default because the performance impact is yet unclear. If you'd like to test it and report back, set kamon.instrumentation.jdbc.parse-sql-for-operation-name to true. Contributed by @Falmarri via #1013