我正在尝试使用NewRelic
监控我的akka-http Rest网络服务该应用只有一个 GET网址(使用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键(因为日志没有说它没有找到密钥)
aplication在newRelic监视系统中以正确的名称显示
但NewRelic不显示任何指标
我需要做些什么来查看NewRelic的一些指标?
答案 0 :(得分:1)
当您将newrelicAppName
的值指定为name.toString
时,您的效果并不理想。
name
是sbt.SettingKey
类型的值,其中包含设置名称,类型的详细信息以及密钥用途的简短说明。
实际包含值的类型是sbt.Setting
。您可以通过调用Setting
方法从SettingKey
(在当前项目和配置中)获得.value
。
所以当你设置这样的值时:
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
的默认值是包含项目的名称,因此在第一个示例中根本不设置值可能会“正常工作”我喜欢。
答案 1 :(得分:0)
我真的不知道我做了什么让它发挥作用,我所做的改变是:
在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代理的版本)