Actualización del SDK de Java de Application Insights 2.x
Normalmente, no hay cambios en el código al actualizar a 3.x. Las dependencias del SDK 3.x son versiones de API no relacionadas con operaciones de las dependencias del SDK 2.x. Sin embargo, cuando se usan con el agente de Java 3.x, el agente de Java 3.x proporciona la implementación para estas. Como resultado, la instrumentación personalizada se correlaciona con todas las nuevas instrucciones automáticas proporcionadas por el agente de Java 3.x.
Paso 1: actualización de las dependencias
Dependencia 2.x | Acción | Comentarios |
---|---|---|
applicationinsights-core |
Actualice a la versión 3.4.3 o posterior |
|
applicationinsights-web |
Actualice la versión a 3.4.3 o posterior y quite el filtro web de Application Insights del archivo web.xml . |
|
applicationinsights-web-auto |
Reemplazar por 3.4.3 o posterior de applicationinsights-web |
|
applicationinsights-logging-log4j1_2 |
Quite la dependencia y el appender de Application Insights de su configuración de Log4j. | Ya no es necesario porque Log4j 1.2 está instrumentado automáticamente en el agente Java 3.x. |
applicationinsights-logging-log4j2 |
Quite la dependencia y el appender de Application Insights de su configuración de Log4j. | Ya no es necesario porque Log4j 2 está instrumentado automáticamente en el agente Java 3.x. |
applicationinsights-logging-logback |
Quite la dependencia y el appender de Application Insights de su configuración de Logback. | Ya no es necesario porque Logback está instrumentado automáticamente en el agente Java 3.x. |
applicationinsights-spring-boot-starter |
Reemplazar por 3.4.3 o posterior de applicationinsights-web |
El nombre del rol en la nube ya no tiene spring.application.name como valor predeterminado. Para obtener información sobre cómo configurar el nombre del rol en la nube, consulte los documentos de configuración de 3.x. |
Paso 2: agregar el agente de Java 3.x
Agregue el agente de Java 3.x a los argumentos de línea de comandos de la Máquina virtual Java (JVM), por ejemplo:
-javaagent:path/to/applicationinsights-agent-.jar
Si está utilizando el agente Java de Application Insights 2.x, solo tiene que reemplazar su -javaagent:...
actual por el ejemplo anterior.
Nota:
Si utilizabas el spring-boot-starter y si lo prefieres, existe una alternativa al uso del agente Java Consulte 3.x Spring Boot.
Paso 3: configuración de la cadena de conexión de Application Insights
Consulte la configuración de la cadena de conexión.
Otras notas
En el resto de este documento, se describen las limitaciones y los cambios que puede encontrar al actualizar de 2.x a 3.x, y algunas soluciones alternativas que pueden resultar útiles.
TelemetryInitializers
Los TelemetryInitializers del SDK 2.x no se ejecutan cuando se use el agente 3.x.
Muchos de los casos de uso que anteriormente requerían escribir TelemetryInitializer
se pueden resolver en Application Insights Java 3.x mediante la configuración de dimensiones personalizadas.
O mediante atributos heredados.
TelemetryProcessors
Los TelemetryProcessors del SDK 2.x no se ejecutan cuando se use el agente 3.x.
Muchos de los casos de uso que anteriormente requerían escribir TelemetryProcessor
se pueden resolver en Application Insights Java 3.x mediante la configuración de invalidaciones de muestreo.
Varias aplicaciones en una sola máquina virtual Java
Este caso de uso se admite en Java 3.x de Application Insights mediante invalidaciones de nombre de rol en la nube (versión preliminar) o invalidaciones de cadena de conexión (versión preliminar).
Nombres de operación
En el SDK de Application Insights Java 2.x, en algunos casos, los nombres de las operaciones contenían la ruta de acceso completa, por ejemplo:
Los nombres de las operaciones de Application Insights Java 3.x han cambiado para proporcionar una mejor vista agregada en la experiencia del usuario con el portal de Application Insights, por ejemplo:
Sin embargo, para algunas aplicaciones, es posible que aún prefiera la vista agregada en la experiencia de usuario proporcionada por los nombres de operación anteriores. En este caso, puede usar la característica procesadores de telemetría (versión preliminar) en 3.x para replicar el comportamiento anterior.
En el siguiente fragmento de código, se configuran tres procesadores de telemetría que se combinan para replicar el comportamiento anterior. Los procesadores de telemetría realizan las siguientes acciones (en orden):
El primer procesador de telemetría es un procesador de atributos (tiene el tipo
attribute
), lo que significa que se aplica a toda la telemetría que tiene atributos (actualmenterequests
ydependencies
, pero pronto tambiéntraces
).Coincide con cualquier telemetría que tenga atributos denominados
http.request.method
yurl.path
.A continuación, extrae el atributo
url.path
en un nuevo atributo denominadotempName
.El segundo procesador de telemetría es un procesador de intervalos (tiene el tipo
span
), lo que significa que se aplica arequests
ydependencies
.Coincide con cualquier intervalo que tenga un atributo denominado
tempPath
.Después, actualiza el nombre del intervalo del atributo
tempPath
.El último procesador de telemetría es un procesador de atributos, del mismo tipo que el primer procesador de telemetría.
Coincide con cualquier telemetría que tenga un atributo denominado
tempPath
.A continuación, elimina el atributo denominado
tempPath
y el atributo aparece como una dimensión 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" }
]
}
]
}
}
Ejemplo de proyecto
Este proyecto del SDK de Java 2.x se migra a un nuevo proyecto mediante el agente de Java 3.x.