v2.5.0 - Akka gRPC Server Support & Improvements
Akka gRPC Server Support
Starting on this release, Kamon Telemetry ships with support for tracing server-side Akka gRPC requests implemented with Akka HTTP, Play Framework, and Lagom. This instrumentation is the first step towards full Akka gRPC support and we will soon add:
- gRPC client tracing
- Context propagation across gRPC channels
Improvements
- core: Add the
error.type
tag to traces, getting us closer to follow the OpenTelemetry semantic conventions. Contributed by @hughsimpson via #1112 - kafka: Prevent the Kafka producer instrumentation from starting traces when there is no current trace on the application. There is a new
kamon.instrumentation.kafka.client.tracing.start-trace-on-producer
setting to control this behavior. Contributed by @ivantopo via #1125 - akka-grpc: New instrumentation for server-side Akka gRPC. Contributed by @ivantopo via #1119
- akka: #1093 New instrumentation for Akka's Scheduler
scheduler.scheduleOnce
function, which should bring proper context propagation forpattern.retry
andpattern.after
as well. Contributed by @ivantopo via #1135 - executors: #641 Avoid reflective access on the executors instrumentation. Contributed by @ivantopo via #1136
Fixes
- influxdb: #1129, #1131 There two bugs regarding encoding and configuration settings on the InfluxDB Authorization Token support introduced on Kamon Telemetry 2.4.8, those are gone now. Fixed by @duese via #1130
- redis: #1082 The Jedis instrumentation wasn't measuring the entire roundtrip time to Redis, only the time it took to send out the commands. Fixed by @ivantopo via #1117
- redis: #1072 Ensure the Akka instrumentation takes the Rediscala actors' exclusions into account. Reported by @jtjeferreira and fixed by @ivantopo via #1122
- akka:" #1116 Stop generating spans for Akka Streams-related actors. Fixed by @ivantopo via #1133
- akka: #1132 Fix module registration warnings for Akka Dispatchers. Fixed by @ivantopo via #1138
Breaking Changes 🚨
- We removed the Play gRPC-specific instrumentation that was included in
kamon-play
to the newkamon-akka-grpc
hooks at a lower level that will work with both, coming with two important changes:- If you are not using the Kamon Bundle but instead adding dependencies one by one, you should add the new
kamon-akka-grpc
dependency for to your classpath - There is no custom operation name generator support in
kamon-play
anymore. All gRPC operations are now instrumented with the tag names defined by the OpenTelemetry semantic conventions and there shouldn't be any need to deviate from that with a custom generator
- If you are not using the Kamon Bundle but instead adding dependencies one by one, you should add the new
- The
operation
tag in Play gRPC requests will no longer have a/
prefix, meaning that operations that previously were reported as/ReplyService/SayHello
will now show up asReplyService/SayHello
. You might need to update your dashboards and alert conditions to account for that - Kamon can no longer instrument Executors created by these helper functions from
java.util.concurrent.Executors
:newSingleThreadExecutor
newSingleThreadScheduledExecutor
unconfigurableExecutorService
unconfigurableScheduledExecutorService