Application Insights Agent (旧称 Status Monitor v2) のトラブルシューティング

監視を有効にしたとき、データ収集を妨げる問題が発生する可能性があります。 この記事では、既知の問題をすべて一覧にまとめ、トラブルシューティングの例を示します。

既知の問題

アプリの 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.exe と 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
    

PowerShell のバージョン

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

IIS 共有構成との競合

Web サーバーのクラスターがある場合、共有構成を使っている可能性があります。 HttpModule をこの共有構成に挿入することはできません。 各 Web サーバー上で Enable コマンドを実行して、各サーバーの GAC に DLL をインストールします。

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

  1. 共有構成ディレクトリに移動して、applicationHost.config ファイルを見つけます。
  2. 次の行を構成の modules セクションに追加します。
    <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 構成を使用できません。

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

トラブルシューティング

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

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

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

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

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

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

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

使用できるコマンドを取得するには、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 モジュールのファイル パス

このコマンドレットの使用方法の詳細については、API リファレンスに関する記事を参照してください。

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

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

  • Get-ApplicationInsightsMonitoringStatus -InspectProcess コマンドを使用して DLL を確認します。
  • (Get-Process -id {PID}).StartInfo.EnvironmentVariables コマンドを使用して環境変数を確認します。 ワーカー プロセスまたは dotnet 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

このコマンドレットの使用方法の詳細については、API リファレンスに関する記事を参照してください。

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

セットアップ

  1. PerfView.exe と PerfView64.exe を GitHub からダウンロードします
  2. PerfView64.exe を起動します。
  3. [詳細オプション] を展開します。
  4. 次のチェック ボックスをオフにします。
    • [Zip]
    • [マージ]
    • .NET Symbol Collection (.NET シンボル収集)
  5. 次の [追加プロバイダー] を設定します。

ログの収集

  1. 管理者特権のコマンド コンソールで、iisreset /stop コマンドを実行して、IIS とすべての Web アプリを無効にします。
  2. PerfView で、[Start Collection]\(収集の開始\) を選択します。
  3. 管理者特権のコマンド コンソールで、iisreset /start コマンドを実行して IIS を起動します。
  4. アプリの参照を試みます。
  5. アプリが読み込まれたら、PerfView に戻り、[Stop Collection]\(収集の停止\) を選択します。

次の手順

  • その他のパラメーターについては、API リファレンスに関する記事を参照してください。