Solucionar problemas Aplicativo Azure Agente insights (antigo Monitor de Status v2)

Este artigo fornece informações de solução de problemas para ajudar a resolve problemas de coleta de dados que você pode enfrentar quando o monitoramento do Application Insights estiver habilitado.

Problemas conhecidos

DLLs conflitantes no diretório bin de um aplicativo

Se alguma dessas DLLs (bibliotecas de link dinâmico) estiver presente no diretório bin, o monitoramento poderá falhar:

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

Algumas dessas DLLs são incluídas nos modelos de aplicativo padrão do Visual Studio, mesmo que seu 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 de aplicativo (sem telemetria). Investigar com 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 gravado e testado usando o PowerShell versão 5.1. Este módulo não é compatível com as versões 6 ou 7 do PowerShell. Recomendamos usar o PowerShell 5.1 junto com versões mais recentes. Para obter mais informações, confira Usando o PowerShell 7 lado a lado com o PowerShell 5.1.

Conflito com a configuração compartilhada do IIS

Se você tiver um cluster de servidores Web, poderá estar usando uma configuração compartilhada. O HttpModule não pode ser injetado nessa configuração compartilhada. Execute o comando Habilitar em cada servidor Web para instalar a DLL no GAC (cache de assembly global) de cada servidor.

Depois de executar o comando Habilitar, conclua estas etapas:

  1. Acesse o diretório de configuração compartilhada e localize o arquivo applicationHost.config .

  2. Adicione este código XML à <seção 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

Não instrumentamos aplicativos aninhados no IIS (Internet Information Services) na versão 1.0.

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

Você pode usar o Get-Module -ListAvailable comando para determinar quais módulos estão instalados.

Importar um módulo para a sessão atual

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

Solucionar problemas do módulo do Application Insights Agent

Listar os comandos disponíveis no módulo do Application Insights Agent

Execute o Get-Command -Module Az.ApplicationMonitor comando para obter os comandos disponíveis:

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 Application Insights Agent

Execute o Get-ApplicationInsightsMonitoringStatus -PowerShellModule comando 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 em execução de processos

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

  • Use o Get-ApplicationInsightsMonitoringStatus -InspectProcess comando para marcar as DLLs.
  • Use o (Get-Process -id <process-identifier>).StartInfo.EnvironmentVariables comando para marcar 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 de ETW usando o PerfView

Configurar

  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 estas caixas de marcar:

    • Zip
    • Merge
    • Coleção de símbolos do .NET
  6. Defina estes 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 console de comando com privilégios de administrador, execute o comando para desativar o iisreset /stop IIS e todos os aplicativos Web.

  2. Em PerfView, selecione Iniciar Coleção.

  3. Em um console de comando com privilégios de administrador, execute o comando para iniciar o iisreset /start IIS.

  4. Tente navegar até seu aplicativo.

  5. Depois que o aplicativo for carregado, retorne ao PerfView e selecione Parar Coleção.

Próximas etapas

  • Examine a referência da API para saber mais sobre os parâmetros que você pode ter perdido.

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.