将 Azure Monitor Application Insights 与 Spring Boot 配合使用

注意

借助 Spring Boot 本机映像应用程序,可以使用此项目

有两个选项可用于通过 Spring Boot 启用 Application Insights Java:Java 虚拟机 (JVM) 参数和以编程方式。

使用 JVM 参数启用

将 JVM 参数 -javaagent:"path/to/applicationinsights-agent-3.6.0.jar" 添加到 -jar 之前的某个位置,例如:

java -javaagent:"path/to/applicationinsights-agent-3.6.0.jar" -jar <myapp.jar>

Spring Boot(通过 Docker 入口点)

请参阅与容器相关的文档

配置

请参阅配置选项

以编程方式启用

若要以编程方式启用 Application Insights Java,必须添加以下依赖项:

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>applicationinsights-runtime-attach</artifactId>
    <version>3.6.0</version>
</dependency>

并调用 com.microsoft.applicationinsights.attach.ApplicationInsights 类的 attach() 方法,该方法位于 main() 方法的起始行。

警告

该调用必须在 main 方法的开头进行。

警告

JRE 不受支持。

警告

操作系统的临时目录应该是可写的。

示例:

@SpringBootApplication
public class SpringBootApp {

  public static void main(String[] args) {
    ApplicationInsights.attach();
    SpringApplication.run(SpringBootApp.class, args);
  }
}

配置

编程启用支持所有与 JVM 参数启用相同的配置选项,后续部分中会介绍不同之处。

配置文件位置

默认情况下,以编程方式启用 Application Insights Java 时,会从类路径(src/main/resourcessrc/test/resources)读取配置文件 applicationinsights.json

从 3.4.3 开始,可以使用 applicationinsights.runtime-attach.configuration.classpath.file 系统属性在 classpath 中配置 JSON 文件的名称。 例如,对于 -Dapplicationinsights.runtime-attach.configuration.classpath.file=applicationinsights-dev.json,Application Insights 使用 applicationinsights-dev.json 文件进行配置。 若要以编程方式在类路径中配置另一个文件,请执行以下操作:

public static void main(String[] args) {
    System.setProperty("applicationinsights.runtime-attach.configuration.classpath.file", "applicationinsights-dev.json");
    ApplicationInsights.attach();
    SpringApplication.run(PetClinicApplication.class, args);
}

注意

不支持将 Spring 的 application.propertiesapplication.yaml 文件作为 Application Insights Java 配置的源。

若要更改 classpath 外的文件的位置,请参阅配置文件路径配置选项

若要以编程方式在类路径外配置一个文件,请执行以下操作:

public static void main(String[] args) {
    System.setProperty("applicationinsights.configuration.file", "{path}/applicationinsights-dev.json");
    ApplicationInsights.attach();
    SpringApplication.run(PetClinicApplication.class, args);
}

以编程方式配置连接字符串

首先,添加 applicationinsights-core 依赖项:

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>applicationinsights-core</artifactId>
    <version>3.6.0</version>
</dependency>

然后,在 ApplicationInsights.attach() 后调用 ConnectionString.configure 方法:

public static void main(String[] args) {
    System.setProperty("applicationinsights.configuration.file", "{path}/applicationinsights-dev.json");
    ApplicationInsights.attach();
    SpringApplication.run(PetClinicApplication.class, args);
}

或者,从 Spring 组件调用 ConnectionString.configure 方法。

启用在运行时配置的连接字符串:

{
  "connectionStringConfiguredAtRuntime": true
}

自诊断日志文件位置

默认情况下,以编程方式启用 Application Insights Java 时,包含代理日志的 applicationinsights.log 文件位于从其中启动 JVM 的目录(用户目录)中。

要了解如何更改此位置,请参阅自我诊断配置选项