Application Insights Snapshot Debugger の有効化やスナップショットの表示に関する問題のトラブルシューティングTroubleshoot problems enabling Application Insights Snapshot Debugger or viewing snapshots

アプリケーションに対して Application Insights Snapshot Debugger を有効にしたにもかかわらず、例外のスナップショットが表示されない場合は、次の手順を使用してトラブルシューティングを行うことができます。If you enabled Application Insights Snapshot Debugger for your application, but are not seeing snapshots for exceptions, you can use these instructions to troubleshoot. スナップショットが生成されない理由としては、さまざまなことが考えられます。There can be many different reasons why snapshots are not generated. スナップショットの正常性チェックを実行すると、いくつかの一般的な原因を特定できます。You can run the snapshot health check to identify some of the possible common causes.

スナップショットの正常性チェックを使用するUse the snapshot health check

いくつかの一般的な問題により、[デバッグ スナップショットを開く] が表示されません。Several common problems result in the Open Debug Snapshot not showing up. 古い Snapshot Collector を使用します (たとえば、1 日のアップロード上限に達した場合)。そうしないと、スナップショットのアップロードに時間がかかることがあります。Using an outdated Snapshot Collector, for example; reaching the daily upload limit; or perhaps the snapshot is just taking a long time to upload. 一般的な問題のトラブルシューティングには、Snapshot Health Check を使用します。Use the Snapshot Health Check to troubleshoot common problems.

エンドツーエンドのトレース ビューの例外ウィンドウには、Snapshot Health Check に接続できるリンクが表示されます。There's a link in the exception pane of the end-to-end trace view that takes you to the Snapshot Health Check.

スナップショットの正常性チェックを入力する

インタラクティブでチャットのようなインターフェイスでは、一般的な問題が検索され、問題の解決が案内されます。The interactive, chat-like interface looks for common problems and guides you to fix them.

正常性チェック

それでも問題が解決しない場合は、以下の手動トラブルシューティング手順を参照してください。If that doesn't solve the problem, then refer to the following manual troubleshooting steps.

インストルメンテーション キーの確認Verify the instrumentation key

公開したアプリケーションで、正しいインストルメンテーション キーを使用していることを確認します。Make sure you're using the correct instrumentation key in your published application. 通常、インストルメンテーション キーは、ApplicationInsights.config ファイルから読み取られます。Usually, the instrumentation key is read from the ApplicationInsights.config file. 値が、ポータルに表示される Application Insights リソースのインストルメンテーション キーと同じであることを確認します。Verify the value is the same as the instrumentation key for the Application Insights resource that you see in the portal.

.NET Core のプレビュー バージョンPreview Versions of .NET Core

アプリケーションにプレビュー バージョンの .NET Core が使用され、ポータルの Application Insights ウィンドウでスナップショット デバッガーが有効な場合、スナップショット デバッガーが起動しない場合があります。If the application uses a preview version of .NET Core, and Snapshot Debugger was enabled through the Application Insights pane in the portal, then Snapshot Debugger may not start. まず「その他の環境用にスナップショット デバッガーを有効にする」の手順を実行して Microsoft.ApplicationInsights.SnapshotCollector NuGet パッケージをアプリケーションに含め、"さらに" Application Insights ウィンドウで有効にしますFollow the instructions at Enable Snapshot Debugger for other environments first to include the Microsoft.ApplicationInsights.SnapshotCollector NuGet package with the application in addition to enabling through the Application Insights pane.

最新バージョンの NuGet にアップグレードするUpgrade to the latest version of the NuGet package

ポータルの [Application Insights] ウィンドウを通じて Snapshot Debugger を有効にした場合、アプリケーションでは既に最新の NuGet パッケージが実行されています。If Snapshot Debugger was enabled through the Application Insights pane in the portal, then your application should already be running the latest NuGet package. Microsoft.ApplicationInsights.SnapshotCollector NuGet パッケージを含めることで Snapshot Debugger を有効にした場合は、Visual Studio の NuGet パッケージ マネージャーを使用して、Microsoft.ApplicationInsights.SnapshotCollector の最新バージョンが使用されているかどうかを確認してください。If Snapshot Debugger was enabled by including the Microsoft.ApplicationInsights.SnapshotCollector NuGet package, use Visual Studio's NuGet Package Manager to make sure you're using the latest version of Microsoft.ApplicationInsights.SnapshotCollector. リリース ノートについては https://github.com/Microsoft/ApplicationInsights-Home/issues/167 を参照してください。Release notes can be found at https://github.com/Microsoft/ApplicationInsights-Home/issues/167

アップローダー ログの確認Check the uploader logs

スナップショットの作成後、ミニダンプ ファイル (.dmp) がディスク上に作成されます。After a snapshot is created, a minidump file (.dmp) is created on disk. 個別アップローダー プロセスでは、そのミニダンプ ファイルを作成し、これを関連する PDB と共に Application Insights のスナップショット デバッガーのストレージにアップロードします。A separate uploader process creates that minidump file and uploads it, along with any associated PDBs, to Application Insights Snapshot Debugger storage. ミニダンプは、正常にアップロードされた後、ディスクから削除されます。After the minidump has uploaded successfully, it's deleted from disk. アップローダー プロセスのログ ファイルは、ディスク上に保持されます。The log files for the uploader process are kept on disk. App Service 環境では、これらのログは D:\Home\LogFiles にあります。In an App Service environment, you can find these logs in D:\Home\LogFiles. App Service の Kudu 管理サイトを使用すると、これらのログ ファイルを検索できます。Use the Kudu management site for App Service to find these log files.

  1. Azure Portal で App Service アプリケーションを開きます。Open your App Service application in the Azure portal.
  2. [高度なツール] をクリックするか、Kudu を検索します。Click Advanced Tools, or search for Kudu.
  3. [Go] をクリックします。Click Go.
  4. [Debug console] (デバッグ コンソール) ドロップダウン リスト ボックスで、 [CMD] を選択します。In the Debug console drop-down list box, select CMD.
  5. [LogFiles] をクリックします。Click LogFiles.

Uploader_ または SnapshotUploader_で始まる名前で拡張子が .log であるファイルが 1 つ以上表示されます。You should see at least one file with a name that begins with Uploader_ or SnapshotUploader_ and a .log extension. 適切なアイコンをクリックしてログ ファイルをダウンロードするか、またはブラウザーでログ ファイルを開きます。Click the appropriate icon to download any log files or open them in a browser. ファイル名には、App Service インスタンスを識別する一意のサフィックスが含まれます。The file name includes a unique suffix that identifies the App Service instance. App Service のインスタンスが 1 つ以上のコンピューターでホストされている場合は、コンピューターごとに個別のログ ファイルがあります。If your App Service instance is hosted on more than one machine, there are separate log files for each machine. アップローダーは、新しいミニダンプ ファイルを検出すると、ログ ファイルに記録します。When the uploader detects a new minidump file, it's recorded in the log file. スナップショットとアップロードの成功の例を次に示します。Here's an example of a successful snapshot and upload:

SnapshotUploader.exe Information: 0 : Received Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Creating minidump from Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Dump placeholder file created: 139e411a23934dc0b9ea08a626db16c5.dm_
    DateTime=2018-03-09T01:42:41.8728496Z
SnapshotUploader.exe Information: 0 : Dump available 139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7525022Z
SnapshotUploader.exe Information: 0 : Successfully wrote minidump to D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Uploading D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp, 214.42 MB (uncompressed)
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Upload successful. Compressed size 86.56 MB
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Extracting PDB info from D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp.
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Matched 2 PDB(s) with local files.
    DateTime=2018-03-09T01:42:59.6809606Z
SnapshotUploader.exe Information: 0 : Stamp does not want any of our matched PDBs.
    DateTime=2018-03-09T01:42:59.8059929Z
SnapshotUploader.exe Information: 0 : Deleted D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:59.8530649Z

注意

上記の例は、Microsoft.ApplicationInsights.SnapshotCollector NuGet パッケージのバージョン 1.2.0 です。The example above is from version 1.2.0 of the Microsoft.ApplicationInsights.SnapshotCollector NuGet package. 以前のバージョンのアップローダー プロセスは MinidumpUploader.exe で、ログはこれほど詳しくありません。In earlier versions, the uploader process is called MinidumpUploader.exe and the log is less detailed.

インストルメンテーション キーは、前の例では、c12a605e73c44346a984e00000000000 です。In the previous example, the instrumentation key is c12a605e73c44346a984e00000000000. この値は、アプリケーションのインストルメンテーション キーと一致する必要があります。This value should match the instrumentation key for your application. ミニダンプは ID 139e411a23934dc0b9ea08a626db16c5 を持つスナップショットに関連付けられています。The minidump is associated with a snapshot with the ID 139e411a23934dc0b9ea08a626db16c5. この ID は、Application Insights Analytics で関連する例外テレメトリを検索するために後で使用できます。You can use this ID later to locate the associated exception telemetry in Application Insights Analytics.

アップローダーは、約 15 分ごとに 1 回新しい PDB をスキャンします。The uploader scans for new PDBs about once every 15 minutes. 次に例を示します。Here's an example:

SnapshotUploader.exe Information: 0 : PDB rescan requested.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Scanning D:\home\site\wwwroot for local PDBs.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Local PDB scan complete. Found 2 PDB(s).
    DateTime=2018-03-09T01:47:19.4614027Z
SnapshotUploader.exe Information: 0 : Deleted PDB scan marker : D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\6368.pdbscan
    DateTime=2018-03-09T01:47:19.4614027Z

App Service にホストされて "いない" アプリケーションでは、アップローダー ログは、ミニダンプと同じフォルダー %TEMP%\Dumps\<ikey> にあります (<ikey> はインストルメンテーション キー)。For applications that aren't hosted in App Service, the uploader logs are in the same folder as the minidumps: %TEMP%\Dumps\<ikey> (where <ikey> is your instrumentation key).

クラウド サービスのトラブルシューティングTroubleshooting Cloud Services

クラウド サービスのロールでは、既定の一時フォルダーが minidump ファイルを保持するためには小さすぎる場合があり、スナップショットが失われる可能性があります。For roles in Cloud Services, the default temporary folder may be too small to hold the minidump files, leading to lost snapshots. 必要な領域は、アプリケーションの合計ワーキング セットと同時実行スナップショット数によって異なります。The space needed depends on the total working set of your application and the number of concurrent snapshots. 32 ビット ASP.NET web ロールのワーキング セットは、通常は 200 MB から 500 MB です。The working set of a 32-bit ASP.NET web role is typically between 200 MB and 500 MB. 少なくとも 2 つの同時実行スナップショットを許可します。Allow for at least two concurrent snapshots. たとえば、アプリケーションが 1 GB の合計ワーキング セットを使用する場合は、スナップショットを格納するために少なくとも 2 GB のディスク領域があることを確認する必要があります。For example, if your application uses 1 GB of total working set, you should make sure that there is at least 2 GB of disk space to store snapshots. 次の手順に従って、スナップショット専用のローカル リソースを持つクラウド サービス ロールを構成します。Follow these steps to configure your Cloud Service role with a dedicated local resource for snapshots.

  1. クラウド サービス定義 (.csdef) ファイルを編集して、新しいローカル リソースをクラウド サービスに追加します。Add a new local resource to your Cloud Service by editing the Cloud Service definition (.csdef) file. 次の例では、サイズが 5 GB の SnapshotStore というリソースを定義します。The following example defines a resource called SnapshotStore with a size of 5 GB.

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. ロールの起動コードを変更して、SnapshotStore ローカル リソースを指す環境変数を追加します。Modify your role's startup code to add an environment variable that points to the SnapshotStore local resource. worker ロールの場合は、コードをロールの OnStart メソッドに追加する必要があります。For Worker Roles, the code should be added to your role's OnStart method:

    public override bool OnStart()
    {
        Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
        return base.OnStart();
    }
    

    Web ロール (ASP.NET) の場合は、コードを Web アプリケーションの Application_Start メソッドに追加する必要があります。For Web Roles (ASP.NET), the code should be added to your web application's Application_Start method:

    using Microsoft.WindowsAzure.ServiceRuntime;
    using System;
    
    namespace MyWebRoleApp
    {
        public class MyMvcApplication : System.Web.HttpApplication
        {
           protected void Application_Start()
           {
              Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
              // TODO: The rest of your application startup code
           }
        }
    }
    
  3. ロールの ApplicationInsights.config ファイルを更新して、SnapshotCollector によって使用される一時フォルダーの場所をオーバーライドします。Update your role's ApplicationInsights.config file to override the temporary folder location used by SnapshotCollector

    <TelemetryProcessors>
     <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
       <!-- Use the SnapshotStore local resource for snapshots -->
       <TempFolder>%SNAPSHOTSTORE%</TempFolder>
       <!-- Other SnapshotCollector configuration options -->
     </Add>
    </TelemetryProcessors>
    

シャドウ コピー フォルダーのオーバーライドOverriding the Shadow Copy folder

Snapshot Collector を起動すると、Snapshot Uploader プロセスを実行するのに適したディスク上のフォルダーが検索されます。When the Snapshot Collector starts up, it tries to find a folder on disk that is suitable for running the Snapshot Uploader process. 選択されたフォルダーは、シャドウ コピー フォルダーと呼ばれます。The chosen folder is known as the Shadow Copy folder.

Snapshot Collector は、いくつかのよく知られている場所を確認し、Snapshot Uploader のバイナリをコピーするアクセス許可があることを確認します。The Snapshot Collector checks a few well-known locations, making sure it has permissions to copy the Snapshot Uploader binaries. 次の環境変数が使用されます。The following environment variables are used:

  • Fabric_Folder_App_TempFabric_Folder_App_Temp
  • LOCALAPPDATALOCALAPPDATA
  • APPDATAAPPDATA
  • TEMPTEMP

適切なフォルダーが見つからない場合は、Snapshot Collector によって "Could not find a suitable shadow copy folder (適切なシャドウ コピー フォルダーが見つかりません) " エラーが報告されます。If a suitable folder can't be found, Snapshot Collector reports an error saying "Could not find a suitable shadow copy folder."

コピーに失敗した場合、Snapshot Collector は ShadowCopyFailed エラーを報告します。If the copy fails, Snapshot Collector reports a ShadowCopyFailed error.

アップローダーを起動できない場合、Snapshot Collector は UploaderCannotStartFromShadowCopy エラーを報告します。If the uploader can't be launched, Snapshot Collector reports an UploaderCannotStartFromShadowCopy error. メッセージの本文に System.UnauthorizedAccessException が含まれることがよくあります。The body of the message often contains System.UnauthorizedAccessException. このエラーは、通常、アクセス許可が制限されたアカウントの下でアプリケーションが実行されているために発生します。This error usually occurs because the application is running under an account with reduced permissions. このアカウントには、シャドウ コピー フォルダーに書き込むためのアクセス許可が与えられていますが、コードを実行するためのアクセス許可が与えられていません。The account has permission to write to the shadow copy folder, but it doesn't have permission to execute code.

これらのエラーは通常、起動時に発生するため、"Uploader failed to start (アップローダーを起動できませんでした) " という ExceptionDuringConnect エラーが続いて表示されます。Since these errors usually happen during startup, they'll usually be followed by an ExceptionDuringConnect error saying "Uploader failed to start."

これらのエラーを回避するには、ShadowCopyFolder 構成オプションを使用して、シャドウ コピー フォルダーを手動で指定します。To work around these errors, you can specify the shadow copy folder manually via the ShadowCopyFolder configuration option. たとえば、ApplicationInsights.config を使用する場合は、次のように指定します。For example, using ApplicationInsights.config:

<TelemetryProcessors>
 <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
   <!-- Override the default shadow copy folder. -->
   <ShadowCopyFolder>D:\SnapshotUploader</ShadowCopyFolder>
   <!-- Other SnapshotCollector configuration options -->
 </Add>
</TelemetryProcessors>

または、.NET Core アプリケーションで appsettings.json を使用する場合は、次のように指定します。Or, if you're using appsettings.json with a .NET Core application:

{
  "ApplicationInsights": {
    "InstrumentationKey": "<your instrumentation key>"
  },
  "SnapshotCollectorConfiguration": {
    "ShadowCopyFolder": "D:\\SnapshotUploader"
  }
}

Application Insights 検索を使用してスナップショット付きの例外を検索するUse Application Insights search to find exceptions with snapshots

スナップショットが作成されている場合、例外がスローされるとスナップショット ID がタグ付けされます。When a snapshot is created, the throwing exception is tagged with a snapshot ID. Application Insights に例外テレメトリがレポートされると、そのスナップショット ID はカスタム プロパティとして含まれます。That snapshot ID is included as a custom property when the exception telemetry is reported to Application Insights. Application Insights の [検索] を使用すると、ai.snapshot.id カスタム プロパティを使用してすべてのテレメトリを見つけることができます。Using Search in Application Insights, you can find all telemetry with the ai.snapshot.id custom property.

  1. Azure Portal の Application Insights のリソースを参照します。Browse to your Application Insights resource in the Azure portal.
  2. [検索] をクリックします。Click Search.
  3. [検索] テキスト ボックスに ai.snapshot.id と入力し、Enter キーを押します。Type ai.snapshot.id in the Search text box and press Enter.

ポータルでスナップショット ID を使用してテレメトリを検索

この検索に結果が返されない場合、アプリケーションが選択した時間範囲に Application Insights にスナップショットをレポートしなかったということです。If this search returns no results, then no snapshots were reported to Application Insights for your application in the selected time range.

アップローダー ログから特定のスナップショット ID を検索するには、[検索] ボックスにその ID を入力します。To search for a specific snapshot ID from the Uploader logs, type that ID in the Search box. 既知のスナップショットのテレメトリを検索できない場合、次の手順に従います。If you can't find telemetry for a snapshot that you know was uploaded, follow these steps:

  1. インストルメンテーション キーを確認することにより、正しい Application Insights のリソースを探していることを再確認します。Double-check that you're looking at the right Application Insights resource by verifying the instrumentation key.

  2. アップローダー ログからのタイムスタンプを使用して、その時間範囲をカバーするように検索の時間範囲フィルターを調整します。Using the timestamp from the Uploader log, adjust the Time Range filter of the search to cover that time range.

それでもそのスナップショット ID を持つ例外が表示されない場合、その例外テレメトリが Application Insights にレポートされなかったということです。If you still don't see an exception with that snapshot ID, then the exception telemetry wasn't reported to Application Insights. このような状況は、スナップショットを取得した後かつ例外テレメトリにレポートする前にアプリケーションがクラッシュした場合に発生する可能性があります。This situation can happen if your application crashed after it took the snapshot but before it reported the exception telemetry. この場合、Diagnose and solve problems で App Service を確認し、予期しない再起動またはハンドルされない例外があったかどうかを確認します。In this case, check the App Service logs under Diagnose and solve problems to see if there were unexpected restarts or unhandled exceptions.

ネットワーク プロキシまたはファイアウォール規則を編集するEdit network proxy or firewall rules

アプリケーションがプロキシまたはファイアウォールを介してインターネットに接続する場合は、アプリケーションがスナップショット デバッガーサービスと通信できるように規則を編集する必要があります。If your application connects to the Internet via a proxy or a firewall, you may need to edit the rules to allow your application to communicate with the Snapshot Debugger service. スナップショット デバッガーによって使用される IP は、Azure Monitor サービス タグに含まれています。The IPs used by Snapshot Debugger are included in the Azure Monitor service tag.