Azure アプリlication Insights エージェント (以前の Status Monitor v2) のトラブルシューティング

この記事では、Microsoft Azure アプリlication 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 サーバーのクラスターがある場合、共有構成を使っている可能性があります。 HTTP モジュールをこの共有構成に挿入することはできません。 各 Web サーバーで Enable コマンドを実行して、DLL を各サーバーのグローバル アセンブリ キャッシュ (GAC) にインストールします。

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 の入れ子になったアプリケーション

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

IIS クラシック パイプライン モード

クラシック パイプライン モードを使用するように構成されている場合、アプリケーション プールでホストされているアプリケーションはインストルメント化されません。

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

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

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

使用できるモジュールを特定する

インストールされているモジュールを確認するには、 Get-Module -ListAvailable コマンドレットを実行します。

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

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

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

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 Agent モジュールの現在のバージョンを確認する

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

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

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

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

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

  • Get-ApplicationInsightsMonitoringStatus -InspectProcess コマンドレットを実行して DLL を確認します。
  • (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]
    • 結合
    • [.NET Symbol Collection]
  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 で、[Start Collection]\(収集の開始\) を選択します。

  3. 管理コマンド プロンプトで、 iisreset /start コマンドを実行して IIS を起動します。

  4. アプリの参照を試みます。

  5. アプリが読み込まれたら、PerfView に戻り、 Stop Collection を選択します。

次のステップ

  • API リファレンスを確認して、見逃した可能性があるパラメーターについて学習します。

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

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