Compartilhar via


Detecção inteligente – anomalias de desempenho

Observação

É possível migrar seus recursos do Application Insights para a detecção inteligente com base em alertas (versão prévia). A migração cria regras de alerta para os diferentes módulos de detecção inteligente. Depois de criadas, você pode gerenciar e configurar essas regras, assim como qualquer outra regra de alerta do Azure Monitor. Você também pode configurar grupos de ação para essas regras, habilitando vários métodos para executar ações ou disparar notificações sobre novas detecções.

Para obter mais informações sobre o processo de migração, confira Migração de alertas de detecção inteligente.

O Application Insights analisa automaticamente o desempenho do seu aplicativo Web e pode alertá-lo sobre problemas potenciais.

Esse recurso não requer nenhuma configuração especial, além de configurar seu aplicativo para Application Insights para o idioma com suporte. Ela fica ativa quando o aplicativo gera telemetria suficiente.

Quando eu receberia uma notificação de detecção inteligente?

O Application Insights detectou que o desempenho do seu aplicativo apresentou uma degradação de uma das seguintes maneiras:

  • Degradação do tempo de resposta – seu aplicativo começou a responder solicitações mais lentamente. A mudança pode ter sido rápida, por exemplo, porque havia uma regressão em sua implantação mais recente. Ou pode ter sido gradual, talvez causada por uma perda de memória.
  • Degradação de 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 parece ter um problema de desempenho que está afetando somente 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. Atualmente, nossos algoritmos examinam os tempos de carregamento da página, os tempos de resposta de solicitação e os tempos de resposta de dependência.

Para estabelecer uma linha de base de desempenho normal, a detecção inteligente requer pelo menos oito dias de volume de telemetria suficiente. Portanto, após o aplicativo ser executado por esse período, anomalias significativas resultarão em uma notificação.

Meu aplicativo definitivamente tem um problema?

Não, uma notificação não significa que seu aplicativo definitivamente tem um problema. É simplesmente uma sugestão sobre algo que talvez você queira examinar mais detalhadamente.

Como corrigi-la?

As notificações incluem informações de diagnóstico. Veja um exemplo:

Veja um exemplo de detecção de Degradação do tempo de resposta do servidor

  1. Triagem. A notificação mostra quantos usuários ou quantas operações foram afetadas. Esta informação pode ajudá-lo a atribuir uma prioridade ao problema.

  2. Escopo. O problema está afetando todo o tráfego ou apenas algumas páginas? Ele é restrito a navegadores ou locais específicos? Essas informações podem ser obtidas na notificação.

  3. Diagnosticar. Com frequência, as informações de diagnóstico na notificação sugerem a natureza do problema. Por exemplo, se o tempo de resposta for mais lento quando a taxa de solicitação for alta, isso poderá indicar que o servidor ou as dependências estão além da própria capacidade.

    Caso contrário, abra o painel Desempenho no Application Insights, onde você encontra os dados do .NET Profiler. Se exceções forem lançadas, você também pode tentar o Snapshot Debugger.

Configurar notificações por email

As notificações de detecção inteligente são habilitadas por padrão. Elas são enviadas para usuários que têm acesso de Leitor de monitoramento e de Colaborador de monitoramento à assinatura na qual o recurso Application Insights reside. Para alterar isso, clique em Configurar na notificação por email ou abra as Configurações de detecção inteligente no Application Insights.

Configurações de Detecção Inteligente

  • Você pode desabilitar a notificação padrão e substituí-la por uma lista de emails especificada.

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 que foi detectado no dia em questão. Você não receberá nenhuma mensagem repetida.

Perguntas frequentes

  • Portanto, a equipe da Microsoft examina os meus dados?

    • Não. O serviço é totalmente automático. Somente você recebe as notificações. Os dados são privados.
  • Todos os dados coletados pelo Application Insights são analisados?

    • Atualmente, analisamos o tempo de resposta de solicitação, o tempo de resposta da dependência e o tempo de carregamento da página. A análise de outras métricas está em nossa lista de pendências para o futuro.
  • Com que tipos de aplicativo essa detecção funciona?

    • Esses degradações são detectadas em qualquer aplicativo que gera a telemetria apropriada. Se você tiver instalado o Application Insights em seu aplicativo Web, as solicitações e as dependências serão monitoradas automaticamente. Mas em serviços de back-end ou outros aplicativos, se você tiver inserido chamadas para TrackRequest() ou TrackDependency, a detecção inteligente funcionará da mesma maneira.
  • Posso criar minhas próprias regras de detecção de anomalias ou personalizar regras existentes?

  • Com que frequência a análise é executada?

    • Executamos diariamente a análise da telemetria do dia anterior (dia inteiro no fuso-horário UTC).
  • Isso substitui os alertas de métrica?

    • Não. Nosso compromisso não é detectar todos os comportamentos que você pode considerar anormais.
  • Se eu não fizer nada em resposta a uma notificação, receberei um lembrete?

    • Não, você receberá uma mensagem sobre cada problema apenas uma vez. Se o problema persistir, ele será atualizado no painel de feed da detecção inteligente.
  • Perdi o email. Onde posso encontrar as notificações no portal?

    • Na visão geral do Application Insights do aplicativo, clique no bloco Detecção inteligente. Nele, você encontrará todas as notificações de até 90 dias anteriores.

Como posso melhorar o desempenho?

As respostas lentas e com falha são uma das maiores frustrações para os usuários do site, como você já deve saber por experiência própria. Dessa forma, é importante resolver os problemas.

Triagem

Primeiro, isto é importante? Se uma página sempre for carregada lentamente, mas apenas 1% dos usuários do site tiverem de vê-la, talvez haja coisas mais importantes a considerar. No entanto, se apenas 1% dos usuários abrir essa página, mas ela lançar exceções todas as vezes, talvez valha a pena investigar.

Use a declaração de impacto, como usuários afetados ou % de tráfego, como um guia geral. Lembre-se de que talvez essa informação não permita conhecer o quadro geral. Obtenha outras evidências para confirmar.

Considere os parâmetros do problema. Se ele for dependente da geografia, configure os testes de disponibilidade incluindo essa região; talvez a área esteja enfrentando problemas de rede.

Diagnosticar carregamentos lentos de página

Onde está o problema? O servidor está lento para responder, a página é grande demais ou o navegador precisa de muito trabalho para exibi-la?

Abra o painel Métrica de navegadores. A exibição segmentada do tempo de carregamento da página do navegador mostra onde o tempo está sendo gasto.

  • Se o Tempo de Envio da Solicitação for alto, o servidor responderá lentamente ou a solicitação será uma publicação com uma grande quantidade de dados. Examine as métricas de desempenho para investigar os tempos de resposta.
  • Configure o rastreamento de dependências para verificar se a lentidão ocorre devido a serviços externos ou ao seu banco de dados.
  • Se Recebendo Resposta for predominante, sua página e seus 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 alto sugere que os scripts estão sendo executados lentamente. Se o motivo não for óbvio, considere a adição de um código de tempo e envie os tempos em chamadas trackMetric.

Aprimorar páginas lentas

Há muitos conselhos na Web sobre como melhorar os tempos de resposta de seu servidor e de carregamento da página, portanto não os repetiremos aqui. Veja algumas dicas as quais você provavelmente já conhece, apenas para ajudá-lo a pensar:

  • 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 o antigo HTML simples para tabelas longas: use um script para solicitar os dados como JSON ou outro formato compacto e preencha a tabela. Há estruturas excelentes para ajudar com esse tipo de tarefa. (É claro que elas também incluem scripts grandes.)
  • 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 alongados.

Degradação do tempo de resposta do servidor

A notificação de degradação do tempo de resposta lhe 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 dessa 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.
  • Links para ajudá-lo a diagnosticar o problema.
    • Os rastreamentos do .NET Profiler podem ajudar você a visualizar onde o tempo de operação é gasto. O link estará disponível se houver exemplos de rastreamento do .NET Profiler para essa operação.
    • Relatórios de desempenho no Gerenciador de Métricas, nos quais você pode dividir e os filtros/intervalos de tempo para a operação.
    • Pesquise essa chamada para exibir propriedades de chamadas específicas.
    • Relatórios de falha – quando a contagem é > 1, isso significa que ocorreram falhas nessa operação que podem ter contribuído para a degradação do desempenho.

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

Os aplicativos modernos adotam cada vez mais uma abordagem de design de microsserviços que, em muitos casos, leva a uma grande dependência de serviços externos. Por exemplo, se o aplicativo depende de alguma plataforma de dados ou de um provedor de serviços críticos, como serviços de IA do Azure.

Exemplo de notificação de degradação de dependência:

Veja um exemplo de detecção de Degradação da duração da dependência

Observe o que ele diz:

  • 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
  • Número de chamadas de dependência no dia da detecção e sete dias antes
  • Links para ajudá-lo a diagnosticar o problema
    • Relatórios de desempenho no Explorador de Métricas para essa dependência
    • Pesquise por chamadas dessa dependência para exibir propriedades das chamadas
    • Relatórios de falha – se a contagem for > 1, isso significa que houve chamadas de dependência com falha 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 afetam apenas alguns dos seus usuários ou só afetam os usuários em alguns casos. Por exemplo, se uma página carregar mais lentamente em um tipo de navegador específico em comparação com outros ou se um determinado servidor manipular as solicitações mais lentamente do que outros servidores. Ele também pode descobrir problemas associados com combinações de propriedades, como carregamentos de página lentos em uma área geográfica para clientes que usam um sistema operacional específico.

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. A essa altura, é tarde demais: os usuários afetados já estão migrando para seus concorrentes!

Atualmente, nossos algoritmos Examinam os tempos de carregamento de página, 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.

No alerta de email, clique no link para abrir o relatório de diagnóstico no Azure

  • Quando mostra a hora em que o problema foi detectado.
  • O que descreve o problema detectado e as características do conjunto de eventos que encontramos que exibiram o comportamento do problema.
  • A tabela compara o conjunto com desempenho insatisfatório com o comportamento médio de todos os outros eventos.

Clique nos links para abrir o Metrics Explorer a fim de ver relatórios, filtrados com base na hora e propriedades do conjunto de desempenho lento.

Modifique o intervalo de tempo e os filtros para explorar a telemetria.

Próximas etapas

Essas ferramentas de diagnóstico ajudam você a inspecionar a telemetria do seu aplicativo:

A detecção inteligente é automática. Mas talvez você queira configurar alguns outros alertas?