【问题标题】:akka-http not showing metrics in NewRelicakka-http 未在 NewRelic 中显示指标
【发布时间】:2016-06-26 03:00:34
【问题描述】:

我正在尝试使用 NewRelic 监控我的 akka-http Rest 网络服务

应用只有一个GET url(用akka-http定义)

我在plugins.sbt

中有如下配置
logLevel := Level.Warn
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.4")
addSbtPlugin("com.gilt.sbt" % "sbt-newrelic" % "0.1.4")

我在build.sbt

中有如下配置
scalaVersion := "2.11.7"
name := "recommender-api"

...blablabla...

libraryDependencies += "com.typesafe.akka" % "akka-actor_2.11" % "2.4.2"
libraryDependencies += "com.typesafe.akka" % "akka-http-experimental_2.11" % "2.4.2"
libraryDependencies += "com.typesafe.akka" % "akka-http-spray-json-experimental_2.11" % "2.4.2"
libraryDependencies += "com.typesafe.akka" % "akka-slf4j_2.11" % "2.4.2"

newrelicIncludeApi := true
newrelicAppName := name.toString
enablePlugins(JavaServerAppPackaging, UniversalDeployPlugin, NewRelic)

我用 sbt universal:publish 编译(和部署)代码,它会创建一个 .zip,在 .zip 里面有一个可执行文件。

我通过环境(NEW_RELIC_LICENSE_KEY)传递newRelic licenceKey

程序启动,一切正常,找到了newRelic密钥(因为日志并没有说它没有找到密钥)

该应用程序以正确的名称出现在 newRelic 监控系统中

但 NewRelic 不显示任何指标

我必须做什么才能查看 NewRelic 的一些指标?

【问题讨论】:

    标签: sbt akka newrelic sbt-native-packager akka-http


    【解决方案1】:

    当您将newrelicAppName 的值指定为name.toString 时,您并没有按预期进行。

    namesbt.SettingKey 类型的值,其中包含设置名称、类型的详细信息以及密钥用途的简短描述。

    实际包含值的类型是sbt.Setting。您可以通过调用.value 方法从SettingKey(在当前项目和配置中)获取Setting


    所以当你像这样设置值时:

    newrelicAppName := name.toString
    

    值看起来像这样:

    $ show newrelicAppName
    [info] sbt.SettingKey$$anon$4@54ec2887
    

    是的,这实际上是一个包含许多奇怪字符的字符串。


    另一方面,如果您使用.value 调用:

    newrelicAppName := name.value
    

    这个值看起来像:

    $ show newrelicAppName
    [info] my-project
    

    我的最佳猜测是 New Relic 不喜欢带有奇怪字符(如美元符号和 & 符号)的应用程序名称。通过设置一个更正常的字符串,您可以让 New Relic 更有可能接受这样的名称作为输入。

    注意:newrelicAppName 的默认值是包含项目的名称,因此在第一个示例中根本不设置该值可能会像您希望的那样“正常工作” .

    【讨论】:

    • 嗨@Gary,这正是我查看新遗物时发生的事情。有一个奇怪的名字,带有美元符号,我怀疑这个名字没有被正确取用。尽管如此,该应用程序仍然存在于新的遗物中,但没有任何指标。
    • 那符合我的假设;如果是name.value 而不是name,一切都会好起来的!
    【解决方案2】:

    我真的不知道我做了什么让它发挥作用,我所做的更改是:

    在 build.sbt 中

    newrelicVersion := "3.26.1"
    newrelicAppName := "recommenders-jobs-api-monitor"
    

    在plugin.sbt中

    addSbtPlugin("com.gilt.sbt" % "sbt-newrelic" % "0.1.5")
    

    (我更新了 de sbt-newrelic 版本)
    (我对新遗物应用程序的名称进行了编码)
    (我指定了Java Agent的版本)

    【讨论】:

      猜你喜欢
      • 2019-02-27
      • 2016-08-12
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      • 2018-11-11
      • 2022-09-24
      相关资源
      最近更新 更多