Solucionar problemas do Application Insights Profiler para .NET
Este artigo apresenta etapas de solução de problemas e informações para permitir que você use o Application Insights Profiler para .NET.
Você está usando o ponto de extremidade .NET Profiler apropriado?
Atualmente, as únicas regiões que exigem modificações de ponto de extremidade são o Azure Government e o Microsoft Azure operados pela 21Vianet.
Definição da aplicação | Nuvem do governo dos EUA | China Cloud |
---|---|---|
ApplicationInsightsProfilerEndpoint | https://profiler.monitor.azure.us |
https://profiler.monitor.azure.cn |
ApplicationInsightsEndpoint | https://dc.applicationinsights.us |
https://dc.applicationinsights.azure.cn |
Seu aplicativo está sendo executado na versão correta?
O Profiler é suportado no .NET Framework posterior à 4.6.2.
Se o seu aplicativo Web for um aplicativo ASP.NET Core, ele deverá estar sendo executado no tempo de execução ASP.NET Core suportado mais recente.
Você está usando o plano de serviço do Azure correto?
Atualmente, o Profiler para .NET não é suportado em planos de serviço de aplicativos gratuitos ou compartilhados. Atualize para um dos planos básicos para que o Profiler comece a funcionar.
Nota
O plano de consumo do Azure Functions não é suportado. Consulte Criar perfil do aplicativo Azure Functions ao vivo com o Application Insights.
Você está procurando por dados do .NET Profiler dentro do período de tempo certo?
Se os dados que está a tentar visualizar tiverem mais de duas semanas, tente limitar o filtro de tempo e tente novamente. Os vestígios são eliminados após sete dias.
Você está ciente da taxa de amostragem e das despesas gerais do .NET Profiler?
O .NET Profiler é executado aleatoriamente dois minutos por hora em cada máquina virtual que hospeda aplicativos com o Profiler habilitado.
Nota
Quando o Profiler está ativamente executando e coletando rastreamentos, ele normalmente adiciona entre 5% a 15% da sobrecarga de CPU e memória ao servidor.
Não há custo adicional para armazenar dados capturados pelo Profiler. Os dados são automaticamente eliminados após 15 dias.
Você pode acessar o gateway?
Verifique se um firewall ou proxies não estão bloqueando seu acesso a esta página da Web.
Você está vendo tempos limite ou precisa verificar se o .NET Profiler está em execução?
Os dados de criação de perfil são carregados somente quando podem ser anexados a uma solicitação que aconteceu enquanto o Profiler estava em execução. O .NET Profiler coleta dados por dois minutos a cada hora. Você também pode acionar o Profiler iniciando uma sessão de criação de perfil.
O Profiler grava mensagens de rastreamento e eventos personalizados no recurso do Application Insights. Você pode usar esses eventos para ver como o Profiler está sendo executado.
Pesquise mensagens de rastreamento e eventos personalizados enviados pelo .NET Profiler para seu recurso do Application Insights.
No recurso do Application Insights, selecione Pesquisar no menu superior.
Use a seguinte cadeia de caracteres de pesquisa para localizar os dados relevantes:
stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
Os resultados da pesquisa anterior incluem dois exemplos de pesquisas de dois recursos de IA:
Se o aplicativo não estiver recebendo solicitações enquanto o Profiler estiver em execução, a mensagem explicará que o carregamento foi cancelado devido a nenhuma atividade.
O Profiler iniciou e enviou eventos personalizados quando detetou solicitações que aconteceram enquanto o Profiler estava em execução. Se o
ServiceProfilerSample
evento personalizado for exibido, isso significa que um perfil foi capturado e está disponível no painel Desempenho do Application Insights.
Se nenhum registro for exibido, o Profiler não está em execução ou demorou muito para responder. Verifique se o Profiler está habilitado em seu serviço do Azure.
O .NET Profiler está ativado, mas nenhum vestígio é capturado
Mesmo quando o Profiler está ativado, ele pode não capturar ou carregar rastreamentos, especialmente nestas situações:
Sem solicitações recebidas para seu aplicativo:
Você pode invocar manualmente seu aplicativo ou criar um teste de disponibilidade ou um teste de carga.Nenhuma telemetria de entrada reconhecida pelo Application Insights:
- Se houver tráfego chegando ao seu aplicativo: valide se há solicitações de entrada exibidas no Application Insights Live Metrics.
- Se os
Incoming Requests
gráficos estiverem vazios (sem dados ou mostrando zero): solucione problemas do Application Insights. - Se você estiver hospedando seu aplicativo .NET no Serviço de Aplicativo do Azure: tente as etapas de solução de problemas .NET do Serviço de Aplicativo.
A configuração do criador de perfil para Amostragem está desativada:
Se ainda não houver rastreamentos de profiler disponíveis, verifique a configuração Profiler Sampler.- Abra a folha Desempenho do Application Insights>.
- Clique em Profiler.
- Clique no botão Triggers .
- Nas Configurações de gatilho, verifique se a alternância Amostragem está ativada.
Ainda não enviou vestígios?
Crie uma solicitação de suporte ou peça suporte da comunidade do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.
Dupla contagem em roscas paralelas
Quando dois ou mais threads paralelos são associados a uma solicitação, a métrica de tempo total no visualizador de pilha pode ser maior do que a duração da solicitação. Nesse caso, o tempo total de thread é maior do que o tempo real decorrido.
Por exemplo, um thread pode estar aguardando o outro para ser concluído. O espectador tenta detetar essa situação e omite a espera desinteressante. Ao fazê-lo, peca por exibir demasiada informação em vez de omitir o que pode ser informação crítica.
Quando você vir threads paralelos em seus rastreamentos, determine quais threads estão aguardando para que você possa identificar o caminho quente para a solicitação. Normalmente, o thread que entra rapidamente em um estado de espera está aguardando nos outros threads. Concentre-se nos outros threads e ignore o tempo nos threads de espera.
Solucionar problemas do .NET Profiler em seu serviço específico do Azure
As seções a seguir orientam você pelas etapas de solução de problemas para usar o Profiler no Serviço de Aplicativo do Azure ou nos Serviços de Nuvem do Azure.
Serviço de Aplicações do Azure
Para que o .NET Profiler funcione corretamente, certifique-se de:
Seu aplicativo Web tem o Application Insights habilitado com as configurações corretas.
O WebJob ApplicationInsightsProfiler3 está em execução. Para verificar o webjob:
Vá para Kudu. No portal do Azure:
- Na instância do Serviço de Aplicativo, selecione Ferramentas Avançadas no painel esquerdo.
- Selecione Ir.
No menu superior, selecione Painel Ferramentas>WebJobs. O painel WebJobs é aberto.
Se o ApplicationInsightsProfiler3 não aparecer, reinicie o aplicativo do Serviço de Aplicativo.
Para exibir os detalhes do WebJob, incluindo o log, selecione o link ApplicationInsightsProfiler3 . O painel Detalhes Contínuos do WebJob é aberto.
Se o .NET Profiler ainda não estiver funcionando para você, baixe o log e envie um tíquete de suporte do Azure.
Verifique a página de status da extensão de site dos Serviços de Diagnóstico
Se você habilitou o .NET Profiler por meio do painel Application Insights no portal, ele será gerenciado pela extensão de site dos Serviços de Diagnóstico. Você pode verificar a página de status desta extensão indo para https://{site-name}.scm.azurewebsites.net/DiagnosticServices
.
Nota
O domínio do link da página de status varia dependendo da nuvem. Este domínio é o mesmo que o site de gerenciamento Kudu para o Serviço de Aplicativo.
A página de status mostra o estado de instalação dos agentes .NET Profiler e Snapshot Debugger . Se houve um erro inesperado, ele aparece junto com as etapas sobre como corrigi-lo.
Você pode usar o site de gerenciamento Kudu para o Serviço de Aplicativo para obter a URL base desta página de status:
- Abra seu aplicativo do Serviço de Aplicativo no portal do Azure.
- Selecione Ferramentas avançadas.
- Selecione Ir.
- No site de gerenciamento do Kudu:
- Acrescente
/DiagnosticServices
ao URL. - Selecione Enter.
- Acrescente
Termina como https://<kudu-url>/DiagnosticServices
.
Uma página de status é semelhante ao exemplo a seguir.
Nota
A instalação sem código do Application Insights Profiler para .NET segue a política de suporte do .NET Core. Para obter mais informações sobre tempos de execução suportados, consulte Política de suporte do .NET Core.
Instalação manual
Quando você configura o .NET Profiler, são feitas atualizações nas configurações do aplicativo Web. Se necessário, você pode aplicar as atualizações manualmente.
Demasiadas sessões de criação de perfis ativas
No Serviço de Aplicativo do Azure, há um limite de apenas uma sessão de criação de perfil de cada vez. Esse limite é imposto no nível da VM em todos os aplicativos e slots de implantação em execução em um Plano do Serviço de Aplicativo. Esse limite se aplica igualmente a sessões de criação de perfil iniciadas via Diagnosticar e resolver problemas, Kudu e Application Insights Profiler para .NET.
Se o .NET Profiler tentar iniciar uma sessão quando outra já estiver em execução, um erro será registrado no log do aplicativo e também no log contínuo do WebJob para ApplicationInsightsProfiler3
.
Poderá ver uma das seguintes mensagens nos registos:
Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E
O código 0xE111005E
de erro indica que uma sessão de criação de perfil não pôde ser iniciada porque outra sessão já está em execução.
Para evitar o erro, mova alguns aplicativos Web para um Plano de Serviço de Aplicativo diferente ou desative o Profiler em alguns dos aplicativos. Se você usar slots de implantação, certifique-se de interromper todos os slots não utilizados.
Erro de implantação: Diretório não vazio 'D:\home\site\wwwroot\App_Data\jobs'
Se você estiver reimplantando seu aplicativo Web em um recurso de Aplicativos Web com o .NET Profiler habilitado, poderá ver a seguinte mensagem:
"Diretório não vazio 'D:\home\site\wwwroot\App_Data\jobs'"
Este erro ocorre se executar a Implementação da Web a partir de scripts ou de Pipelines do Azure. Resolva-o adicionando os seguintes parâmetros de implantação à tarefa de Implantação da Web:
-skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'
Esses parâmetros excluem a pasta usada pelo Application Insights Profiler para .NET e desbloqueiam o processo de reimplantação. Eles não afetam a instância do Profiler que está em execução no momento.
O Application Insights Profiler para .NET está em execução?
O Profiler é executado como um WebJob contínuo no aplicativo Web. Você pode abrir o recurso de aplicativo Web no portal do Azure. No painel WebJobs, verifique o status de ApplicationInsightsProfiler. Se não estiver em execução, abra Logs para obter mais informações.
VMs e Serviços de Nuvem do Azure
Para ver se o .NET Profiler está configurado corretamente pelo Diagnóstico do Azure:
Verifique se o conteúdo da configuração do Diagnóstico do Azure implantada é o esperado.
Certifique-se de que o Diagnóstico do Azure passa o iKey adequado na linha de comando do Profiler.
Verifique o arquivo de log do Profiler para ver se o .NET Profiler foi executado, mas retornou um erro.
Para verificar as configurações que foram usadas para configurar o Diagnóstico do Azure:
Entre na máquina virtual (VM).
Abra o arquivo de log neste local. A versão do plug-in pode ser mais recente na sua máquina.
Para VMs:
c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
Para os Serviços de Nuvem do Azure:
c:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
No arquivo, procure a cadeia de caracteres
WadCfg
para localizar as configurações que foram passadas para a VM para configurar o Diagnóstico do Azure.Verifique se o iKey usado pelo coletor do .NET Profiler está correto.
Verifique a linha de comando que inicia o Profiler. Os argumentos da linha de comando estão no seguinte arquivo (a unidade pode ser
c:
oud:
e o diretório pode estar oculto):Para VMs:
C:\ProgramData\ApplicationInsightsProfiler\config.json
Para os Serviços de Nuvem do Azure:
D:\ProgramData\ApplicationInsightsProfiler\config.json
Verifique se o iKey na linha de comando do Profiler está correto.
Usando o caminho encontrado no arquivo de config.json anterior, verifique o arquivo de log do Profiler, chamado
BootstrapN.log
. Apresenta:- As informações de depuração que indicam as configurações que o Profiler está usando.
- Mensagens de status e erro do Profiler.
Você pode encontrar o arquivo:
Para VMs:
C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
Para os Serviços de Nuvem do Azure:
C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
Se o .NET Profiler estiver em execução enquanto seu aplicativo está recebendo solicitações, a seguinte mensagem será exibida: "Atividade detetada do iKey".
Quando o rastreamento está sendo carregado, a seguinte mensagem aparece: "Iniciar o rastreamento de carregamento".
Editar proxy de rede ou regras de firewall
Se seu aplicativo se conectar à Internet por meio de um proxy ou firewall, talvez seja necessário atualizar as regras para se comunicar com o .NET Profiler.
Os IPs usados pelo Application Insights Profiler para .NET estão incluídos na marca de serviço do Azure Monitor. Para obter mais informações, consulte Documentação de tags de serviço.
Suporte
Se você ainda precisar de ajuda, envie um tíquete de suporte no portal do Azure. Inclua a ID de correlação da mensagem de erro.