次の方法で共有


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

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

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

  • Free と Shared サービス レベルには、スナップショットを保存するための十分なメモリまたはディスク領域がありません。
  • スナップショット デバッガーでは現状、従量課金レベルは利用できません。

スナップショット デバッガーは Azure Functions Runtime の一部としてプレインストールされるため、NuGet パッケージやアプリケーション設定を追加する必要はありません。

前提条件

Functions アプリで Application Insights の監視を有効にします

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

関数アプリでスナップショット デバッガーを有効にするには、snapshotConfiguration プロパティを host.json ファイルに追加し、関数を再デプロイします。 次に例を示します。

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

例外をトリガーできるアプリケーションへのトラフィックを生成します。 その後、Application Insights インスタンスにスナップショットが送信がされるまで 10 分から 15 分待ちます。

.NET 関数アプリ ファイルを確認することで、スナップショット デバッガーが有効になっていることを確認できます。 たとえば、次のシンプルな .NET 関数アプリにおいて、NET アプリケーションの .csproj{Your}Function.cs および host.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
      }
    }
  }
}

次のステップ