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 Government と 21Vianet によって運営される 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.isEnabled
を false
に設定して host.json
ファイルを更新します。
{
"version": "2.0",
"logging": {
"applicationInsights": {
"snapshotConfiguration": {
"isEnabled": false
}
}
}
}
次のステップ
- Azure portal でスナップショットを確認します。
- 関数アプリのユース ケースに基づいてスナップショット デバッガーの構成をカスタマイズします。 詳細については、host.json のスナップショット構成に関するページを参照してください。
- スナップショット デバッガーの問題のトラブルシューティング。