Azure Functions で .NET および .NET Core アプリのスナップショット デバッガーを有効にする

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

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

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

前提条件

関数アプリで Application Insights の監視を有効にする

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

関数アプリでスナップショット デバッガーを有効にするには、snapshotConfiguration プロパティを host.json ファイルに追加し、関数を再デプロイします。 たとえば、次のように入力します。

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "snapshotConfiguration": {
        "isEnabled": true
      }
    }
  }
}

スナップショット デバッガーは、Azure Functions ランタイムの一部としてプレインストールされており、既定では無効になっています。 これはランタイムに含まれているため、追加の NuGet パッケージやアプリケーション設定を追加する必要はありません。

この後の単純な .NET Core 関数アプリの例では、.csproj{Your}Function.cshost.json でスナップショット デバッガーが有効になっています。

Project.csproj

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.31" />
</ItemGroup>
<ItemGroup>
    <None Update="host.json">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
</ItemGroup>
</Project>

{Your}Function.cs

using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;

namespace SnapshotCollectorAzureFunction
{
    public static class ExceptionFunction
    {
        [FunctionName("ExceptionFunction")]
        public static Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            throw new NotImplementedException("Dummy");
        }
    }
}

Host.json

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request",
      "samplingSettings": {
        "isEnabled": true
      },
      "snapshotConfiguration": {
        "isEnabled": true
      }
    }
  }
}

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

現在、エンドポイントの変更が必要なリージョンは Azure Government21Vianet によって運営される Microsoft Azure のみです。

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

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

以下は、スナップショット デバッガー エージェント エンドポイントでサポートされているオーバーライドです。

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

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

関数アプリでスナップショット デバッガーを無効にするには、プロパティ snapshotConfiguration.isEnabledfalse に設定して host.json ファイルを更新します。

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "snapshotConfiguration": {
        "isEnabled": false
      }
    }
  }
}

アプリケーション例外の診断を容易にするために、すべてのアプリでスナップショット デバッガーを有効にすることをお勧めします。

次のステップ