將 Azure Monitor Application Insights 與 Spring Boot 搭配使用

注意

透過 Spring Boot 原生映像應用程式,您可以使用此專案

使用 Spring Boot 啟用 Application Insights Java 有兩個選項:JAVA 虛擬機器 (JVM) 引數和以程式設計方式。

使用 JVM 引數啟用

-jar 前面新增 JVM 引數 -javaagent:"path/to/applicationinsights-agent-3.6.0.jar",例如:

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

透過 Docker 進入點的 Spring Boot

請參閱與容器相關的文件

組態

請參閱設定選項

以程式設計方式啟用

若要以程式設計方式啟用 Application Insights Java,您必須新增下列相依性:

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

並在 main() 方法的開頭叫用 com.microsoft.applicationinsights.attach.ApplicationInsights 類別的 attach() 方法。

警告

必須在 main 方法的開頭要求叫用。

警告

不支援 JRE。

警告

作業系統的臨時目錄應該可寫入。

範例:

@SpringBootApplication
public class SpringBootApp {

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

組態

以程式設計方式啟用支援與 JVM 引數啟用相同的設定選項,以及下一節中所述的差異。

設定檔位置

根據預設,以程式設計方式啟用 Application Insights Java 時,設定檔 applicationinsights.json 會從 classpath (src/main/resourcessrc/test/resources) 讀取。

從 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 檔案進行設定。 若要以程式設計方式在 classpath 中設定另一個檔案:

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 外部檔案的位置。

若要以程式設計方式在 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 的目錄中 (使用者目錄)。

請參閱 自我診斷設定選項,以了解如何變更此位置。