Comments (5)
Hey @scheleaap 👋
I looked into this and the problem I found is that sometimes the Play instrumentation gets loaded before the logback instrumentation (see image below). When that happens, the Play instrumentation loads the logback classes before they get instrumented and nothing gets copied.
(you can get the same output adding -Dkanela.debug-mode=YES -Dkanela.log-level=DEBUG
to your JVM options)
Running your reproducer several times should work every now and then, depending on the order the modules are loaded. You can workaround it with this setting:
kanela.modules.play-framework.order = 3
I'll be opening a PR with that same change, assuming that's the only thing we need to fix it 🙏
from kamon.
Hi @ivantopo, thank you for taking a look. I am getting consistent results when I run the example project.
When I add the setting you mentioned I can see that the Logback instrumentation gets loaded before the Play Framework instrumentation, but it does not bring the MDC tag back.
I have updated example project accordingly. Does the application log the MDC tag when you run it on your machine?
For reference, here's my log output:
...
[info] [Attach Listener] INFO 2022-12-14 17:15:13 Logger : The Module: Executor Service Capture on Submit Instrumentation is disabled
[info] [Attach Listener] INFO 2022-12-14 17:15:13 Logger : The Module: Scala Future Chaining Instrumentation (Deprecated) is disabled
[info] [Attach Listener] INFO 2022-12-14 17:15:13 Logger : Loading Logback Instrumentation
[info] [Attach Listener] INFO 2022-12-14 17:15:13 Logger : ==> Loading kamon.instrumentation.logback.LogbackInstrumentation
[info] [Attach Listener] INFO 2022-12-14 17:15:13 Logger : Retransformation Strategy activated for: Logback Instrumentation
[info] [Attach Listener] INFO 2022-12-14 17:15:13 Logger : Periodic Resubmitter activated.
[info] [Attach Listener] INFO 2022-12-14 17:15:13 Logger : Loading Play Framework Instrumentation
[info] [Attach Listener] INFO 2022-12-14 17:15:13 Logger : ==> Loading kamon.instrumentation.play.PlayServerInstrumentation
[info] [Attach Listener] INFO 2022-12-14 17:15:13 Logger : ==> Loading kamon.instrumentation.play.PlayClientInstrumentation
[info] [Attach Listener] INFO 2022-12-14 17:15:13 Logger : Retransformation Strategy activated for: Play Framework Instrumentation
...
[info] {"@timestamp":"2022-12-14T16:17:31.052Z","level":"INFO","level_value":20000,"message":"Application starting...","logger_name":"foo.Application$","thread_name":"main","caller_class_name":"foo.Application$","caller_method_name":"$anonfun$new$1","caller_file_name":"Application.scala","caller_line_number":8}
[success] Total time: 3 s, completed Dec 14, 2022, 5:17:31 PM
from kamon.
I see you are running this from SBT and that might be the issue. Even though you have the fork
and javaAgents
settings, the only way I was able to make it work when running with SBT was by adding our SBT plugin:
addSbtPlugin("io.kamon" % "sbt-kanela-runner" % "2.0.14")
My previous tests were directly from IntelliJ. You can see two runs here, before/after adding the plugin:
I think it is fair to assume that the ordering change fixes the issue 💪
from kamon.
We were able to get everything to work thanks to your suggestions @ivantopo. To summarize, in the end we had to make two changes:
- Add
kanela.modules.logback.order = 1
to our configuration to ensure that the Logback instrumentation is loaded as soon as possible. - Add the
sbt-kanela-runner
Sbt plugin (addSbtPlugin("io.kamon" % "sbt-kanela-runner" % "2.0.14")
)
Thank you for your valuable support @ivantopo! 💯
I believe we can close this issue now.
from kamon.
Thanks for sharing your results @scheleaap. Have a great day!
from kamon.
Related Issues (20)
- Kamon-Cassandra Datastax OSS Metrics Factory
- kamon.io, kanela agent unable to post metrics to https enabled graphite backend
- Java 8 support, new relic http client HOT 2
- Context propagation is broken from Akka 2.8.0 onwards HOT 3
- Bumping 2.6.3 to 2.6.4 (kamon-bundle and kamon-prometheus) breaks logging in our apps (Akka HTTP, Play) HOT 9
- Old kanela-agent which does not support JDK 21 HOT 5
- Maven metadata does not contain info about Kamon Bundle v2.6.5 HOT 1
- Kamon doesn't propage Kamon context HOT 7
- Sbt 1.9.7 upgrade breaks Kamon Play HTTP Prometheus Metrics HOT 2
- Upgrade newrelic.telemetry to 0.16.0 HOT 2
- Add support for Micrometer
- Instrumentation is broken With play 3.0, scala 3.3.1, kamon-bundle and Prometheus HOT 1
- Support for postgresql 42.7.2 - java.lang.NoSuchFieldError: checkConnectionQuery HOT 6
- Issue while using jaeger reporter with scala HOT 1
- Akka-http metrics do not work when using http2
- ClassCastException when using Slick and Kamon Jdbc
- Trying to load Akka instrumentation when using Pekko in Scala 3 HOT 1
- Updating Postgres Driver causes NoSuchFieldError from Kamon JDBC HOT 2
- How to use local-tail-sampler
- DataDog Reporter to send EntityId from environment
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kamon.