Solucionar problemas Aplicativo Azure Insights em um projeto Web Java

Este artigo fornece soluções de solução de problemas comuns em um formato Q&A para o Application Insights Java 2.x.

Cuidado

Este documento se aplica ao Application Insights Java 2.x, que não é mais recomendado.

A documentação da versão mais recente pode ser encontrada no Application Insights Java 3.x.

Perguntas ou problemas com Aplicativo Azure Insights em Java? Aqui estão algumas dicas.

Erros de compilação

No Eclipse ou no Intellij Idea, quando adiciono o SDK do Application Insights via Maven ou Gradle, recebo erros de validação de build ou check-um

Se o elemento de versão> de dependência< estiver usando um padrão que contém caracteres curinga (por exemplo, <version>[2.0,)</version> em Maven ou version:'2.+' em Gradle), tente especificar uma versão específica, como 2.6.4.

Sem dados

Adicionei o Application Insights com êxito e executei meu aplicativo, mas nunca vi dados no portal

  • Aguarde cerca de um minuto e selecione Atualizar. Os gráficos se atualizam periodicamente, mas você também pode atualizar manualmente. O intervalo de atualização depende do intervalo de tempo do gráfico.

  • Verifique se você definiu uma chave de instrumentação no arquivo ApplicationInsights.xml (na pasta de recursos em seu projeto) ou configurou uma como uma variável de ambiente.

  • Verifique se não há nó <DisableTelemetry>true</DisableTelemetry> no arquivo XML.

  • Se necessário, abra as portas TCP 80 e 443 no firewall para o tráfego de saída para dc.services.visualstudio.com. Confira a lista completa de exceções de firewall.

  • No quadro inicial do Microsoft Azure, examine o mapa de status de serviço. Se houver algumas indicações de alerta, aguarde até que elas retornem ao OK e fechem e reabram sua folha de aplicativo do Application Insights.

  • Ative o log adicionando um <elemento SDKLogger> no nó raiz no arquivo ApplicationInsights.xml (na pasta de recursos em seu projeto). Em seguida, marcar para entradas prefiguradas com AI: INFO/WARN/ERROR para quaisquer logs suspeitos.

  • Verifique se o arquivo deApplicationInsights.xml correto foi carregado com êxito pelo SDK do Java. Verifique as mensagens de saída do console para obter uma instrução "Arquivo de configuração foi encontrado com êxito".

  • Se o arquivo de configuração não for encontrado, marcar as mensagens de saída para ver onde o arquivo de configuração está sendo pesquisado. Verifique se o ApplicationInsights.xml está localizado em um desses locais de pesquisa. Como regra geral, você pode colocar o arquivo de configuração perto dos JARs do SDK do Application Insights. Por exemplo, no Tomcat, a pasta seria WEB-INF/classes. Durante o desenvolvimento, você pode colocar ApplicationInsights.xml na pasta de recursos do seu projeto Web.

  • Verifique a página de problemas do GitHub para obter problemas conhecidos com o SDK.

  • Use a mesma versão do núcleo do Application Insights, web, agente e aplicadores de log para evitar problemas de conflito de versão.

Observação

Este artigo foi recentemente atualizado para usar o termo logs do Azure Monitor em vez de Log Analytics. Os dados de log ainda são armazenados em um workspace do Log Analytics e ainda são coletados e analisados pelo mesmo serviço do Log Analytics. Estamos atualizando a terminologia para refletir melhor a função dos logs no Azure Monitor. Consulte alterações de terminologia do Azure Monitor para obter detalhes.

Eu costumava ver dados, mas ele parou

  • Você atingiu sua cota mensal de pontos de dados? Abra Cota de Configurações>e Preços para descobrir. Nesse caso, você pode atualizar seu plano ou pagar por mais capacidade. Para obter mais informações, consulte o esquema de preços.

  • Você atualizou recentemente seu SDK? Verifique se apenas jars SDK exclusivos estão presentes no diretório do projeto. Não deve haver duas versões diferentes do SDK presente.

  • Você está olhando para o recurso de IA correto? Certifique-se de corresponder a iKey do seu aplicativo com o recurso em que você está esperando telemetria. Eles devem ser os mesmos.

Não vejo todos os dados que estou esperando

  • Abra a página Uso e custo estimado e marcar para ver se a amostragem está em operação. (100% de transmissão significa que a amostragem não está em operação.) O serviço Application Insights pode ser definido para aceitar apenas uma fração da telemetria que chega do seu aplicativo. Essa configuração ajuda você a ficar dentro da cota mensal de telemetria.

  • Você tem a Amostragem de SDK ativada? Se sim, os dados serão amostrados na taxa especificada para todos os tipos aplicáveis.

  • Você está executando uma versão mais antiga do SDK do Java? A partir da versão 2.0.1, introduzimos um mecanismo de tolerância a falhas para lidar com falhas intermitentes de rede e back-end, bem como persistência de dados em unidades locais.

  • Verifique se a telemetria excessiva causou limitação. Se você ativar o log do INFO, verá uma mensagem de log "O aplicativo está limitado". Nosso limite atual é de cerca de 32.000 itens de telemetria por segundo.

O Agente Java não pode capturar dados de dependência

  • Você configurou o agente Java?

  • Verifique se o arquivo de jar do agente Java e o arquivo AI-Agent.xml são colocados na mesma pasta.

  • Verifique se a dependência que você está tentando coletar automaticamente tem suporte para coleta automática. Atualmente, só oferecemos suporte a MySQL, Microsoft SQL Server, Oracle DB e Cache do Azure para Redis coleção de dependências.

Sem dados de uso

Vejo dados sobre solicitações e tempos de resposta, mas sem exibição de página, navegador ou dados do usuário

Você configurou com êxito seu aplicativo para enviar telemetria do servidor. Agora, sua próxima etapa é configurar suas páginas da Web para enviar telemetria do navegador da Web.

Como alternativa, se seu cliente for um aplicativo em um telefone ou outro dispositivo, você poderá enviar telemetria de lá.

Use a mesma chave de instrumentação para configurar a telemetria do cliente e do servidor. Os dados serão exibidos no mesmo recurso do Application Insights e você poderá correlacionar eventos do cliente e do servidor.

Desabilitar a telemetria

Como posso desabilitar a coleção de telemetria?

Siga uma destas soluções:

  • Desabilitar a coleção no código:

    TelemetryConfiguration config = TelemetryConfiguration.getActive();
    config.setTrackingIsDisabled(true);
    
  • Atualize ApplicationInsights.xml (na pasta de recursos em seu projeto). Adicione o seguinte elemento XML no nó raiz:

    <DisableTelemetry>true</DisableTelemetry>
    

    Se você usar o método XML, precisará reiniciar o aplicativo quando alterar o valor.

Alterar o destino

Como posso alterar para qual recurso do Azure meu projeto envia dados?

  • Obtenha a chave de instrumentação do novo recurso.

  • Se você adicionou o Application Insights ao seu projeto usando o Kit de Ferramentas do Azure para Eclipse, clique com o botão direito do mouse em seu projeto Web, selecione Azure>Configure Application Insights e altere a chave.

  • Se você configurou a chave de instrumentação como uma variável de ambiente, atualize o valor da variável de ambiente com o novo iKey.

  • Caso contrário, atualize a chave em ApplicationInsights.xml na pasta de recursos do seu projeto.

Depurar dados do SDK

Como posso descobrir o que o SDK está fazendo?

Para obter mais informações sobre o que está acontecendo na API, adicione o <elemento SDKLogger> no nó raiz do arquivo de configuração ApplicationInsights.xml .

ApplicationInsights.xml

<No elemento SDKLogger>, você também pode instruir o agente a fazer a saída para um arquivo:

<SDKLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
    <Level>TRACE</Level>
    <UniquePrefix>AI</UniquePrefix>
    <BaseFolderPath>C:/agent/AISDK</BaseFolderPath>
</SDKLogger>

Inicialização spring boot

Para habilitar o registro em log do SDK com aplicativos spring boot usando a inicialização spring boot do Application Insights, adicione as seguintes linhas ao arquivo application.properties :

azure.application-insights.logger.type=file
azure.application-insights.logger.base-folder-path=C:/agent/AISDK
azure.application-insights.logger.level=trace

Como alternativa, você pode imprimir no fluxo de erros padrão:

azure.application-insights.logger.type=console
azure.application-insights.logger.level=trace

Agente Java

Para habilitar o log do agente JVM, atualize o arquivo AI-Agent.xml:

<AgentLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
    <Level>TRACE</Level>
    <UniquePrefix>AI</UniquePrefix>
    <BaseFolderPath>C:/agent/AIAGENT</BaseFolderPath>
</AgentLogger>

Propriedades da linha de comando Java

Desde a versão 2.4.0

Para habilitar o registro em log usando opções de linha de comando em vez de alterar arquivos de configuração, execute o seguinte comando:

java -Dapplicationinsights.logger.file.level=trace \
    -Dapplicationinsights.logger.file.uniquePrefix=AI \
    -Dapplicationinsights.logger.baseFolderPath="C:/my/log/dir" \
    -jar MyApp.jar

Ou execute o seguinte comando para imprimir no fluxo de erros padrão:

java -Dapplicationinsights.logger.console.level=trace -jar MyApp.jar

A tela inicial do Azure

Estou olhando para o portal do Azure. O mapa me diz algo sobre meu aplicativo?

Não, mostra a integridade dos servidores do Azure em todo o mundo.

Como fazer encontrar dados sobre meu aplicativo no quadro inicial do Azure (tela inicial)?

Supondo que você configure seu aplicativo para Application Insights, selecione Procurar>Insights de Aplicativo e selecione o recurso de aplicativo que você criou para seu aplicativo. Para chegar mais rápido no futuro, fixe seu aplicativo no quadro inicial.

Servidores Intranet

Posso monitorar um servidor na minha intranet?

Sim, desde que seu servidor possa enviar telemetria para o portal do Application Insights por meio da Internet pública.

Talvez seja necessário abrir algumas portas de saída no firewall do servidor para permitir que o SDK envie dados para o portal.

Retenção de dados

Quanto tempo os dados são mantidos no portal? É seguro?

Consulte Retenção e privacidade de dados.

Depurar log

O Application Insights usa org.apache.http. Esse namespace é realocado nos jarros principais do Application Insights no namespace com.microsoft.applicationinsights.core.dependencies.http. Essa realocação permite que o Application Insights lide com cenários em que diferentes versões do mesmo org.apache.http existem em uma base de código.

Observação

Se você habilitar DEBUGo registro em log em nível para todos os namespaces no aplicativo, ele será honrado por todos os módulos de execução (incluindo org.apache.http renomeado como com.microsoft.applicationinsights.core.dependencies.http). O Application Insights não poderá aplicar filtragem para essas chamadas porque a chamada de log está sendo feita pela biblioteca Apache. DEBUGO registro em nível de log produz uma quantidade considerável de dados de log e não é recomendado para instâncias de produção ao vivo.

Próximas etapas

Configurei o Application Insights para meu aplicativo de servidor Java. O que mais posso fazer?

Obter ajuda

Aviso de isenção de responsabilidade para informações de terceiros

Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.