将Scala应用程序与NewRelic Java代理集成
我想使用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
- 把纽舍利放进去。jar&;纽舍利。yml(带配置)位于另一个文件夹中,例如/tmp/newrelic
编辑脚本/devel。sh,添加javaagent标志
java-server-Xmx1024m-Dstage=development-Dnewrelic。配置。文件=/tmp/newrelic/newrelic。yml-javaagent:/tmp/newrelic/newrelic。jar-jar“$ROOT_DIR”/kestrel_2.9.2-2.4.1。罐子4。运行脚本/devel。sh,您将看到上面的错误
有什么想法吗?事实上,我已经炒了一张去NewRelic的票,但整整一个月都没有得到他们的答复,我希望社区和@lewis-cirne(NewRelic首席执行官)能对此有所了解
# 1 楼答案
即使New Relic支持Scala(我听说可能很快就会出现),Kestrel使用eval似乎是一个更难解决的问题。是否有一个不使用eval的红隼设置,或者是烘焙设置
# 2 楼答案
NewRelic Java代理中不支持Scala https://newrelic.com/docs/java/new-relic-for-java
# 3 楼答案
随着2013年5月29日NewRelic的Java agent版本2.19.0的发布,Scala及其在Play2.0和2.1框架中的使用得到了极大的支持。您遇到的问题与Scala没有直接关系。Kestrel使用eval进行运行时编译。New Relic的代理设计用于处理预编译的Java字节码,因此不支持eval过程