仅在通过终端执行程序时才会触发 Lightbend 遥测

Lightbend telemetry gets triggered only when executing the program via terminal

我正在尝试使用 Scala 开发 Akka 应用程序,我想使用 Lightbend Telemetry 记录应用程序行为:Cinnamon Grafana + Prometheus。

我按照本教程使用 sbt 设置了所有内容 https://developer.lightbend.com/docs/telemetry/current//setup/cinnamon-agent-sbt.html

一切正常,但 Cinnamon 仅在我 运行 我的应用程序从命令行使用

时启动
sbt clean compile
sbt run

并且我可以在控制台中看到日志

[info] [INFO] [02/14/2022 10:58:15.480] [main-1] [Cinnamon] Agent version 2.16.2
[info] [INFO] [02/14/2022 10:58:16.362] [main-1] [Cinnamon] Agent found Java Futures version: 1.8.0_311
[info] [INFO] [02/14/2022 10:58:16.436] [main-1] [Cinnamon] Agent found Scala version: 2.13.8
[info] [INFO] [02/14/2022 10:58:16.436] [main-1] [Cinnamon] Agent found Scala Futures version: 2.13.8

当我从 IntelliJ (运行) 运行 或当我通过 set-assembly 构建 fat jar 并 运行 它与 java -jar, Cinnamon没有启动。

谁能帮我理解为什么?

归结为在启动jvm时传递-javaagent开关。

当您通过 sbt run 运行 应用程序时,

sbt 可以为您完成。当您从 intellij 或打包的 jar 运行 它时,该开关不会传递给 jvm,因此 Cinnamon 不是 运行ning。

在 intellij 中,您可以转到 运行 配置并在配置中添加 -javaagent path/to/cinnamon-agent.jar。如果你 运行 你的 jar 通过 java jar your-jar.jar 只需将开关添加到命令行。