Usar o Application Insights do Azure Monitor com o Spring Boot

Observação

Com os aplicativos de imagem nativa do Spring Boot, você pode usar esse projeto.

Há duas opções para habilitar o Java do Application Insights com o Spring Boot: argumento JVM (Máquina Virtual Java) e programaticamente.

Habilitando com o argumento JVM

Adicione o ARG da JVM em -javaagent:"path/to/applicationinsights-agent-3.5.2.jar" algum lugar antes de -jar, como:

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

Spring Boot por meio do ponto de entrada do Docker

Consulte a documentação relacionada a contêineres.

Configuração

Veja Opções de configuração.

Habilitando programaticamente

Para habilitar o Java do Application Insights programaticamente, adicione a seguinte dependência:

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

E invoque o método attach() da classe com.microsoft.applicationinsights.attach.ApplicationInsights na primeira linha do seu método main().

Aviso

A invocação deve estar no início do método main.

Aviso

Não há suporte para JRE.

Aviso

O diretório temporário do sistema operacional deve ser gravável.

Exemplo:

@SpringBootApplication
public class SpringBootApp {

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

Configuração

A habilitação programática dá suporte a todas as mesmas opções de configuração que a habilitação do argumento JVM, com as diferenças descritas nas próximas seções.

Local do arquivo de configuração

Por padrão, ao habilitar o Java do Application Insights programaticamente, o arquivo de configuração applicationinsights.json será lido do classpath (src/main/resources, src/test/resources).

Da versão 3.4.3, você pode configurar o nome de um arquivo JSON no classpath com a propriedade do sistema applicationinsights.runtime-attach.configuration.classpath.file. Por exemplo, com -Dapplicationinsights.runtime-attach.configuration.classpath.file=applicationinsights-dev.json, o Application Insights usará o arquivo applicationinsights-dev.json para configuração. Para configurar programaticamente outro arquivo no 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);
}

Observação

Não há suporte para os arquivos application.properties ou application.yaml do Spring como fontes para a configuração Java do Application Insights.

Configura as opções de configuração do caminho do arquivo de configuração para alterar o local de um arquivo fora do classpath.

Para configurar programaticamente um arquivo fora do classpath:

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

Configurar programaticamente a cadeia de conexão

Primeiro, adicione a dependência applicationinsights-core:

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

Em seguida, chame o método ConnectionString.configure apó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);
}

Como alternativa, chame o método ConnectionString.configure de um componente Spring.

Habilita a cadeia de conexão configurada no runtime:

{
  "connectionStringConfiguredAtRuntime": true
}

Localização do arquivo de log de autodiagnóstico

Por padrão, ao habilitar o Application Insights Java programaticamente, o arquivo applicationinsights.log que contém os logs do agente estará localizado no diretório de onde a JVM é iniciada (diretório do usuário).

Para saber como alterar esse local, consulte as opções de configuração de autodiagnóstico.