Atualizando do Application Insights Java 2.x SDK

Normalmente, não há alterações de código ao atualizar para 3.x. As dependências do SDK 3.x são versões da API sem operações das dependências do SDK 2.x. No entanto, quando utilizado com o agente Java 3.x, o agente Java 3.x fornece a implementação para eles. Como resultado, sua instrumentação personalizada está correlacionada com toda a nova instrumentação automática fornecida pelo agente Java 3.x.

Etapa 1: atualizar dependências

Dependência 2.x Ação Comentários
applicationinsights-core Atualizar a versão para 3.4.3 ou posterior
applicationinsights-web Atualize a versão para 3.4.3 ou posterior e remova o filtro web do Application Insights do arquivo web.xml.
applicationinsights-web-auto Substituir pela versão 3.4.3 ou posterior do applicationinsights-web
applicationinsights-logging-log4j1_2 Remova a dependência e remova o appender do Application Insights da configuração do Log4j. Não é mais necessário, pois o Log4j 1.2 é instrumentado automaticamente no agente Java 3.x.
applicationinsights-logging-log4j2 Remova a dependência e remova o appender do Application Insights da configuração do Log4j. Não é mais necessário, pois o Log4j 2 é instrumentado automaticamente no agente Java 3.x.
applicationinsights-logging-logback Remova a dependência e remova o appender do Application Insights da configuração do Logback. Não é mais necessário, pois o Logback é instrumentado automaticamente no agente Java 3.x.
applicationinsights-spring-boot-starter Substituir pela versão 3.4.3 ou posterior do applicationinsights-web O nome da função na nuvem não tem mais o padrão de spring.application.name. Para saber como configurar o nome da função na nuvem, consulte os documentos de configuração 3.x.

Etapa 2: adicionar o agente Java 3.x

Adicione o agente Java 3.x aos seus argumentos de linha de comando da JVM (Máquina Virtual Java), por exemplo:

-javaagent:path/to/applicationinsights-agent-3.5.2.jar

Se você estiver usando o agente Java 2.x do Application Insights, basta substituir o -javaagent:... existente pelo exemplo anterior.

Observação

Se você estava usando o spring-boot-starter e, se preferir, há uma alternativa ao uso do agente Java. Confira 3.x Spring Boot.

Etapa 3: configurar sua cadeia de conexão do Application Insights

Confira a configuração da cadeia de conexão.

Outras observações

O restante deste documento descreve as limitações e alterações que você pode encontrar ao atualizar do 2.x para o 3.x e algumas soluções alternativas que podem ser úteis.

TelemetryInitializers

Os TelemetryInitializers do SDK 2.x não são executados ao usar o agente 3.x. Muitos dos casos de uso que anteriormente exigiam a gravação de um TelemetryInitializer podem ser resolvidos no Application Insights Java 3.x configurando as dimensões personalizadas. Ou usando os atributos herdados.

TelemetryProcessors

Os TelemetryProcessors do SDK 2.x não são executados ao usar o agente 3.x. Muitos dos casos de uso que anteriormente exigiam a gravação de um TelemetryProcessor podem ser resolvidos no Application Insights Java 3.x configurando as substituições de amostragem.

Vários aplicativos em uma única máquina virtual Java

Este caso de uso é suportado no Application Insights Java 3.x usando Substituições de nome da função na nuvem (versão prévia) e/ou Substituições da cadeia de caracteres de conexão (versão prévia).

Nomes de operação

Além disso, no SDK 2.x do Application Insights para Java, em alguns casos, os nomes de operação continham o caminho completo, por exemplo:

Captura de tela mostrando nomes de operação com caminho completo

Os nomes de operação no Application Insights 3.x para Java foram alterados para geralmente fornecer uma exibição agregada melhor no portal do Application Insights U/X, por exemplo:

Captura de tela mostrando nomes de operação com parâmetros

No entanto, para alguns aplicativos, você ainda pode preferir a exibição agregada na U/X fornecida pelos nomes das operações anteriores. Nesse caso, você pode usar o recurso processadores de telemetria (versão prévia) na versão 3.x para replicar o comportamento anterior.

O trecho a seguir configura três processadores de telemetria que se combinam para replicar o comportamento anterior. Os processadores de telemetria executam as seguintes ações (em ordem):

  1. O primeiro processador de telemetria é um processador de atributo (tem tipo attribute), o que significa que ele se aplica a toda telemetria que tem atributos (atualmente requests, dependencies e, em breve, também traces).

    Ele corresponde a qualquer telemetria que tenha os atributos nomeados http.request.method e url.path.

    Em seguida, ele extrai o atributo url.path em um novo atributo chamado tempName.

  2. O segundo processador de telemetria é um processador de span (tem tipospan), o que significa que ele se aplica a requests e dependencies.

    Ele corresponde a qualquer intervalo que tenha um atributo chamado tempPath.

    Em seguida, ele atualiza o nome do intervalo a partir do atributo tempPath.

  3. O último processador de telemetria é um processador de atributo, o mesmo tipo que o primeiro processador de telemetria.

    Corresponde a qualquer telemetria que tenha um atributo nomeado tempPath.

    Em seguida, ele exclui o atributo chamado tempPath e o atributo aparece como uma dimensão personalizada.

{
  "preview": {
    "processors": [
      {
        "type": "attribute",
        "include": {
          "matchType": "strict",
          "attributes": [
            { "key": "http.request.method" },
            { "key": "url.path" }
          ]
        },
        "actions": [
          {
            "key": "url.path",
            "pattern": "https?://[^/]+(?<tempPath>/[^?]*)",
            "action": "extract"
          }
        ]
      },
      {
        "type": "span",
        "include": {
          "matchType": "strict",
          "attributes": [
            { "key": "tempPath" }
          ]
        },
        "name": {
          "fromAttributes": [ "http.request.method", "tempPath" ],
          "separator": " "
        }
      },
      {
        "type": "attribute",
        "include": {
          "matchType": "strict",
          "attributes": [
            { "key": "tempPath" }
          ]
        },
        "actions": [
          { "key": "tempPath", "action": "delete" }
        ]
      }
    ]
  }
}