Compartilhar via


Solucionar problemas do Azure Application Insights em um projeto Web Java

Este artigo fornece soluções de solução de problemas comuns em um formato de perguntas e respostas 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 em Application Insights Java 3.x.

Dúvidas ou problemas com o Azure Application 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 compilação ou soma de verificação

Se o elemento de versão> de <dependência estiver usando um padrão que contenha caracteres curinga (por exemplo, <version>[2.0,)</version> no Maven ou version:'2.+' no 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 são atualizados periodicamente, mas você também pode atualizá-los 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 do projeto) ou configurou uma como uma variável de ambiente.

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

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

  • No painel inicial do Microsoft Azure, veja o mapa de status de serviço. Se houver algumas indicações de alerta, aguarde até que elas retornem para OK e, em seguida, feche e reabra a folha do aplicativo Application Insights.

  • Ative o registro em log adicionando um <elemento SDKLogger> no nó raiz no arquivo ApplicationInsights.xml (na pasta de recursos do seu projeto). Em seguida, verifique se há entradas precedidas por AI: INFO/WARN/ERROR logs suspeitos.

  • Certifique-se de que o arquivo ApplicationInsights.xml correto tenha sido carregado com êxito pelo SDK do Java. Verifique as mensagens de saída do console para obter uma instrução "O arquivo de configuração foi encontrado com êxito".

  • Se o arquivo de configuração não for encontrado, verifique as mensagens de saída para ver onde o arquivo de configuração está sendo pesquisado. Certifique-se de que o ApplicationInsights.xml esteja 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 problemas conhecidos com o SDK.

  • Certifique-se de usar a mesma versão dos appenders principais, Web, agentes e de log do Application Insights para evitar problemas de conflito de versão.

Observação

Este artigo foi atualizado recentemente 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. Confira as alterações de terminologia do Azure Monitor para obter detalhes.

Eu costumava ver dados, mas parou

  • Você atingiu sua cota mensal de pontos de dados? Abra Configurações>, Cota 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 o SDK? Certifique-se de que apenas os jars do SDK exclusivo estejam presentes no diretório do projeto. Não deve haver duas versões diferentes do SDK presentes.

  • Você está analisando o recurso AI correto? Certifique-se de corresponder a iKey do seu aplicativo ao recurso em que você espera a telemetria. Eles devem ser iguais.

Não vejo todos os dados que eu esperava

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

  • Você está com a amostragem do SDK ativada? Se sim, os dados seriam 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 registro de INFORMAÇÕES, verá uma mensagem de registro "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?

  • Certifique-se de que o arquivo jar do agente Java e o arquivo AI-Agent.xml sejam colocados na mesma pasta.

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

Sem dados de uso

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

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

Como alternativa, se o cliente for um aplicativo em um telefone ou outro dispositivo, você poderá enviar telemetria por meio dele.

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

Desabilitar telemetria

Como desabilitar a coleta da telemetria?

Siga uma destas soluções:

  • Desabilitar a coleta no código:

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

    <DisableTelemetry>true</DisableTelemetry>
    

    Se você usar o método XML, será necessário reiniciar o aplicativo ao alterar o valor.

Alterar o destino

Como alterar o recurso do Azure ao qual 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 no projeto Web, selecione Configurar o Azure>Application Insights e altere a chave.

  • Se você configurou a chave de instrumentação como uma variável de ambiente, certifique-se de atualizar o valor da variável de ambiente com a nova iKey.

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

Depurar dados do SDK

Como 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 gerar uma 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>

Iniciador do Spring Boot

Para habilitar o log do SDK com aplicativos de inicialização de primavera usando o iniciador de inicialização de primavera 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 erro padrão:

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

Agente de Java

Para ativar a criação de 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 comandos Java

Desde a versão 2.4.0

Para habilitar o log usando opções de linha de comando em vez de alterar os 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 erro padrão:

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

A tela inicial do Azure

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

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

Como faço para encontrar dados sobre meu aplicativo no painel inicial do Azure (tela inicial)?

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

Servidores de intranet

Posso monitorar um servidor em minha intranet?

Sim, desde que o servidor possa enviar telemetria para o portal do Application Insights pela 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

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

Consulte Privacidade e retenção de dados.

Registro em log de depuração

O Application Insights usa org.apache.http. Esse namespace é realocado dentro dos jars 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 existem diferentes versões do mesmo org.apache.http em uma base de código.

Observação

Se você habilitar DEBUGo log de nível para todos os namespaces no aplicativo, ele será respeitado por todos os módulos em 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 log de nível 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.