【问题标题】:Integrating Scala app with NewRelic Java Agent将 Scala 应用程序与 NewRelic Java 代理集成
【发布时间】:2013-04-21 07:23:39
【问题描述】:

我想使用 Java 代理将 Scala 应用程序(Kestrelhttp://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
  • 将 newrelic.jar 和 newrelic.yml(带配置)放在另一个文件夹中,例如/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 CEO)能对此有所了解

【问题讨论】:

    标签: java scala newrelic finagle kestrel


    【解决方案1】:

    New Relic Java 代理中不支持 Scala https://newrelic.com/docs/java/new-relic-for-java

    【讨论】:

    • 实际上它确实有效,但只是在 Twitter Finagle 编译配置时无法引导类路径。
    • 您可能会看到的唯一内容是 JVM 统计信息以及某些汇总的 Web 事务。您不会看到任何您习惯于查看 Java Web 应用程序的统计信息,因为没有针对 Scala 或 Kestrel 的工具。
    【解决方案2】:

    随着 2013 年 5 月 29 日 New Relic 的 Java 代理版本 2.19.0 的发布,对 Scala 的支持得到了大力支持,并在 Play 2.0 和 2.1 框架中使用。您遇到的问题与 Scala 没有直接关系。 Kestrel 使用 eval 导致运行时编译。 New Relic 的代理设计用于处理预编译的 Java 字节码,因此不支持 eval 过程。

    【讨论】:

      【解决方案3】:

      即使 New Relic 支持 Scala(我听说它可能即将推出),Kestrel 对 eval 的使用似乎更难破解。是否有不使用 eval 的 Kestrel 设置或者是内置的?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-28
        • 2015-12-28
        • 2012-03-30
        • 2012-06-28
        • 2015-01-23
        • 1970-01-01
        相关资源
        最近更新 更多