akka-http 未在 NewRelic 中显示指标
Posted
技术标签:
【中文标题】akka-http 未在 NewRelic 中显示指标【英文标题】:akka-http not showing metrics in 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 的一些指标?
【问题讨论】:
【参考方案1】:当您将newrelicAppName
的值指定为name.toString
时,您并没有按预期进行。
name
是 sbt.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的版本)
【讨论】:
以上是关于akka-http 未在 NewRelic 中显示指标的主要内容,如果未能解决你的问题,请参考以下文章