将 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/resources
、src/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.properties
或 application.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 的目录(用户目录)中。
要了解如何更改此位置,请参阅自我诊断配置选项。