使用 Azure Monitor Application Insights 搭配 Spring Boot

注意

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

使用 Spring Boot 啟用 Application Insights Java 有兩個選項:Java 虛擬機 (JVM) 自變數,並以程式設計方式啟用 Application Insights Java。

使用 JVM 自變數啟用

將 JVM 自變數 -javaagent:"path/to/applicationinsights-agent-3.5.2.jar" 新增至之前的 -jar某處,例如:

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

透過 Docker 進入點的 Spring Boot

請參閱與 容器相關的檔。

組態

請參閱組 態選項

以程式設計方式啟用

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

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

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

警告

叫用必須位於 方法的 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,您可以使用系統屬性,在 classpath applicationinsights.runtime-attach.configuration.classpath.file 中設定 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.5.2</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 的目錄中(使用者目錄)。

若要瞭解如何變更此位置,請參閱您的 自我診斷組態選項