Azure アプリケーション Insights エージェント (旧称 Status Monitor v2) のトラブルシューティング

この記事では、Application Insights の監視が有効になっているときに発生する可能性があるデータ収集の問題を解決するためのトラブルシューティング情報を提供します。

既知の問題

アプリの bin ディレクトリ内の DLL の競合

これらのダイナミック リンク ライブラリ (DLL) のいずれかが bin ディレクトリに存在する場合、監視が失敗する可能性があります。

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

これらの DLL の一部は、アプリで使用されていない場合でも、Visual Studio の既定のアプリ テンプレートに含まれています。 次のツールなどのトラブルシューティング ツールを使用して、症状の動作を確認できます。

  • 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 とアプリの読み込み (テレメトリなし)。 Sysinternals (Handle.exeListDLLs.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
    

PowerShell のバージョン

この製品は、PowerShell バージョン 5.1 を使用して記述およびテストされました。 このモジュールは、PowerShell バージョン 6 または 7 と互換性がありません。 新しいバージョンと共に PowerShell 5.1 を使用することをお勧めします。 詳細については、「 PowerShell 5.1 での PowerShell 7 のサイド バイ サイドの使用」を参照してください。

IIS 共有構成との競合

Web サーバーのクラスターがある場合は、 共有構成を使用している可能性があります。 HttpModule をこの共有構成に挿入することはできません。 各 Web サーバーで Enable コマンドを実行して、各サーバーのグローバル アセンブリ キャッシュ (GAC) に DLL をインストールします。

Enable コマンドを実行した後、次の手順を実行します。

  1. 共有構成ディレクトリに移動し、 applicationHost.config ファイルを見つけます。

  2. 構成の modules> セクションに<次の XML コードを追加します。

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

IIS の入れ子になったアプリケーション

バージョン 1.0 では、インターネット インフォメーション サービス (IIS) で入れ子になったアプリケーションをインストルメント化しません。

高度な SDK 構成は使用できません

SDK 構成は、バージョン 1.0 ではエンド ユーザーに公開されません。

PowerShell のトラブルシューティング

使用可能なモジュールを決定する

コマンドを Get-Module -ListAvailable 使用して、インストールされているモジュールを判別できます。

現在のセッションにモジュールをインポートする

モジュールが PowerShell セッションに読み込まれていない場合は、コマンドを実行 Import-Module <path to psd1> して手動で読み込むことができます。

Application Insights エージェント モジュールのトラブルシューティング

Application Insights エージェント モジュールで使用できるコマンドを一覧表示する

コマンドを Get-Command -Module Az.ApplicationMonitor 実行して、使用可能なコマンドを取得します。

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

Application Insights エージェント モジュールの現在のバージョンを確認する

コマンドを Get-ApplicationInsightsMonitoringStatus -PowerShellModule 実行して、モジュールに関する次の情報を表示します。

  • PowerShell モジュールのバージョン
  • Application Insights SDK のバージョン
  • PowerShell モジュールのファイル パス

このコマンドレットの使用方法の詳細については、 Get-ApplicationInsightsMonitoringStatus リファレンスを参照 してください。

実行中のプロセスのトラブルシューティング

インストルメント化されたコンピューター上のプロセスを検査して、すべての DLL が読み込まれ、環境変数が設定されているかどうかを判断できます。 監視が機能している場合は、少なくとも 12 個の DLL を読み込む必要があります。

  • DLL をGet-ApplicationInsightsMonitoringStatus -InspectProcessチェックするには、 コマンドを使用します。
  • コマンドを(Get-Process -id <process-identifier>).StartInfo.EnvironmentVariables使用して環境変数をチェックします。 ワーカー プロセスまたは .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>

このコマンドレットの使用方法の詳細については、 Get-ApplicationInsightsMonitoringStatus リファレンスを参照 してください。

PerfView を使用して ETW ログを収集する

セットアップ

  1. GitHub から PerfView.exe をダウンロードします。

  2. PerfView.exeを実行します。

  3. メニュー バーの [Collect Collect]\(収集\)> を選択します

  4. [ 詳細オプション] を展開します

  5. 次のチェック ボックスをオフにします。

    • Zip
    • Merge
    • .NET シンボル コレクション
  6. の追加プロバイダーを設定します

    *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

ログを収集する

  1. 管理者特権を持つコマンド コンソールで、 コマンドを iisreset /stop 実行して、IIS とすべての Web アプリをオフにします。

  2. PerfView で、[ コレクションの開始] を選択します。

  3. 管理者特権を持つコマンド コンソールで、 コマンドを iisreset /start 実行して IIS を起動します。

  4. アプリを参照してみてください。

  5. アプリが読み込まれたら、PerfView に戻り、[ コレクションの停止] を選択します。

次の手順

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。