I have been trying to setup kamon with play framework-2.5 and starting play framework from IntelliJ with java agent aspectjweaver-1.8.13.jar application started but there are some below is isues and no metrics
org.aspectj.weaver.tools.Jdk14Trace error
SEVERE: scala/concurrent/impl/CallbackRunnable
java.lang.NullPointerException
at org.aspectj.weaver.ResolvedType.conflictingSignature(ResolvedType.java:707)
at org.aspectj.weaver.ResolvedType.clashesWithExistingMember(ResolvedType.java:1874)
at org.aspectj.weaver.ResolvedType.addInterTypeMunger(ResolvedType.java:1730)
at org.aspectj.weaver.bcel.BcelWeaver.weaveNormalTypeMungers(BcelWeaver.java:1628)
at org.aspectj.weaver.bcel.BcelWeaver.addNormalTypeMungers(BcelWeaver.java:1437)
at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1124)
at org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor.java:527)
at org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.java:363)
at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:121)
at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
Below are my configuration details ? can anyone help what i am missing or provide some sample play application with Prometheus? is aop.xml required?
Intellij . VM params:
-Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -javaagent:/Users/chandu/.ivy2/cache/org.aspectj/aspectjweaver/jars/aspectjweaver-1.8.13.jar -Dkamon.auto-start=true
build.sbt:
name := """kamon-play-java"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava,JavaAppPackaging,JavaAgent).disablePlugins(PlayLogback)
//javaAgents += "org.aspectj" % "aspectjweaver" % "1.8.13"
scalaVersion := "2.11.7"
resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases"
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs
)
val kamonVersion_1_1_0 = "1.1.0"
val kamonVersion_1_0_0 = "1.0.0"
libraryDependencies += "io.kamon" %% "kamon-core" % kamonVersion_1_1_0
libraryDependencies += "io.kamon" %% "kamon-play-2.5" % kamonVersion_1_1_0
libraryDependencies += "io.kamon" %% "kamon-system-metrics" % kamonVersion_1_0_0
libraryDependencies += "io.kamon" %% "kamon-statsd" % kamonVersion_1_0_0
libraryDependencies += "io.kamon" %% "kamon-prometheus" % "1.1.1"
libraryDependencies += "org.aspectj" % "aspectjweaver" % "1.8.13"
//javaOptions in Universal += "-Dorg.aspectj.tracing.factory=default"
routesGenerator := InjectedRoutesGenerator
application.conf:
play.crypto.secret = "changeme"
# The application languages
# ~~~~~
play.i18n.langs = [ "en" ]
akka {
loglevel = DEBUG
//extensions = ["kamon.akka.Akka", "kamon.statsd.StatsD"]
}
kamon {
metric {
tick-interval = 1 seconds
track-unmatched-entities = yes
}
statsd {
hostname = "127.0.0.1"
port = 8125
flush-interval = 1 seconds
# Subscription patterns used to select which metrics will be pushed to StatsD. Note that first, metrics
# collection for your desired entities must be activated under the kamon.metrics.filters settings.
subscriptions {
histogram = [ "**" ]
min-max-counter = [ "**" ]
gauge = [ "**" ]
counter = [ "**" ]
trace = [ "**" ]
trace-segment = [ "**" ]
akka-actor = [ "**" ]
akka-dispatcher = [ "**" ]
akka-router = [ "**" ]
system-metric = [ "**" ]
http-server = [ "**" ]
}
metric-key-generator = kamon.statsd.SimpleMetricKeyGenerator
simple-metric-key-generator {
application = "my-application"
include-hostname = true
hostname-override = none
metric-name-normalization-strategy = normalize
}
}
# ======================================== #
# kamon-prometheus reference configuration #
# ======================================== #
prometheus {
# Enable or disable publishing the Prometheus scraping enpoint using a embedded server.
start-embedded-http-server = yes
# Enable of disable including tags from kamon.prometheus.environment as labels
include-environment-tags = no
buckets {
default-buckets = [
10,
30,
100,
300,
1000,
3000,
10000,
30000,
100000
]
time-buckets = [
0.005,
0.01,
0.025,
0.05,
0.075,
0.1,
0.25,
0.5,
0.75,
1,
2.5,
5,
7.5,
10
]
information-buckets = [
512,
1024,
2048,
4096,
16384,
65536,
524288,
1048576
]
# Per metric overrides are possible by specifying the metric name and the histogram buckets here
custom {
// example:
// "akka.actor.processing-time" = [0.1, 1.0, 10.0]
}
}
embedded-server {
# Hostname and port used by the embedded web server to publish the scraping enpoint.
hostname = 127.0.0.1
port = 9095
}
}
modules {
kamon-log-reporter.auto-start = no
kamon-scala.auto-start = yes
kamon-system-metrics.auto-start = yes
kamon-statsd.auto-start = no
kamon-prometheus.auto-start = yes
kamon-akka.auto-start = yes
}
}
plugin.sbt:
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.10")
// Web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.4")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.8")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.1")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")
addSbtPlugin("org.irundaia.sbt" % "sbt-sassify" % "1.4.6")
// Play enhancer - this automatically generates getters/setters for public fields
// and rewrites accessors of these fields to use the getters/setters. Remove this
// plugin if you prefer not to have this feature, or disable on a per project
// basis using disablePlugins(PlayEnhancer) in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")
// Play Ebean support, to enable, uncomment this line, and enable in your build.sbt using
// enablePlugins(PlayEbean).
// addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "3.0.2")
resolvers += Resolver.bintrayIvyRepo("kamon-io", "sbt-plugins")
addSbtPlugin("io.kamon" % "sbt-aspectj-play-runner" % "1.0.4")
addSbtPlugin("com.lightbend.sbt" % "sbt-javaagent" % "0.1.4")