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-.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:
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:
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):
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 (atualmenterequests
,dependencies
e, em breve, tambémtraces
).Ele corresponde a qualquer telemetria que tenha os atributos nomeados
http.request.method
eurl.path
.Em seguida, ele extrai o atributo
url.path
em um novo atributo chamadotempName
.O segundo processador de telemetria é um processador de span (tem tipo
span
), o que significa que ele se aplica arequests
edependencies
.Ele corresponde a qualquer intervalo que tenha um atributo chamado
tempPath
.Em seguida, ele atualiza o nome do intervalo a partir do atributo
tempPath
.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" }
]
}
]
}
}
Exemplo de projeto
Este Projeto do SDK do Java 2.x é migrado para um novo projeto usando o agente Java 3.x.