将Scala应用程序与NewRelic Java Agent集成

时间:2013-04-27 03:15:09

标签: java scala newrelic finagle kestrel

我想使用java agant将Scala应用程序( Kestrel http://robey.github.com/kestrel)与NewRelic集成,但失败并显示错误

sh scripts/devel.sh 
Starting kestrel in development mode... 
Mar 28, 2013 18:15:15 +0800 NewRelic 1 INFO: Agent is using Logback 
Mar 28, 2013 18:15:15 +0800 NewRelic 1 INFO: Loading configuration file "/tmp/newrelic.yml" 
Mar 28, 2013 6:15:24 PM java.util.logging.LogManager$RootLogger log 
FATAL: Error in config file: %s com.twitter.util.Eval$CompilerException: Compiler exception error: line 1: object twitter is not a member of package com

import com.twitter.conversions.storage._ 
^ at com.twitter.util.Eval$StringCompiler.apply(Eval.scala:533) 
at com.twitter.util.Eval$StringCompiler$$anonfun$apply$3.apply(Eval.scala:544) 
at com.twitter.util.Eval$StringCompiler$$anonfun$apply$3.apply(Eval.scala:543) 
at scala.Option.getOrElse(Option.scala:108) 
at com.twitter.util.Eval$StringCompiler.apply(Eval.scala:543) 
at com.twitter.util.Eval.applyProcessed(Eval.scala:196) at com.twitter.util.Eval.apply(Eval.scala:167) at com.twitter.ostrich.admin.RuntimeEnvironment.loadConfig(RuntimeEnvironment.scala:230) 
at com.twitter.ostrich.admin.RuntimeEnvironment.loadRuntimeConfig(RuntimeEnvironment.scala:256) 
at net.lag.kestrel.Kestrel$.main(Kestrel.scala:307) at net.lag.kestrel.Kestrel.main(Kestrel.scala)

Mar 28, 2013 6:15:24 PM java.util.logging.LogManager$RootLogger log 
FATAL: error: line 1: object twitter is not a member of package com 
import com.twitter.conversions.storage._

重现的步骤:

  • 下载http://robey.github.com/kestrel/download/kestrel-2.4.1.zip
  • put newrelic.jar& newrelic.yml(with config)在另一个文件夹中,例如/ tmp / newrelic
  • 编辑scripts / devel.sh,添加javaagent标志

    java -server -Xmx1024m -Dstage = development -Dnewrelic.config.file = / tmp / newrelic / newrelic.yml -javaagent:/tmp/newrelic/newrelic.jar -jar“$ ROOT_DIR”/kestrel_2.9.2-2.4 .1.jar 4.运行scripts / devel.sh,您将看到上述错误。

有什么想法吗?实际上我已经开了一张去NewRelic的门票,但整整一个月没有得到他们的回答,我希望社区和@lewis-cirne(NewRelic首席执行官)可以屏蔽这个问题

3 个答案:

答案 0 :(得分:2)

New Relic Java Agent中没有Scala支持 https://newrelic.com/docs/java/new-relic-for-java

答案 1 :(得分:2)

随着2013年5月29日发布的New Relic Java代理版本2.19.0,Scala得到了大量支持,并且它在Play 2.0和2.1框架中得到了应用。你遇到的问题并不是直接与Scala有关。 Kestrel使用eval导致运行时编译。 New Relic的代理程序旨在使用预编译的Java字节码,因此不支持eval过程。

答案 2 :(得分:1)

即使New Relic支持Scala(我听说可能即将推出),Kestrel使用eval似乎是一个更难以破解的难题。是否有一个Kestrel的设置,它不使用eval或是烘焙过程?