Azure App Service で .NET アプリでスナップショット デバッガーを有効にする

スナップショット デバッガーは、現在、Windows サービス プランの Azure App Service で実行されている ASP.NET アプリと ASP.NET Core アプリでサポートされています。

スナップショット デバッガーを使用する場合は、Basic サービス レベル以上でアプリケーションを実行することをお勧めします。

ほとんどのアプリケーションの場合、Free および Shared サービス レベルでは、スナップショットを保存するための十分なメモリまたはディスク領域がありません。

スナップショット デバッガーを有効にする

スナップショット デバッガーは App Services ランタイムの一部としてプレインストールされますが、App Service アプリのスナップショットを取得するには、スナップショット デバッガーを有効にする必要があります。 アプリでスナップショット デバッガーを有効にするには、次の手順に従います。

注意

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

Note

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

.NET アプリをデプロイした後、次を行います。

  1. App Service の Azure コントロール パネルに移動します。

  2. [設定]>[Application Insights] ページの順に移動します。

    App Services ポータルで App Insights を有効にすることを示すスクリーンショット。

  3. ウィンドウの指示に従って新しいリソースを作成するか、既存の App Insights リソースを選択してアプリを監視します。

  4. スナップショット デバッガー トグルを [オン] に切り替えます。

    App Insights サイト拡張機能を追加する方法を示すスクリーンショット。

  5. スナップショット デバッガーは、App Services のアプリ設定を使用して有効になりました。

    スナップショット デバッガーのアプリ設定を示すスクリーンショット。

別の種類の Azure サービスを実行している場合、他のサポート対象プラットフォームでスナップショット デバッガーを有効にする手順については次を参照してください。

他のクラウドに対してスナップショット デバッガーを有効にする

現在、エンドポイントの変更が必要なリージョンは Azure GovernmentAzure China のみであり、Application Insights の接続文字列が利用されます。

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

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

スナップショット取り込み用の Azure Active Directory 認証を有効にする

Application Insights スナップショット デバッガーではスナップショット取り込みのための Azure AD 認証がサポートされています。 つまり、アプリケーションのすべてのスナップショットを取り込むには、アプリケーションが認証され、必要なアプリケーション設定をスナップショット デバッガー エージェントに提供する必要があります。

現在、アプリケーションで Application Insights SDK を使用して、Azure AD を参照および構成する場合、スナップショット デバッガーでは、Azure AD 認証のみがサポートされています。

スナップショット インジェスト用に Azure AD を有効にするには、次のようにします。

  1. Application Insights リソースの認証に使用するマネージド ID を作成して App Service に追加します。

    1. システム割り当てマネージド ID については、次のドキュメントを参照してください。

    2. ユーザー割り当てマネージド ID については、次のドキュメントを参照してください。

  2. Application Insights リソースで Azure AD を構成して有効にします。 詳しくは、次のドキュメントをご覧ください。

  3. 次のアプリケーション設定を追加します。これは、使用するマネージド ID をスナップショット デバッガー エージェントに知らせるために使用します。

システム割り当て ID の場合:

アプリ設定
APPLICATIONINSIGHTS_AUTHENTICATION_STRING Authorization=AD

ユーザー割り当て ID の場合:

アプリ設定
APPLICATIONINSIGHTS_AUTHENTICATION_STRING Authentication=AD;ClientId={ユーザー割り当て ID のクライアント ID}

スナップショット デバッガーを無効にする

スナップショット デバッガーを無効にするには、有効にする手順を繰り返します。 ただし、スナップショット デバッガー トグルを [オフ] に切り替えます。

Azure Resource Manager テンプレート

Azure App Service の場合、Azure Resource Manager テンプレート内でアプリ設定を指定して、スナップショット デバッガーと Profiler を有効にできます。 次に例を示します。

{
  "apiVersion": "2015-08-01",
  "name": "[parameters('webSiteName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[variables('hostingPlanName')]"
  ],
  "tags": { 
    "[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName')))]": "empty",
    "displayName": "Website"
  },
  "properties": {
    "name": "[parameters('webSiteName')]",
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
  },
  "resources": [
    {
      "apiVersion": "2015-08-01",
      "name": "appsettings",
      "type": "config",
      "dependsOn": [
        "[parameters('webSiteName')]",
        "[concat('AppInsights', parameters('webSiteName'))]"
      ],
      "properties": {
        "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('Microsoft.Insights/components', concat('AppInsights', parameters('webSiteName'))), '2014-04-01').InstrumentationKey]",
        "APPINSIGHTS_PROFILERFEATURE_VERSION": "1.0.0",
        "APPINSIGHTS_SNAPSHOTFEATURE_VERSION": "1.0.0",
        "DiagnosticServices_EXTENSION_VERSION": "~3",
        "ApplicationInsightsAgent_EXTENSION_VERSION": "~2"
      }
    }
  ]
},

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

Snapshot Collector がサポートされていないシナリオを以下に示します。

シナリオ 副作用 推奨
アプリケーションで Snapshot Collector SDK を直接使用していて (.csproj)、詳細オプション "Interop" を有効にしている。 ローカルの Application Insights SDK (Snapshot Collector テレメトリを含む) は失われるため、スナップショットは使用できません。
起動時にアプリケーションが System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor. でクラッシュする可能性があります。
Application Insights 機能 "Interop" に関する詳細を確認してください。
詳細オプション "Interop" を使用している場合、コードレス Snapshot Collector インジェクション (Azure portal から有効にする) を使用します。

次のステップ

  • 例外をトリガーできるアプリケーションへのトラフィックを生成します。 その後、Application Insights インスタンスにスナップショットが送信がされるまで 10 ~ 15 分待機します。
  • Azure portal でスナップショットを確認します。
  • スナップショット デバッガーの問題のトラブルシューティングについては、スナップショット デバッガーのトラブルシューティングのページを参照してください。