Verwenden von Azure Monitor-Application Insights mit Spring Boot

Hinweis

Mit nativen Spring Boot-Image-Anwendungen können Sie dieses Projekt verwenden.

Es gibt zwei Optionen zum Aktivieren von Application Insights Java mit Spring Boot: Java Virtual Machine-Argument (JVM) und programmgesteuert.

Aktivieren mit JVM-Argument

Fügen Sie das JVM-Argument -javaagent:"path/to/applicationinsights-agent-3.5.2.jar" an beliebiger Stelle vor -jar hinzu. Beispiel:

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

Spring Boot über Docker-Einstiegspunkt

Siehe Dokumentation zu Containern.

Konfiguration

Siehe Konfigurationoptionen.

Programmgesteuerte Aktivierung

Um Application Insights für Java programmgesteuert zu aktivieren, müssen Sie die folgende Abhängigkeit hinzufügen:

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

Rufen Sie die attach()-Methode der com.microsoft.applicationinsights.attach.ApplicationInsights-Klasse auf, die sich in der Anfangszeile Ihrer main()-Methode befindet.

Warnung

Der Aufruf muss am Anfang der main-Methode sein.

Warnung

JRE wird nicht unterstützt.

Warnung

Das temporäre Verzeichnis des Betriebssystems sollte beschreibbar sein.

Beispiel:

@SpringBootApplication
public class SpringBootApp {

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

Konfiguration

Die programmgesteuerte Aktivierung unterstützt alle gleichen Konfigurationsoptionen wie die Aktivierung des JVM-Arguments, mit den Unterschieden, die in den nächsten Abschnitten beschrieben werden.

Speicherort der Konfigurationsdatei

Standardmäßig wird die Konfigurationsdatei applicationinsights.json beim programmgesteuerten Aktivieren von Application Insights Java aus dem Klassenpfad (src/main/resources, src/test/resources) gelesen.

Ab 3.4.3 können Sie den Namen einer JSON-Datei im Klassenpfad mit der Systemeigenschaft applicationinsights.runtime-attach.configuration.classpath.file konfigurieren. Bei -Dapplicationinsights.runtime-attach.configuration.classpath.file=applicationinsights-dev.json verwendet Application Insights beispielsweise die Datei applicationinsights-dev.json für die Konfiguration. So konfigurieren Sie eine andere Datei programmgesteuert im Klassenpfad:

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

Hinweis

application.properties oder application.yaml-Dateien von Spring werden nicht als Quellen für die Java-Konfiguration von Application Insights unterstützt.

Informationen zum Ändern des Speicherorts für eine Datei außerhalb des Klassenpfads finden Sie unter Pfad der Konfigurationsdatei.

So konfigurieren Sie eine Datei außerhalb des Klassenpfads programmgesteuert:

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

Programmgesteuertes Konfigurieren der Verbindungszeichenfolge

Fügen Sie zunächst die applicationinsights-core-Abhängigkeit hinzu:

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

Rufen Sie anschließend die ConnectionString.configure-Methode nach ApplicationInsights.attach() auf:

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

Alternativ können Sie die ConnectionString.configure-Methode aus einer Spring-Komponente aufrufen.

Aktivieren Sie die zur Laufzeit konfigurierte Verbindungszeichenfolge:

{
  "connectionStringConfiguredAtRuntime": true
}

Speicherort der Protokolldatei zur Selbstdiagnose

Wenn Application Insights für Java programmgesteuert aktiviert wird, befindet sich die applicationinsights.log-Datei, die die Agentprotokolle enthält, im Verzeichnis, in dem die JVM gestartet wird (Benutzerverzeichnis).

Weitere Informationen zum Ändern dieses Speicherorts finden Sie in Ihren Konfigurationsoptionen zur Selbstdiagnose.