Solucionar problemas do Agente do Azure Application Insights (antigo Status Monitor v2)

Este artigo fornece informações de solução de problemas para ajudá-lo a resolver problemas de coleta de dados que você pode enfrentar quando o monitoramento do Microsoft Azure Application Insights está habilitado.

Problemas conhecidos

DLLs conflitantes na pasta bin

Se qualquer uma dessas bibliotecas de vínculo dinâmico (DLLs) estiver presente na pasta bin do aplicativo, o monitoramento poderá falhar:

  • Microsoft.ApplicationInsights.dll
  • Microsoft.AspNet.TelemetryCorrelation.dll
  • System.Diagnostics.DiagnosticSource.dll

Algumas dessas DLLs estão incluídas nos modelos de aplicativo padrão do Visual Studio, mesmo que o aplicativo não as use. Você pode usar ferramentas de solução de problemas, como as seguintes ferramentas, para ver o comportamento sintomático:

  • PerfView:

    ThreadID="7,500" 
    ProcessorNumber="0" 
    msg="Found 'System.Diagnostics.DiagnosticSource, Version=4.0.2.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' assembly, skipping attaching redfield binaries" 
    ExtVer="2.8.13.5972" 
    SubscriptionId="" 
    AppName="" 
    FormattedMessage="Found 'System.Diagnostics.DiagnosticSource, Version=4.0.2.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' assembly, skipping attaching redfield binaries" 
    
  • IISReset e carga do aplicativo (sem telemetria). Investigue usando o Sysinternals (Handle.exe e ListDLLs.exe):

    .\handle64.exe -p w3wp | findstr /I "InstrumentationEngine AI. ApplicationInsights"
    E54: File  (R-D)   C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.ApplicationInsights.RedfieldIISModule.dll
    
    .\Listdlls64.exe w3wp | findstr /I "InstrumentationEngine AI ApplicationInsights"
    0x0000000009be0000  0x127000  C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Instrumentation64\MicrosoftInstrumentationEngine_x64.dll
    0x0000000009b90000  0x4f000   C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Instrumentation64\Microsoft.ApplicationInsights.ExtensionsHost_x64.dll
    0x0000000004d20000  0xb2000   C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Instrumentation64\Microsoft.ApplicationInsights.Extensions.Base_x64.dll
    

Versões do PowerShell

Este produto foi escrito e testado usando o PowerShell versão 5.1. Este módulo não é compatível com o PowerShell versão 6 ou 7. Recomendamos que você use o PowerShell 5.1 junto com as versões mais recentes. Para obter mais informações, consulte Usando o PowerShell 7 lado a lado com o PowerShell 5.1.

Conflito na configuração compartilhada do IIS

Se você tiver um cluster de servidores Web, talvez esteja usando uma configuração compartilhada. O módulo HTTP não pode ser injetado nessa configuração compartilhada. Execute o comando Enable em cada servidor Web para instalar a DLL no GAC (cache de assembly global) de cada servidor.

Depois de executar o comando Enable, siga estas etapas:

  1. Vá para o diretório de configuração compartilhado e localize o arquivo ApplicationHost.config .

  2. Adicione o seguinte código XML à <seção de módulos> de sua configuração:

    <modules>
        <!-- Registered global managed http module handler. The 'Microsoft.AppInsights.IIS.
        ManagedHttpModuleHelper.dll' must be installed in the GAC before this config is applied. -->
        <add name="ManagedHttpModuleHelper" type="Microsoft.AppInsights.IIS.ManagedHttpModuleHelper.
        ManagedHttpModuleHelper, Microsoft.AppInsights.IIS.ManagedHttpModuleHelper, Version=1.0.0.0, 
        Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
    </modules>
    

Aplicativos aninhados do IIS

Na versão 1.0 do Application Insights Agent, não instrumentamos aplicativos aninhados no IIS (Serviços de Informações da Internet).

Modo de pipeline clássico do IIS

Não instrumentamos aplicativos hospedados em pools de aplicativos se eles estiverem configurados para usar o modo de pipeline clássico.

A configuração avançada do SDK não está disponível

A configuração do SDK não é exposta ao usuário final na versão 1.0.

Solucionar problemas do PowerShell

Determinar quais módulos estão disponíveis

Para determinar quais módulos estão instalados, execute o Get-Module -ListAvailable cmdlet.

Importar um módulo na sessão atual

Se um módulo não for carregado em uma sessão do PowerShell, você poderá carregá-lo manualmente executando o Import-Module <path-to-psd1> cmdlet.

Solucionar problemas do módulo do Agente do Application Insights

Listar os cmdlets disponíveis no módulo Agente do Application Insights

Para ver os cmdlets disponíveis no módulo Application Insights Agent, execute o Get-Command -Module Az.ApplicationMonitor cmdlet:

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Disable-ApplicationInsightsMonitoring              0.4.0      Az.ApplicationMonitor
Cmdlet          Disable-InstrumentationEngine                      0.4.0      Az.ApplicationMonitor
Cmdlet          Enable-ApplicationInsightsMonitoring               0.4.0      Az.ApplicationMonitor
Cmdlet          Enable-InstrumentationEngine                       0.4.0      Az.ApplicationMonitor
Cmdlet          Get-ApplicationInsightsMonitoringConfig            0.4.0      Az.ApplicationMonitor
Cmdlet          Get-ApplicationInsightsMonitoringStatus            0.4.0      Az.ApplicationMonitor
Cmdlet          Set-ApplicationInsightsMonitoringConfig            0.4.0      Az.ApplicationMonitor
Cmdlet          Start-ApplicationInsightsMonitoringTrace           0.4.0      Az.ApplicationMonitor

Determinar a versão atual do módulo do agente do Application Insights

Execute o Get-ApplicationInsightsMonitoringStatus -PowerShellModule cmdlet para exibir as seguintes informações sobre o módulo:

  • Versão do módulo do PowerShell
  • Versão do SDK do Application Insights
  • Caminhos de arquivo do módulo do PowerShell

Examine a referência Get-ApplicationInsightsMonitoringStatus para obter uma descrição detalhada de como usar esse cmdlet.

Solucionar problemas de processos em execução

Você pode inspecionar os processos no computador instrumentado para determinar se todas as DLLs estão carregadas e se as variáveis de ambiente estão definidas. Se o monitoramento estiver funcionando, pelo menos 12 DLLs deverão estar carregadas.

  • Execute o Get-ApplicationInsightsMonitoringStatus -InspectProcess cmdlet para verificar as DLLs.
  • Execute o (Get-Process -id <process-identifier>).StartInfo.EnvironmentVariables cmdlet para verificar as variáveis de ambiente. As seguintes variáveis de ambiente são definidas no processo de trabalho ou no processo do .NET Core:
COR_ENABLE_PROFILING=1
COR_PROFILER={324F817A-7420-4E6D-B3C1-143FBED6D855}
COR_PROFILER_PATH_32=<path-to-MicrosoftInstrumentationEngine_x86.dll>
COR_PROFILER_PATH_64=<path-to-MicrosoftInstrumentationEngine_x64.dll>
MicrosoftInstrumentationEngine_Host={CA487940-57D2-10BF-11B2-A3AD5A13CBC0}
MicrosoftInstrumentationEngine_HostPath_32=<path-to-Microsoft.ApplicationInsights.ExtensionsHost_x86.dll>
MicrosoftInstrumentationEngine_HostPath_64=<path-to-Microsoft.ApplicationInsights.ExtensionsHost_x64.dll>
MicrosoftInstrumentationEngine_ConfigPath32_Private=<path-to-Microsoft.InstrumentationEngine.Extensions.config>
MicrosoftInstrumentationEngine_ConfigPath64_Private=<path-to-Microsoft.InstrumentationEngine.Extensions.config>
MicrosoftAppInsights_ManagedHttpModulePath=<path-to-Microsoft.ApplicationInsights.RedfieldIISModule.dll>
MicrosoftAppInsights_ManagedHttpModuleType=Microsoft.ApplicationInsights.RedfieldIISModule.RedfieldIISModule
ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=Microsoft.ApplicationInsights.StartupBootstrapper
DOTNET_STARTUP_HOOKS=<path-to-Microsoft.ApplicationInsights.StartupHook.dll>

Examine a referência Get-ApplicationInsightsMonitoringStatus para obter uma descrição detalhada de como usar esse cmdlet.

Coletar logs do ETW usando PerfView

Instalação

  1. Baixe PerfView.exe do GitHub.

  2. Execute PerfView.exe.

  3. Na barra de menus, selecione Coletar>Coletar.

  4. Expanda Opções Avançadas.

  5. Desmarque as seguintes caixas de seleção:

    • Zip
    • Mesclar
    • Coleção de símbolos .NET
  6. Defina os seguintes provedores adicionais:

    *Microsoft-ApplicationInsights-AspNetCore,*Microsoft-ApplicationInsights-AspNetCore-AiHostingStartup,*Microsoft-ApplicationInsights-AspNetCore-StartupBootstrapper,*Microsoft-ApplicationInsights-AspNetCore-StartupHook,*Microsoft-ApplicationInsights-Core,*Microsoft-ApplicationInsights-Data,*Microsoft-ApplicationInsights-Extensibility-AppMapCorrelation-Dependency,*Microsoft-ApplicationInsights-Extensibility-AppMapCorrelation-Web,*Microsoft-ApplicationInsights-Extensibility-DependencyCollector,*Microsoft-ApplicationInsights-Extensibility-EventCounterCollector,*Microsoft-ApplicationInsights-Extensibility-EventSourceListener,*Microsoft-ApplicationInsights-Extensibility-HostingStartup,*Microsoft-ApplicationInsights-Extensibility-PerformanceCollector,*Microsoft-ApplicationInsights-Extensibility-PerformanceCollector-QuickPulse,*Microsoft-ApplicationInsights-Extensibility-Web,*Microsoft-ApplicationInsights-Extensibility-WindowsServer,*Microsoft-ApplicationInsights-FrameworkLightup,*Microsoft-ApplicationInsights-IIS-ManagedHttpModuleHelper,*Microsoft-ApplicationInsights-Java-IPA,*Microsoft-ApplicationInsights-LoggerProvider,*Microsoft-ApplicationInsights-Nodejs-IPA,*Microsoft-ApplicationInsights-RedfieldIISModule,*Microsoft-ApplicationInsights-SnapshotCollectorLightup,*Microsoft-ApplicationInsights-WindowsServer-Core,*Microsoft-ApplicationInsights-WindowsServer-TelemetryChannel,*Redfield-Microsoft-ApplicationInsights-AspNetCore,*Redfield-Microsoft-ApplicationInsights-Core,*Redfield-Microsoft-ApplicationInsights-Data,*Redfield-Microsoft-ApplicationInsights-Extensibility-AppMapCorrelation-Dependency,*Redfield-Microsoft-ApplicationInsights-Extensibility-AppMapCorrelation-Web,*Redfield-Microsoft-ApplicationInsights-Extensibility-DependencyCollector,*Redfield-Microsoft-ApplicationInsights-Extensibility-EventCounterCollector,*Redfield-Microsoft-ApplicationInsights-Extensibility-EventSourceListener,*Redfield-Microsoft-ApplicationInsights-Extensibility-PerformanceCollector,*Redfield-Microsoft-ApplicationInsights-Extensibility-PerformanceCollector-QuickPulse,*Redfield-Microsoft-ApplicationInsights-Extensibility-Web,*Redfield-Microsoft-ApplicationInsights-Extensibility-WindowsServer,*Redfield-Microsoft-ApplicationInsights-LoggerProvider,*Redfield-Microsoft-ApplicationInsights-WindowsServer-TelemetryChannel

Coletar logs

  1. Em um prompt de comando administrativo, execute o comando para desativar o iisreset /stop IIS e todos os aplicativos Web.

  2. Em PerfView, selecione Iniciar Coleta.

  3. Em um prompt de comando administrativo, execute o comando para iniciar o iisreset /start IIS.

  4. Tente navegar até seu aplicativo.

  5. Depois que seu aplicativo for carregado, retorne ao PerfView e selecione Parar Coleta.

Próximas etapas

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.