Application Insights スナップショット デバッガーの有効化またはスナップショットの表示に関する問題のトラブルシューティング

アプリケーションに対して Application Insights スナップショット デバッガーを有効にしたが、例外のスナップショットが表示されない場合は、次の手順を使用してトラブルシューティングを行うことができます。

スナップショットが生成されない理由はさまざまです。 まず、スナップショット正常性チェックを実行して、考えられる一般的な原因のいくつかを特定します。

サポートされていないシナリオ

スナップショット コレクターがサポートされていないシナリオを次に示します。

シナリオ 副作用 Recommendation
アプリケーションで Snapshot Collector SDK を直接 (.csproj) 使用し、事前オプション "相互運用" を有効にした場合。 ローカルの Application Insights SDK (スナップショット コレクターテレメトリを含む) は失われます。そのため、スナップショットは使用できません。
起動時にアプリケーションがクラッシュする可能性があります。 System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor
Application Insights 機能 "相互運用" の詳細については、Azure App Serviceと ASP.NET Coreのアプリケーション監視に関するページを参照してください。
事前オプション "相互運用" を使用している場合は、コードレスのスナップショット コレクター インジェクション (Azure portal UX を介して有効) を使用します。

適切なスナップショット デバッガー エンドポイントを使用していることを確認します

現在、エンドポイントの変更を必要とする唯一のリージョンは、Azure GovernmentAzure China です

Application Insights SDK を使用するApp Serviceとアプリケーションの場合は、次に定義されているように、スナップショット デバッガーでサポートされているオーバーライドを使用して接続文字列を更新する必要があります。

接続文字列プロパティ 米国政府機関向けクラウド China Cloud
SnapshotEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

その他の接続オーバーライドの詳細については、 Application Insights のドキュメントを参照してください

関数アプリの場合は、次の host.json サポートされているオーバーライドを使用して を更新する必要があります。

プロパティ 米国政府機関向けクラウド China Cloud
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

米国政府機関クラウド エージェント エンドポイントで更新された host.json 例を次に示します。

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request",
      "samplingSettings": {
        "isEnabled": true
      },
      "snapshotConfiguration": {
        "isEnabled": true,
        "agentEndpoint": "https://snapshot.monitor.azure.us"
      }
    }
  }
}

スナップショット正常性チェックを使用する

いくつかの一般的な問題により、Open Debug Snapshot が表示されません。 たとえば、古いスナップショット コレクターが使用されます。1 日のアップロード制限に達しました。または、スナップショットのアップロードに時間がかかる場合があります。 スナップショット正常性チェックを使用して、一般的な問題のトラブルシューティングを行います。

エンド ツー エンドのトレース ビューの例外ウィンドウに、スナップショット正常性チェックに移動するリンクがあります。

正常性チェックスナップショット入力する方法を示すスクリーンショット。

対話型のチャットのようなインターフェイスは、一般的な問題を探し、それらを修正するためのガイドです。

問題とその修正方法を示す対話型の正常性チェック ウィンドウを示すスクリーンショット。

それでも問題が解決しない場合は、次の手動トラブルシューティング手順を参照してください。

インストルメンテーション キーを確認する

発行済みアプリケーションで正しいインストルメンテーション キーを使用していることを確認します。 通常、インストルメンテーション キーは ApplicationInsights.config ファイルから読み取られます。 値が、ポータルに表示される Application Insights リソースのインストルメンテーション キーと同じであることを確認します。

2025 年 3 月 31 日、インストルメンテーション キー インジェストのサポートは終了します。 インストルメンテーション キー インジェストは引き続き機能しますが、この機能の更新プログラムやサポートは提供されなくなります。 新しい機能を利用するために接続文字列に移行します。

TLS/SSL クライアント設定を確認する (ASP.NET)

仮想マシン上の Azure App Service または IIS でホストされている ASP.NET アプリケーションがある場合、SSL セキュリティ プロトコルがないため、アプリケーションがスナップショット デバッガー サービスに接続できない可能性があります。

スナップショット デバッガー エンドポイントには、TLS バージョン 1.2 が必要です。 SSL セキュリティ プロトコルのセットは、 のセクションの値system.webによってhttpRuntime targetFramework有効になる風変わりなものの web.config1 つです。 httpRuntime targetFrameworkが 4.5.2 以下の場合、TLS 1.2 は既定では含まれません。

注:

この httpRuntime targetFramework 値は、アプリケーションのビルド時に使用されるターゲット フレームワークとは独立しています。

設定をチェックするには、web.config ファイルを開き、system.web セクションを見つけます。 が targetFrameworkhttpRuntime 4.6 以上に設定されていることを確認します。

<system.web>
   ...
   <httpRuntime targetFramework="4.7.2" />
   ...
</system.web>

注:

値を httpRuntime targetFramework 変更すると、アプリケーションに適用されるランタイムの風変わりが変わり、他の微妙な動作の変更が発生する可能性があります。 この変更を行った後は、アプリケーションを十分にテストしてください。 互換性の変更の完全な一覧については、「 変更を再ターゲット化する」を参照してください。

注:

targetFrameworkが 4.7 以降のバージョンの場合、使用可能なプロトコルが Windows によって決定されます。 Azure App Serviceでは、TLS 1.2 を使用できます。 ただし、独自の仮想マシンを使用している場合は、OS で TLS 1.2 を有効にする必要がある場合があります。

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

プレビュー バージョンの .NET Core を使用している場合、またはアプリケーションが Application Insights SDK を参照している場合は、依存アセンブリを介して直接または間接的に、「 他の環境でスナップショット デバッガーを有効にする」の手順に従ってください。

Diagnostic Services サイト拡張機能の [状態] ページを確認する

ポータルの Application Insights ペイン でスナップショット デバッガーが有効になっている場合は、Diagnostic Services サイト拡張機能によって有効になりました。

注:

Application Insights スナップショット デバッガーのコードレス インストールは、.NET Core サポート ポリシーに従います。 サポートされるランタイムの詳細については、「 .NET Core サポート ポリシー」を参照してください。

この拡張機能の [状態] ページをチェックするには、次の URL に移動します。https://{site-name}.scm.azurewebsites.net/DiagnosticServices

注:

[状態ページ] リンクのドメインは、クラウドによって異なります。 このドメインは、App Serviceの Kudu 管理サイトと同じになります。

この状態ページには、Profiler エージェントとスナップショット コレクター エージェントのインストール状態が表示されます。 予期しないエラーが発生した場合は、そのエラーが表示され、修正方法が表示されます。

App Serviceの Kudu 管理サイトを使用して、この [状態] ページのベース URL を取得できます。

  1. Azure portalでApp Service アプリケーションを開きます。
  2. [ 高度なツール] を選択するか、 Kudu を検索します。
  3. [Go]を選択します。
  4. Kudu 管理サイトにアクセスしたら、URL に を追加し、Enter キーを/DiagnosticServices押します。 次のように終了します。 https://<kudu-url>/DiagnosticServices

最新バージョンの NuGet パッケージにアップグレードする

スナップショット デバッガーの有効化方法に基づいて、次のオプションを参照してください。

  • ポータルの Application Insights ペインでスナップショット デバッガーが有効になっている場合は、アプリケーションで最新の NuGet パッケージが既に実行されている必要があります。

  • Microsoft.ApplicationInsights.SnapshotCollector NuGet パッケージを含めることによってスナップショット デバッガーが有効になっている場合は、Visual Studio の NuGet パッケージ マネージャーを使用して、 のMicrosoft.ApplicationInsights.SnapshotCollector最新バージョンを使用していることを確認します。

最新の更新プログラムとバグ修正については、 リリース ノートを参照してください

アップローダー ログを確認する

スナップショットが作成されると、ディスク上にミニダンプ ファイル (.dmp) が作成されます。 個別のアップローダー プロセスにより、ミニダンプ ファイルが作成され、関連付けられている PDB と共に Application Insights Snapshot Debugger ストレージにアップロードされます。 ミニダンプが正常にアップロードされると、ディスクから削除されます。 アップローダー プロセスのログ ファイルはディスクに保持されます。 App Service環境では、 でこれらのログをD:\Home\LogFiles見つけることができます。 これらのログ ファイルを検索するには、App Serviceの Kudu 管理サイトを使用します。

  1. Azure portalでApp Service アプリケーションを開きます。
  2. [ 高度なツール] を選択するか、 Kudu を検索します。
  3. [Go]を選択します。
  4. [ デバッグ コンソール ] ドロップダウン リストで、[CMD] を選択 します
  5. [ LogFiles] を選択します

または SnapshotUploader_ で始まるUploader_名前と拡張子を持つ少なくとも 1 つのファイルが.log表示されます。 適切なアイコンを選択してログ ファイルをダウンロードするか、ブラウザーで開きます。 ファイル名には、App Service インスタンスを識別する一意のサフィックスが含まれています。 App Service インスタンスが複数のマシンでホストされている場合は、マシンごとに個別のログ ファイルがあります。 アップローダーが新しいミニダンプ ファイルを検出すると、ログ ファイルに記録されます。 成功したスナップショットとアップロードの例を次に示します。

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

注:

上記の例は、NuGet パッケージの Microsoft.ApplicationInsights.SnapshotCollector バージョン 1.2.0 からの例です。 以前のバージョンでは、アップローダー プロセスが呼び出 MinidumpUploader.exe され、ログの詳細が少なくなります。

前の例では、インストルメンテーション キーは です c12a605e73c44346a984e00000000000。 この値は、アプリケーションのインストルメンテーション キーと一致する必要があります。 ミニダンプは、ID 139e411a23934dc0b9ea08a626db16c5を持つスナップショットに関連付けられています。 この ID は、後で Application Insights Analytics で関連付けられている例外レコードを見つけるために使用できます。

アップローダーは、15 分ごとに約 1 回、新しい PDB をスキャンします。 次に例を示します:

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>、インストルメンテーション キー)。

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

Cloud Servicesでは、既定の一時フォルダーが小さすぎてミニダンプ ファイルを保持できず、スナップショットが失われる可能性があります。

必要な領域は、アプリケーションの作業セットの合計と同時スナップショットの数によって異なります。

32 ビット ASP.NET Web ロールのワーキング セットは、通常、200 MB から 500 MB の間です。 少なくとも 2 つの同時スナップショットを許可します。

たとえば、アプリケーションで 1 GB の合計ワーキング セットが使用されている場合は、スナップショットを格納するために少なくとも 2 GB のディスク領域があることを確認する必要があります。

スナップショット専用のローカル リソースを使用してクラウド サービス ロールを構成するには、次の手順に従います。

  1. Cloud Service 定義 (.csdef) ファイルを編集して、新しいローカル リソースを Cloud Service に追加します。 次の例では、5 GB のサイズで というリソース SnapshotStore を定義します。

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. ロールのスタートアップ コードを変更して、ローカル リソースを指す環境変数を SnapshotStore 追加します。 Worker ロールの場合、コードはロールの OnStart メソッドに追加する必要があります。

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

    Web ロール (ASP.NET) の場合、コードを Web アプリケーションの Application_Start メソッドに追加する必要があります。

    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更新します。

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

シャドウ コピー フォルダーをオーバーライドする

スナップショット コレクターが起動すると、スナップショット アップローダー プロセスの実行に適したディスク上のフォルダーが検索されます。 選択したフォルダーはシャドウ コピー フォルダーと呼ばれます。

スナップショット コレクターは、いくつかの既知の場所を確認し、Snapshot Uploader バイナリをコピーするアクセス許可があることを確認します。 次の環境変数が使用されます。

  • Fabric_Folder_App_Temp
  • LOCALAPPDATA
  • APPDATA
  • TEMP

適切なフォルダーが見つからない場合、スナップショット コレクターは "適切なシャドウ コピー フォルダーが見つかりませんでした" というエラーを報告します。

コピーが失敗した場合、スナップショット コレクターはエラーを ShadowCopyFailed 報告します。

アップローダーを起動できない場合、スナップショット コレクターはエラーを UploaderCannotStartFromShadowCopy 報告します。 メッセージの本文には、多くの場合、 が System.UnauthorizedAccessException含まれています。 このエラーは通常、アクセス許可が制限されたアカウントでアプリケーションが実行されているために発生します。 アカウントにはシャドウ コピー フォルダーへの書き込みアクセス許可がありますが、コードを実行するためのアクセス許可がありません。

通常、これらのエラーは起動時に発生するため、通常は "Uploader の起動に失敗しました" というエラーが続 ExceptionDuringConnect きます。

これらのエラーを回避するには、構成オプションを使用してシャドウ コピー フォルダーを手動で ShadowCopyFolder 指定します。 たとえば、 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 を使用している場合は、次のようにします。

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

Application Insights 検索を使用してスナップショットの例外を検索する

スナップショットが作成されると、スロー例外にスナップショット ID が付けられます。 例外が Application Insights に報告されると、そのスナップショット ID がカスタム プロパティとして含まれます。 Application Insights でSearchを使用すると、カスタム プロパティを使用してすべてのレコードをai.snapshot.id検索できます。

  1. Azure portalで Application Insights リソースを参照します。
  2. [検索] を選択します。
  3. [Search] テキスト ボックスに「」と入力ai.snapshot.idし、Enter キーを押します。

ポータルでスナップショット ID を持つテレメトリの検索を示すスクリーンショット。

この検索で結果が返されない場合、選択した時間範囲の Application Insights にスナップショットは報告されませんでした。

Uploader ログから特定のスナップショット ID を検索するには、[Search] ボックスにその ID を入力します。 アップロードされたことがわかっているスナップショットのレコードが見つからない場合は、次の手順に従います。

  1. インストルメンテーション キーを確認して、適切な Application Insights リソースを確認していることをダブルチェックします。

  2. Uploader ログのタイムスタンプを使用して、検索の時間範囲フィルターを調整して、その時間範囲をカバーします。

それでもスナップショット ID の例外が表示されない場合、例外レコードは Application Insights に報告されませんでした。 この状況は、アプリケーションがスナップショットを受け取った後、例外レコードを報告する前にアプリケーションがクラッシュした場合に発生する可能性があります。 この場合は、App Service ログを 下Diagnose and solve problemsにチェックして、予期しない再起動または未処理の例外があるかどうかを確認します。

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

アプリケーションがプロキシまたはファイアウォールを介してインターネットに接続する場合は、スナップショット デバッガー サービスと通信するためにルールを更新する必要がある場合があります。

Application Insights スナップショット デバッガーで使用される IP は、Azure Monitor サービス タグに含まれています。 詳細については、 サービス タグに関するドキュメントを参照してください

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

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