Risolvere i problemi relativi all'agente di applicazione Azure Insights (in precedenza Status Monitor v2)

Questo articolo fornisce informazioni sulla risoluzione dei problemi che consentono di risolvere i problemi di raccolta dati che potrebbero verificarsi quando è abilitato il monitoraggio di Application Insights.

Problemi noti

DLL in conflitto nella directory bin di un'app

Se una di queste librerie a collegamento dinamico (DLL) è presente nella directory bin , il monitoraggio potrebbe non riuscire:

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

Alcune di queste DLL sono incluse nei modelli di app predefiniti di Visual Studio, anche se l'app non li usa. È possibile usare strumenti di risoluzione dei problemi, ad esempio gli strumenti seguenti, per visualizzare il comportamento sintomatico:

  • 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 il caricamento dell'app (senza dati di telemetria). Analizzare con 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
    

Versioni di PowerShell

Questo prodotto è stato scritto e testato con PowerShell versione 5.1. Questo modulo non è compatibile con PowerShell versione 6 o 7. È consigliabile usare PowerShell 5.1 insieme alle versioni più recenti. Per altre informazioni, vedere Uso di PowerShell 7 side-by-side con PowerShell 5.1.

Conflitto con la configurazione condivisa di IIS

Se si dispone di un cluster di server Web, è possibile usare una configurazione condivisa. Non è possibile inserire HttpModule in questa configurazione condivisa. Eseguire il comando Abilita in ogni server Web per installare la DLL nella Global Assembly Cache (GAC) di ogni server.

Dopo aver eseguito il comando Abilita, completare la procedura seguente:

  1. Passare alla directory di configurazione condivisa e trovare il file applicationHost.config .

  2. Aggiungere questo codice XML alla <sezione modules> della configurazione:

    <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>
    

Applicazioni annidate IIS

Non instrumentiamo applicazioni annidate in Internet Information Services (IIS) nella versione 1.0.

La configurazione avanzata dell'SDK non è disponibile

La configurazione dell'SDK non è esposta all'utente finale nella versione 1.0.

Risolvere i problemi di PowerShell

Determinare quali moduli sono disponibili

È possibile usare il Get-Module -ListAvailable comando per determinare quali moduli sono installati.

Importare un modulo nella sessione corrente

Se un modulo non è stato caricato in una sessione di PowerShell, è possibile caricarlo manualmente eseguendo il Import-Module <path to psd1> comando .

Risolvere i problemi del modulo Dell'agente di Application Insights

Elencare i comandi disponibili nel modulo dell'agente di Application Insights

Eseguire il Get-Command -Module Az.ApplicationMonitor comando per ottenere i comandi disponibili:

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

Determinare la versione corrente del modulo dell'agente di Application Insights

Eseguire il Get-ApplicationInsightsMonitoringStatus -PowerShellModule comando per visualizzare le informazioni seguenti sul modulo:

  • Versione del modulo PowerShell
  • Versione di Application Insights SDK
  • Percorsi di file del modulo PowerShell

Esaminare il riferimento Get-ApplicationInsightsMonitoringStatus per una descrizione dettagliata dell'uso di questo cmdlet.

Risolvere i problemi relativi ai processi in esecuzione

È possibile esaminare i processi nel computer instrumentato per determinare se vengono caricate tutte le DLL e se sono impostate le variabili di ambiente. Se il monitoraggio funziona, devono essere caricate almeno 12 DLL.

  • Usare il Get-ApplicationInsightsMonitoringStatus -InspectProcess comando per controllare le DLL.
  • Usare il (Get-Process -id <process-identifier>).StartInfo.EnvironmentVariables comando per controllare le variabili di ambiente. Nel processo di lavoro o nel processo .NET Core vengono impostate le variabili di ambiente seguenti:
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>

Esaminare il riferimento Get-ApplicationInsightsMonitoringStatus per una descrizione dettagliata dell'uso di questo cmdlet.

Raccogliere i log ETW usando PerfView

Configurazione

  1. Scaricare PerfView.exe da GitHub.

  2. Eseguire PerfView.exe.

  3. Sulla barra dei menu selezionare Raccogli>raccogli.

  4. Espandere Opzioni avanzate.

  5. Deselezionare queste caselle di controllo:

    • Zip
    • Unione
    • Insieme di simboli .NET
  6. Impostare questi provider aggiuntivi:

    *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

Raccogliere i log

  1. In una console dei comandi con privilegi di amministratore eseguire il iisreset /stop comando per disattivare IIS e tutte le app Web.

  2. In PerfView selezionare Avvia raccolta.

  3. In una console dei comandi con privilegi di amministratore eseguire il iisreset /start comando per avviare IIS.

  4. Provare a passare all'app.

  5. Dopo il caricamento dell'app, tornare a PerfView e selezionare Interrompi raccolta.

Passaggi successivi

  • Esaminare il riferimento all'API per informazioni sui parametri che potrebbero non essere stati visualizzati.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.