Utilisation d’Azure Monitor Application Insights avec Spring Boot

Remarque

Avec applications d’image native Spring Boot, vous pouvez utiliser ce projet.

Il existe deux options pour activer Application Insights Java avec Spring Boot : l’argument JVM (Java Virtual Machine) et programmatiquement.

Activation avec l’argument JVM

Ajoutez l’argument JVM -javaagent:"path/to/applicationinsights-agent-3.5.2.jar" à l'emplacement de votre choix avant -jar, par exemple :

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

Spring Boot via le point d’entrée Docker

Consultez la documentation relative aux conteneurs..

Configuration

Consultez les options de configuration.

Activation programmatique

Pour activer Application Insights Java programmatiquement, vous devez ajouter la dépendance suivante :

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

Appelez ensuite la méthode attach() de la classe com.microsoft.applicationinsights.attach.ApplicationInsights dans la ligne de début de votre méthode main().

Avertissement

L’appel doit avoir lieu au début de la méthode main.

Avertissement

JRE n’est pas pris en charge.

Avertissement

Le répertoire temporaire du système d’exploitation doit être accessible en écriture.

Exemple :

@SpringBootApplication
public class SpringBootApp {

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

Configuration

L’activation programmatique prend en charge toutes les mêmes options de configuration que l’activation par l’argument JVM, avec les différences décrites dans les sections suivantes.

Emplacement du fichier de configuration

Par défaut, lors de l’activation programmatique d’Application Insights Java, le fichier de configuration applicationinsights.json est lu à partir du chemin de la classe (src/main/resources, src/test/resources).

À partir de la version 3.4.3, vous pouvez configurer le nom d’un fichier JSON dans le chemin de la classe avec la propriété système applicationinsights.runtime-attach.configuration.classpath.file. Par exemple, avec -Dapplicationinsights.runtime-attach.configuration.classpath.file=applicationinsights-dev.json, Application Insights utilise le fichier applicationinsights-dev.json pour la configuration. Pour configurer par programme un autre fichier dans le 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);
}

Remarque

Les fichiers application.properties ou application.yaml de Spring ne sont pas pris en charge comme sources pour la configuration Application Insights Java.

Consultez les options de configuration du chemin du fichier de configuration pour changer l’emplacement d’un fichier en dehors du chemin de la classe.

Pour configurer par programme un fichier en dehors du classpath :

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

Configurer par programmation la chaîne de connexion

Tout d’abord, ajoutez la dépendance applicationinsights-core :

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

Ensuite, appelez la méthode ConnectionString.configure après ApplicationInsights.attach():

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

Vous pouvez également appeler la méthode ConnectionString.configure à partir d’un composant Spring.

Activez la chaîne de connexion configurée au moment de l’exécution :

{
  "connectionStringConfiguredAtRuntime": true
}

Emplacement du fichier journal de l’auto-diagnostic

Par défaut, lors de l’activation programmatique d’Application Insights Java, le fichier applicationinsights.log contenant les journaux de l’agent se trouve dans le répertoire à partir duquel la machine JVM est lancée (répertoire utilisateur).

Pour apprendre comment changer cet emplacement, consultez les options de configuration de l’auto-diagnostic.