akka-http 未在 NewRelic 中显示指标

akka-http not showing metrics in NewRelic

我正在尝试使用 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 里面有一个可执行文件。

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

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

新的Relic监控系统中出现正确名称的应用程序

但是 NewRelic 没有显示任何指标

我需要做什么才能在 NewRelic 上看到一些指标?

我真的不知道我做了什么让它起作用,我所做的改变是:

在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代理的版本)

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

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

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


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

newrelicAppName := name.toString

值看起来像这样:

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

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


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

newrelicAppName := name.value

值看起来像:

$ show newrelicAppName
[info] my-project

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

注意: newrelicAppName 的默认值是包含项目的名称,因此在第一个示例中根本不设置该值可能 "just worked" 如您所愿。