Configuración de Application Insights de Azure Monitor para Spring Boot

Nota:

Con las aplicaciones de imágenes nativas de Spring Boot, puede usar este proyecto.

Hay dos opciones para habilitar Application Insights Java con Spring Boot: con un argumento de Java Virtual Machine (JVM) y mediante programación.

Habilitación con el argumento JVM

Agregue el argumento de JVM -javaagent:"path/to/applicationinsights-agent-3.5.2.jar" en alguna parte antes de -jar, por ejemplo:

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

Spring Boot mediante el punto de entrada de Docker

Vea la documentación relacionada con los contenedores.

Configuración

Ver opciones de configuración.

Habilitación mediante programación

Para habilitar Application Insights Java mediante programación, debe agregar la siguiente dependencia:

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

E invoque el método attach() de la clase com.microsoft.applicationinsights.attach.ApplicationInsights que está en la línea inicial del método main().

Advertencia

La invocación debe estar al principio del método main.

Advertencia

No se admite JRE .

Advertencia

El directorio temporal del sistema operativo debe ser grabable.

Ejemplo:

@SpringBootApplication
public class SpringBootApp {

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

Configuración

La habilitación mediante programación admite las mismas opciones de configuración que la habilitación del argumento de JVM, con las diferencias que se describen en las siguientes secciones.

Ubicación del archivo de configuración

De manera predeterminada, al habilitar Application Insights Java mediante programación, el archivo de configuración applicationinsights.json se lee desde la ruta de clase (src/main/resources, src/test/resources).

Desde la versión 3.4.3, puede configurar el nombre de un archivo JSON en la ruta de clase con la propiedad del sistema applicationinsights.runtime-attach.configuration.classpath.file. Por ejemplo, con -Dapplicationinsights.runtime-attach.configuration.classpath.file=applicationinsights-dev.json, Application Insights usa el archivo applicationinsights-dev.json para la configuración. Para configurar mediante programación otro archivo en la ruta de clase:

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

Nota:

Los archivos application.properties o application.yaml de Spring no se admiten como orígenes para la configuración de Java de Application Insights.

Consulte opciones de configuración de ruta de acceso del archivo de configuración para cambiar la ubicación de un archivo fuera de la ruta de acceso de clase.

Para configurar mediante programación un archivo fuera de la ruta de clase:

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

Configuración mediante programación de la cadena de conexión

En primer lugar, agregue la dependencia applicationinsights-core:

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

A continuación, llame al método ConnectionString.configure después de ApplicationInsights.attach():

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

Como alternativa, llame al método ConnectionString.configure desde un componente de Spring.

Habilite la cadena de conexión configurada en el entorno de ejecución:

{
  "connectionStringConfiguredAtRuntime": true
}

Ubicación del archivo de registro de autodiagnóstico

De forma predeterminada, al habilitar Application Insights Java mediante programación, el archivo applicationinsights.log que contiene los registros del agente se ubica en el directorio desde el que se inicia JVM (directorio de usuario).

Para obtener información sobre cómo cambiar esta ubicación, consulte las opciones de configuración de autodiagnóstico.