Condividi tramite


Aggiornamento da Application Insights Java 2.x SDK

In genere non sono presenti modifiche al codice durante l'aggiornamento alla versione 3.x. Le dipendenze dell'SDK 3.x non sono versioni API non operative delle dipendenze dell'SDK 2.x. Tuttavia, se usato con l'agente Java 3.x, l'agente Java 3.x fornisce l'implementazione per tali agenti. Di conseguenza, la strumentazione personalizzata è correlata a tutte le nuove operazioni di strumentazione automatica fornite dall'agente Java 3.x.

Passaggio 1: Aggiornare le dipendenze

Dipendenza 2.x Azione Osservazioni:
applicationinsights-core Aggiornare la versione a 3.4.3 o versione successiva
applicationinsights-web Aggiornare la versione a 3.4.3 o versione successiva e rimuovere il filtro Web di Application Insights nel file web.xml.
applicationinsights-web-auto Sostituire con 3.4.3 o versioni successive di applicationinsights-web
applicationinsights-logging-log4j1_2 Rimuovere la dipendenza e rimuovere l'appender di Application Insights dalla configurazione di Log4j. Non è più necessario perché Log4j 1.2 viene implementato automaticamente nell'agente Java 3.x.
applicationinsights-logging-log4j2 Rimuovere la dipendenza e rimuovere l'appender di Application Insights dalla configurazione di Log4j. Non è più necessario perché Log4j 2 viene implementato automaticamente nell'agente Java 3.x.
applicationinsights-logging-logback Rimuovere la dipendenza e rimuovere l'appender di Application Insights dalla configurazione di Logback. Non è più necessario perché Logback viene implementato automaticamente nell'agente Java 3.x.
applicationinsights-spring-boot-starter Sostituire con 3.4.3 o versioni successive di applicationinsights-web Per impostazione predefinita, il nome del ruolo cloud non è più spring.application.name. Per informazioni su come configurare il nome del ruolo cloud, vedere la documentazione sulla configurazione 3.x.

Passaggio 2: Aggiungere l'agente Java 3.x

Aggiungere l'agente Java 3.x agli argomenti della riga di comando di Java Virtual Machine (JVM), ad esempio:

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

Se si usa l'agente Java di Application Insights 2.x, è sufficiente sostituire il -javaagent:... esistente con l'esempio precedente.

Nota

Se si usa spring-boot-starter e, se si preferisce, esiste un'alternativa all'uso dell'agente Java. Vedere 3.x Spring Boot.

Passaggio 3: Configurare la stringa di connessione di Application Insights

Vedere Configurazione della stringa di connessione.

Altre note

Il resto di questo documento descrive le limitazioni e le modifiche che potrebbero verificarsi durante l'aggiornamento da 2.x a 3.x e alcune soluzioni alternative che potrebbero risultare utili.

TelemetryInitializers

2.x SDK TelemetryInitializers non vengono eseguiti quando si usa l'agente 3.x. Molti dei casi d'uso che in precedenza richiedevano la scrittura di un TelemetryInitializer possono essere risolti in Application Insights Java 3.x configurando dimensioni personalizzate. Oppure usando attributi ereditati.

TelemetryProcessors

2.x SDK TelemetryProcessor non vengono eseguiti quando si usa l'agente 3.x. Molti dei casi d'uso che in precedenza richiedevano la scrittura di un TelemetryProcessor possono essere risolti in Application Insights Java 3.x configurando override del campionamento.

Più applicazioni in una singola JVM

Questo caso d'uso è supportato in Application Insights Java 3.x usando override del nome del ruolo cloud (anteprima) e/o Override della stringa di connessione (anteprima).

Nomi dell'operazione

In Application Insights Java 2.x SDK, in alcuni casi, i nomi delle operazioni contengono il percorso completo, ad esempio:

Screenshot che mostra i nomi delle operazioni con percorso completo

I nomi delle operazioni in Application Insights Java 3.x sono stati modificati per offrire in genere una visualizzazione aggregata migliore nel portale di Application Insights U/X, ad esempio:

Screenshot che mostra i nomi delle operazioni con parametri

Tuttavia, per alcune applicazioni, è comunque consigliabile preferire la visualizzazione aggregata nell'U/X fornita dai nomi delle operazioni precedenti. In questo caso, è possibile usare la funzionalità processori di telemetria (anteprima) nella versione 3.x per replicare il comportamento precedente.

Il frammento di codice seguente configura tre processori di telemetria combinati per replicare il comportamento precedente. I processori di telemetria eseguono le azioni seguenti (in ordine):

  1. Il primo processore di telemetria è un processore di attributi (ha tipo attribute), il che significa che si applica a tutti i dati di telemetria che hanno attributi (attualmente requests e dependencies, ma presto anche traces).

    Corrisponde a tutti i dati di telemetria con attributi denominati http.request.method e url.path.

    Estrae quindi l'attributo url.path in un nuovo attributo denominato tempName.

  2. Il secondo processore di telemetria è un processore span (ha tipo span), il che significa che si applica a requests e dependencies.

    Corrisponde a qualsiasi intervallo con un attributo denominato tempPath.

    Aggiorna quindi il nome dell'intervallo dall'attributo tempPath.

  3. L'ultimo processore di telemetria è un processore di attributi, lo stesso tipo del primo processore di telemetria.

    Corrisponde a tutti i dati di telemetria con un attributo denominato tempPath.

    Elimina quindi l'attributo denominato tempPath e l'attributo viene visualizzato come dimensione personalizzata.

{
  "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" }
        ]
      }
    ]
  }
}

Esempio di progetto

Di questo progetto SDK Java 2.x viene eseguita la migrazione a un nuovo progetto usando l'agente Java 3.x.