Приложение Akka не запускается с Kamon, при условии, что aspectjweaver является javaagent во время запуска

Я пытаюсь запустить приложение Akka Kamon, передав aspectjweaver.jar подать в javaagent, Однако, когда я прохожу javaagent чтобы запустить файл JAR приложение не запускается.

Вот что я сделал:

1.application.conf:

 kamon {

  tick-interval = 10 seconds

  track-unmatched-entities = yes

  influxdb {
    hostname = "localhost"
    port = 8086
    database = "test-metrics"
    application-name = "testapp"
    authentication {
      user = "abc"
      password = "abcxyz"

    }
    subscriptions {
      histogram = ["**"]
      min-max-counter = ["**"]
      gauge = ["**"]
      counter = ["**"]
      trace = ["**"]
      trace-segment = ["**"]
      akka-actor = ["**"]
      akka-dispatcher = ["**"]
      akka-router = ["**"]
      system-metric = ["**"]
      http-server = ["**"]
    }

  }

  metric {
    filters {
      # actors we should monitor
      akka-actor {
        includes = ["**"] 
        excludes = []                
      }

      akka-router {
        includes = ["**"]
        excludes = []
      }

      akka-dispatcher {
        includes = ["*/user/*"]
        excludes = []
      }

      akka-http {
        includes = ["**"]
        excludes = []
      }

      trace {
        includes = ["**"]
        excludes = []
      }
    }
  }

  modules {
    kamon-log-reporter.auto-start = yes
    kamon-system-metrics.auto-start = yes
    kamon-akka.auto-start = yes
  }
}  

2.build.sbt:

    val kamonVersion = "0.6.1"
    val akkaVersion = "2.4.14"

   "io.kamon"    %% "kamon-core"           % kamonVersion ,
   "io.kamon" % "kamon-akka_2.11" % kamonVersion,
   "io.kamon" % "kamon-akka-remote_akka-2.4_2.11" % kamonVersion ,
   "io.kamon"    %% "kamon-statsd"         % kamonVersion,
   "io.kamon"    %% "kamon-datadog"        % kamonVersion,
   "io.kamon"    %% "kamon-log-reporter"   % kamonVersion,
   "io.kamon"    %% "kamon-system-metrics" % kamonVersion,
   "io.kamon" %% "kamon-influxdb" % "0.6.7",
   "org.aspectj" %  "aspectjweaver"        % "1.8.9",
   "org.aspectj" % "aspectjrt" % "1.8.9"  


   aspectjSettings


javaOptions in run <++= AspectjKeys.weaverOptions in Aspectj
   fork in run := true


   val aopMerge = new sbtassembly.MergeStrategy {
   val name = "aopMerge"
   import scala.xml._
   import scala.xml.dtd._

   def apply(tempDir: File, path: String, files: Seq[File]): Either[String, Seq[(File, String)]] = {
   val dt = DocType("aspectj", PublicID("-//AspectJ//DTD//EN", "http://www.eclipse.org/aspectj/dtd/aspectj.dtd"), Nil)
    val file = MergeStrategy.createMergeTarget(tempDir, path)
    val xmls: Seq[Elem] = files.map(XML.loadFile)
    val aspectsChildren: Seq[Node] = xmls.flatMap(_ \\ "aspectj" \ "aspects" \ "_")
    val weaverChildren: Seq[Node] = xmls.flatMap(_ \\ "aspectj" \ "weaver" \ "_")
    val options: String = xmls.map(x => (x \\ "aspectj" \ "weaver" \ "@options").text).mkString(" ").trim
    val weaverAttr = if (options.isEmpty) Null else new UnprefixedAttribute("options", options, Null)
    val aspects = new Elem(null, "aspects", Null, TopScope, false, aspectsChildren: _*)
    val weaver = new Elem(null, "weaver", weaverAttr, TopScope, false, weaverChildren: _*)
    val aspectj = new Elem(null, "aspectj", Null, TopScope, false, aspects, weaver)
    XML.save(file.toString, aspectj, "UTF-8", xmlDecl = false, dt)
    IO.append(file, IO.Newline.getBytes(IO.defaultCharset))
    Right(Seq(file -> path))
  }
  }

   assemblyMergeStrategy in assembly := {
   case m if m.toLowerCase.endsWith("manifest.mf") => 
   MergeStrategy.discard
   case m if m.toLowerCase.matches("meta-inf.*\\.sf$") => MergeStrategy.discard
   case m if m.toLowerCase.matches("meta-inf.*\\.properties") => MergeStrategy.discard
   case PathList("META-INF", "aop.xml") => aopMerge
   case PathList(ps @ _*) if ps  .last endsWith ".txt.1" => MergeStrategy.first
    case "reference.conf"    => MergeStrategy.concat
    case "application.conf"  => MergeStrategy.concat
    case "logback.xml"  => MergeStrategy.concat
    case x =>
    val oldStrategy = (assemblyMergeStrategy in assembly).value
    oldStrategy(x)
    }  

3.project/plugins.sbt:

    addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.2.0-M8")
    addSbtPlugin("com.typesafe.sbt" % "sbt-aspectj" % "0.10.0")  

4.Если я запускаю файл jar сборки, не передавая javaagent тогда приложение работает, но я не могу видеть метрики актера.

    java jar ./target/scala-2.11/app.jar  

It seems like your application was not started with the -javaagent:/path-to-aspectj-weaver.jar option but Kamon detected
 the following modules which require AspectJ to work properly:

      kamon-akka, kamon-scala, kamon-akka-remote

 If you need help on setting up the aspectj weaver go to http://kamon.io/introduction/get-started/ for more info. On the
 other hand, if you are sure that you do not need or do not want to use the weaver then you can disable this error message
 by changing the kamon.show-aspectj-missing-warning setting in your configuration file.


[INFO] [09/24/2017 14:05:05.815] [main] [LogReporterExtension(akka://kamon)] Starting the Kamon(LogReporter) extension
[INFO] [09/24/2017 14:05:05.826] [main] [DatadogExtension(akka://kamon)] Starting the Kamon(Datadog) extension
[INFO] [09/24/2017 14:05:05.846] [main] [InfluxDBExtension(akka://kamon)] Starting the Kamon(InfluxDB) extension
[INFO] [09/24/2017 14:05:05.863] [main] [StatsDExtension(akka://kamon)] Starting the Kamon(StatsD) extension
[INFO] [09/24/2017 14:05:05.880] [main] [SystemMetricsExtension(akka://kamon)] Starting the Kamon(SystemMetrics) extension
....
....
....
[INFO] [09/24/2017 14:05:15.875] [kamon-akka.actor.default-dispatcher-11] [akka://kamon/user/kamon-log-reporter]
+--------------------------------------------------------------------------------------------------+
|                                                                                                  |
|    CPU (ALL)                                                                                     |
|                                                                                                  |
|    User (percentage)       System (percentage)    Wait (percentage)   Idle (percentage)          |
|       Min: 8                     Min: 15                Min: 0             Min: 0                |
|       Avg: 42.0                   Avg: 23.0               Avg: 0.0           Avg: 32.0              |
|       Max: 81                    Max: 32                Max: 0             Max: 64               |
|                                                                                                  |
|                                                                                                  |
+--------------------------------------------------------------------------------------------------+
[INFO] [09/24/2017 14:05:15.878] [kamon-akka.actor.default-dispatcher-11] [akka://kamon/user/kamon-log-reporter]
+--------------------------------------------------------------------------------------------------+
|                                                                                                  |
|    Process-CPU                                                                                   |
|                                                                                                  |
|             User-Percentage                           Total-Percentage                           |
|                Min: 1                                    Min: 1                                  |
|                Avg: 35.0                                 Avg: 37.0                               |
|                Max: 75                                   Max: 78                                 |
|                                                                                                  |
+--------------------------------------------------------------------------------------------------+
[INFO] [09/24/2017 14:05:15.883] [kamon-akka.actor.default-dispatcher-11] [akka://kamon/user/kamon-log-reporter]
+--------------------------------------------------------------------------------------------------+
|                                                                                                  |
|    Network (ALL)                                                                                 |
|                                                                                                  |
|     Rx-Bytes (KB)                Tx-Bytes (KB)              Rx-Errors            Tx-Errors       |
|      Min: 1520                  Min: 1736                 Total: 0             Total: 0         |
|      Avg: 1022082.0                Avg: 44473.0                                                     |
|      Max: 2244608                  Max: 107520                                                       |
|                                                                                                  |
+--------------------------------------------------------------------------------------------------+

[INFO] [09/24/2017 14:05:15.884] [kamon-akka.actor.default-dispatcher-11] [akka://kamon/user/kamon-log-reporter] No metrics reported 

5. Когда я запускаю банку приложения с javaagent тогда он не запускается.

java jar -javaagent:"./aspectjweaver-1.8.9.jar"  ./target/scala-2.11/app.jar  


objc[12601]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
max memory :5726797824
 INFO [main] Kamon$Instance - Initializing Kamon...
Exception in thread "main" org.aspectj.lang.NoAspectBoundException: Exception while initializing akka.kamon.instrumentation.ActorLoggingInstrumentation: java.lang.AbstractMethodError: akka.kamon.instrumentation.ActorLoggingInstrumentation.kamon$trace$logging$MdcKeysSupport$_setter_$traceTokenKey_$eq(Ljava/lang/String;)V
  at akka.kamon.instrumentation.ActorLoggingInstrumentation.aspectOf(ActorLoggingInstrumentation.scala:1)
  at akka.event.Logging$Debug.<init>(Logging.scala:805)
  at akka.event.LoggingBus$class.startStdoutLogger(Logging.scala:93)
  at akka.event.EventStream.startStdoutLogger(EventStream.scala:28)
  at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:772)
  at akka.actor.ActorSystem$.apply(ActorSystem.scala:245)
  at akka.actor.ActorSystem$.apply(ActorSystem.scala:288)
  at akka.actor.ActorSystem$.apply(ActorSystem.scala:263)
  at kamon.Kamon$Instance._start$lzycompute(Kamon.scala:61)
  at kamon.Kamon$Instance._start(Kamon.scala:58)
  at kamon.Kamon$Instance.start(Kamon.scala:69)
  at kamon.Kamon$.start(Kamon.scala:37)
  at com.test.app.Profiles$.delayedEndpoint$com$test$app$Profiles$1(Profiles.scala:78)
  at com.test.app.Profiles$delayedInit$body.apply(Profiles.scala:32)
  at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
  at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
  at scala.App$$anonfun$main$1.apply(App.scala:76)
  at scala.App$$anonfun$main$1.apply(App.scala:76)
  at scala.collection.immutable.List.foreach(List.scala:381)
  at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
  at scala.App$class.main(App.scala:76)
  at com.test.app.Profiles$.main(Profiles.scala:32)
  at com.test.app.Profiles.main(Profiles.scala)
Caused by: java.lang.AbstractMethodError: akka.kamon.instrumentation.ActorLoggingInstrumentation.kamon$trace$logging$MdcKeysSupport$_setter_$traceTokenKey_$eq(Ljava/lang/String;)V
  at kamon.trace.logging.MdcKeysSupport$class.$init$(MdcKeysSupport.scala:26)
  at akka.kamon.instrumentation.ActorLoggingInstrumentation.<init>(ActorLoggingInstrumentation.scala:25)
  at akka.kamon.instrumentation.ActorLoggingInstrumentation.ajc$postClinit(ActorLoggingInstrumentation.scala:1)
  at akka.kamon.instrumentation.ActorLoggingInstrumentation.<clinit>(ActorLoggingInstrumentation.scala:1)
  ... 22 more  

0 ответов

Другие вопросы по тегам