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-3.6.2.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:
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:
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):
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 (attualmenterequests
edependencies
, ma presto anchetraces
).Corrisponde a tutti i dati di telemetria con attributi denominati
http.request.method
eurl.path
.Estrae quindi l'attributo
url.path
in un nuovo attributo denominatotempName
.Il secondo processore di telemetria è un processore span (ha tipo
span
), il che significa che si applica arequests
edependencies
.Corrisponde a qualsiasi intervallo con un attributo denominato
tempPath
.Aggiorna quindi il nome dell'intervallo dall'attributo
tempPath
.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.