【问题标题】:How to add Azure Monitor OpenTelemetry-based auto-instrumentation to Spring Boot Application?如何将基于 Azure Monitor OpenTelemetry 的自动检测添加到 Spring Boot 应用程序?
【发布时间】:2022-06-17 22:18:06
【问题描述】:

将 Azure Monitor OpenTelemetry 添加到 Java 应用程序的记录方法是下载 applicationinsights-agent-3.2.11.jar 并使用以下内容: -javaagent:path/to/applicationinsights-agent-3.2.11.jar.

所以在 Spring Boot 中,它可能的运行方式:

java -javaagent:path/to/applicationinsights-agent-3.2.11.jar -jar <jar-file.jar>.

但是如果这条路径发生变化会发生什么?

问题取决于它正在运行的系统,并使用 maven (pom.xml) 获取工件,我们如何使用 applicationinsights-agent-3.2.11.jar 启用 opentelemetry,因为 Maven 存储工件更改的位置来自用户帐户和计算机?

此外,如何指定 applicationinsights.json 文件的相对路径以进行配置(因为 Azure 在 applicationinsights-agent-3.2.11.jar 目录中查找此文件)?

If you specify a relative path, it will be resolved relative to the directory where applicationinsights-agent-3.2.11.jar is located.

更新 关于建议,How to define a relative path in java 和这个other suggested question 我不想从相对路径中读取文件。 需要使用特定参数调用 Spring Boot 应用程序,其中需要知道 maven 下载 appinsights jar 文件的位置。 然后,当应用启动时,appinsights 会根据 applicationinsights.json 文件自动配置,该文件可能因位置而异。

【问题讨论】:

  • 这能回答你的问题吗? How to define a relative path in java
  • 否 @DeepDave-MT,java 代理参数将包含 jar 文件的位置,该位置因计算机和环境而异。另外,在maven下载jar文件的时候,我们只能查看目录,手动进去添加applicationinsights.json文件。但是,它需要针对运行在其中的所有不同环境以及部署/产品中完成。这是我试图克服的问题。希望这是有道理的。

标签: java spring-boot azure azure-application-insights open-telemetry


【解决方案1】:

请注意,最新的applicationinsights-agent*.jaravailable through GitHub,而不是通过 Maven 存储库。因此,我认为不能使用pom.xml 将其作为项目的依赖项下载

现在,这里的问题不是特定于 ApplicationInsights 代理,而是针对任何用于监控的 java 代理。 -javaagent 参数与路径一起提供给 JVM(java 命令行)。因此,它必须在 JVM 启动时提供。它的设置方式取决于正在使用的服务器(或独立应用程序)及其启动机制。这里讨论了一种这样的解决方案:How to attach a java agent on to a running spring-boot application。由于可以部署/运行应用程序的方式有很多种,因此相对路径会有所不同。

如果您正在运行独立的 springboot 应用程序,您还可以修改 mvnwmvnw.cmd 脚本以包含 %MAVEN_OPTS%-javaagent=agent path,其中路径可能与其中定义的变量之一相关,例如%MAVEN_PROJECTBASEDIR%

关于applicationinsights.json 文件,您可以将它放在与代理 jar 相同的目录中,或者设置环境变量以从那里获取设置(而不是 json 文件) .您可以refer to this link 了解有关配置代理的可用环境变量的详细信息。在 JVM 初始化以使其可用于 javaagent 之前,可以根据应用程序的部署/运行方式/位置来设置这些环境变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-15
    • 2021-04-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2014-11-10
    • 2021-10-27
    • 2018-01-14
    相关资源
    最近更新 更多