O que é o Application Insights?

Concluído

O Application Insights analisa automaticamente o desempenho do aplicativo Web e pode alertar você sobre problemas potenciais.

Esse recurso não exige nenhuma configuração especial além de configurar seu aplicativo para o Application Insights (em ASP.NET, Java ou Node.js e no código da página da Web). Ele fica ativo depois que seu aplicativo gera telemetria suficiente.

Quando eu receberia uma notificação de Detecção Inteligente?

O Application Insights envia uma notificação quando detecta que houve degradação do desempenho do seu aplicativo de uma das seguintes maneiras:

  • Degradação do tempo de resposta: seu aplicativo começou a responder às solicitações mais lentamente do que antes. A alteração pode ter sido repentina, por exemplo, se houve uma regressão em sua implantação mais recente, ou gradual, talvez porque há um vazamento de memória.
  • Degradação da duração da dependência: seu aplicativo faz chamadas para uma API REST, banco de dados ou outra dependência. A dependência está respondendo mais lentamente do que antes.
  • Padrão de desempenho lento: seu aplicativo tem um problema de desempenho que afeta apenas algumas solicitações. Por exemplo, as páginas estão sendo carregadas mais lentamente em um tipo de navegador do que em outros, ou solicitações estão sendo atendidas de modo mais lento de um servidor específico. Os algoritmos do Application Insights analisam os tempos de carregamento da página, os tempos de resposta de solicitação e os tempos de resposta de dependência.

A Detecção Inteligente é um recurso do Application Insights que o avisa sobre possíveis problemas de desempenho e anomalias de falha em seu aplicativo Web. Requer pelo menos oito dias de telemetria em um volume suficiente para estabelecer uma linha de base. Após esse período, qualquer problema significativo gera uma notificação.

Um alerta sempre significa um problema?

Um alerta não significa necessariamente que seu aplicativo tem um problema. É mais uma sugestão sobre algo que você pode querer examinar em mais detalhes.

Como resolver isso?

Cada notificação de alerta inclui informações de diagnóstico. Veja um exemplo de como você pode usar essas informações:

Captura de tela mostrando os tempos de resposta do servidor como parte do diagnóstico de notificação.

  • Para triagem: a notificação mostra quantos usuários ou quantas operações são afetadas. Isso pode ajudá-lo a atribuir uma prioridade ao problema.
  • Para determinar o escopo: o problema está afetando todo o tráfego ou apenas algumas páginas? Ele é restrito a navegadores ou locais específicos?
  • Para diagnóstico: com frequência, as informações de diagnóstico na notificação sugerem a natureza do problema. Por exemplo, se os tempos de resposta ficam mais lentos quando a taxa de solicitação é alta, isso sugere que o servidor ou as dependências estão sobrecarregadas. Se precisar de mais informações, abra a seção Desempenho no Application Insights. Lá, você encontrará dados do criador de perfil. Se forem geradas exceções, você também poderá tentar usar o depurador de instantâneos.

Configurar notificações por email

As notificações de Detecção Inteligente ficam habilitadas por padrão e são enviadas para aqueles que têm acesso de proprietários, colaboradores e leitores ao recurso do Application Insights. Para alterar isso, selecione Configurar na notificação por email ou abra as configurações de Detecção Inteligente no Application Insights.

Captura de tela mostrando as configurações de detecção inteligente. Essas configurações incluem detecção de tempos de carregamento de página lentos, tempos de resposta do servidor lentos e muito mais.

Use o link cancelar assinatura no email de Detecção Inteligente para parar de receber as notificações por email.

Emails sobre anomalias de desempenho de Detecção Inteligente são limitados a um email por dia por recurso do Application Insights. O email será enviado somente se houver pelo menos um novo problema detectado naquele dia.

Como posso melhorar o desempenho?

Respostas lentas e com falha são frustrantes para usuários do site. É importante resolver os problemas rapidamente. As etapas a serem seguidas para aprimorar o desempenho são:

  1. Triagem
  2. Diagnosticar
  3. Aprimorar

Vamos examinar essas etapas em mais detalhes em termos de tempos de carregamento de página.

Triagem

Ao analisar o problema, a primeira coisa a perguntar é: ele é relevante? Se uma página estiver sempre lenta para carregar, mas apenas 1% dos usuários do site a visitarem, o problema será de baixa prioridade. Por outro lado, se apenas 1% dos usuários abrirem a página, mas ela gerar uma exceção a cada vez, a prioridade será alta. Use a declaração de impacto (usuários afetados ou percentual de tráfego) como uma orientação geral, mas lembre-se de impacto não é tudo. Reúna outras evidências e considere os parâmetros do problema. Se o problema for dependente da geografia, configure os testes de disponibilidade que incluem a região.

Diagnosticar carregamentos lentos de página

Ao diagnosticar o problema, faça estas perguntas:

  • Onde está o problema?
  • A resposta do servidor está lenta?
  • A página é longa?
  • O navegador precisa fazer muito trabalho para exibir esta página?

Se você estiver investigando os tempos de resposta do navegador, abra a métrica Navegadores. A exibição segmentada dos tempos de carregamento da página do navegador mostra em que o tempo está sendo gasto.

  • Se o Tempo de Envio da Solicitação é alto, o servidor está respondendo lentamente ou a solicitação é uma publicação com uma grande quantidade de dados. Examine as métricas de desempenho para investigar os tempos de resposta.
  • Configure o acompanhamento de dependências para verificar se o atraso ocorre devido a serviços externos ou ao seu banco de dados.
  • Se Recebendo Resposta for predominante, sua página e os componentes dependentes, JavaScript, CSS, imagens e assim por diante (mas não os dados carregados de maneira assíncrona) serão longos. Configure um teste de disponibilidadee não se esqueça de definir a opção para carregar os componentes dependentes. Ao obter alguns resultados, abra os detalhes de um resultado e amplie-os para ver os tempos de carregamento de arquivos diferentes.
  • Um tempo de processamento do cliente elevado sugere uma execução lenta dos scripts. Se o motivo não for óbvio, considere adicionar código de tempo e enviar os tempos em chamadas trackMetric.

Aprimorar páginas lentas

Aqui estão alguns locais para começar a pensar em como aprimorar as páginas lentas:

  • Carregamento lento devido a arquivos grandes: carregue os scripts e outros componentes de maneira assíncrona. Use o agrupamento de script. Divida a página principal em widgets que carregam os dados separadamente. Não envie HTML antigo simples para tabelas longas; use um script para solicitar os dados como JSON ou outro formato compacto e preencha a tabela no local.
  • Dependências lentas do servidor: considere as localizações geográficas dos componentes. Por exemplo, se você estiver usando o Azure, verifique se o servidor Web e o banco de dados estão na mesma região. As consultas recuperam mais informações do que o necessário? O armazenamento em cache ou o envio em lote ajudaria?
  • Problemas de capacidade: observe as métricas do servidor de tempos de resposta e contagens de solicitações. Se os tempos de resposta apresentarem picos desproporcionais, com picos nas contagens de solicitação, é provável que seus servidores estejam trabalhando demais. Considere escalar vertical ou horizontalmente.

Degradação do tempo de resposta do servidor

Uma notificação de degradação do tempo de resposta informa:

  • O tempo de resposta em comparação ao tempo de resposta normal para essa operação.
  • Quantos usuários são afetados.
  • O tempo médio de resposta e o tempo de resposta do 90º percentil para essa operação, no dia da detecção e sete dias antes.
  • Contagem de solicitações de operação no dia da detecção e sete dias antes.
  • A correlação entre a degradação nessa operação e degradações em dependências relacionadas.
  • Recursos para ajudar a diagnosticar o problema:
    • Os rastreamentos do Profiler ajudam você a ver em que o tempo de operação é gasto (o link estará disponível se os exemplos de rastreamento do Profiler forem coletados para essa operação durante o período de detecção).
    • Relatórios de desempenho no Gerenciador de Métricas, nos quais você pode examinar intervalos de tempo e filtros para essa operação.
    • Pesquise essa chamada para exibir propriedades de chamadas específicas.
    • Relatórios de falha. Se a contagem for maior que 1, isso significa que houve falhas nessa operação que podem ter contribuído para a degradação do desempenho.

Degradação da duração da dependência

Se o seu aplicativo depender muito de serviços externos, será uma boa ideia observar a degradação da dependência.

Aqui está um exemplo de notificação de degradação de dependência:

Captura de tela mostrando uma notificação de degradação de dependência do Application Insights.

Isso informa:

  • A duração em comparação ao tempo de resposta normal para essa operação.
  • Quantos usuários são afetados.
  • A duração média e a duração do 90º percentil para esta dependência no dia da detecção e sete dias antes.
  • O número de chamadas de dependência no dia da detecção e sete dias antes.
  • Recursos para ajudar a diagnosticar o problema:
    • Relatórios de desempenho no Gerenciador de Métricas para essa dependência.
    • Pesquise chamadas dessa dependência para ver as propriedades da chamada.
    • Relatórios de falha. Se há uma ou mais falhas, isso indica que houve falha nas chamadas de dependência durante o período de detecção que podem ter contribuído para a degradação da duração.
    • Abra o Analytics com consultas que calculam a contagem e a duração dessa dependência.

Detecção Inteligente de padrões de desempenho lentos

O Application Insights encontra problemas de desempenho que podem afetar apenas uma parte de seus usuários ou afetar usuários apenas em alguns casos. Por exemplo, você pode ver que carregamentos de página lentos acontecem apenas com um tipo de navegador ou em uma determinada área geográfica.

Anomalias como essas são difíceis de detectar apenas inspecionando os dados, mas são mais comuns do que você imagina. Elas geralmente só surgem quando seus clientes reclamam.

Os algoritmos do Application Insights analisam os tempos de carregamento da página, os tempos de resposta de solicitação no servidor e os tempos de resposta de dependência. Você não precisa definir nenhum limite nem configurar regras. Machine learning e algoritmos de mineração de dados são usados para detectar padrões anormais. Aqui está um exemplo de notificação:

Captura de tela mostrando a detecção inteligente no Application Insights.

O campo Quando mostra a hora em que o problema foi detectado.

O campo O que descreve:

  • O problema que foi detectado.
  • Os eventos que levaram ao comportamento do problema.

A tabela compara o conjunto com desempenho insatisfatório com o comportamento médio de todos os outros eventos.

Selecione os links para abrir Explorador de Métrica ePesquisar para encontrar relatórios relevantes filtrados na hora e nas propriedades do conjunto de desempenho lento e, em seguida, modificar o intervalo de tempo e os filtros para explorar a telemetria.