Azure Functions에서 .NET 및 .NET Core 앱용 스냅샷 디버거 사용
현재 스냅샷 디버거는 Windows 서비스 플랜의 Azure Functions에서 실행되는 ASP.NET 및 ASP.NET Core 앱에 대해 작동합니다.
스냅샷 디버거를 사용하는 경우 기본 또는 상위 서비스 계층에서 애플리케이션을 실행하는 것이 좋습니다. 대부분의 애플리케이션의 경우:
- 무료 및 공유 서비스 계층에는 스냅샷을 저장할 메모리나 디스크 공간이 충분하지 않습니다.
- 소비 계층은 현재 스냅샷 디버거에서 사용할 수 없습니다.
스냅샷 디버거는 Azure Functions 런타임의 일부로 사전 설치되어 있으므로 추가 NuGet 패키지나 애플리케이션 설정을 추가할 필요가 없습니다.
전제 조건
Functions 앱에서 Application Insights 모니터링 사용.
스냅샷 디버거 사용
Functions 앱에서 스냅샷 디버거를 사용하도록 설정하려면 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"
}
}
}
}
다음은 스냅샷 디버거 에이전트 엔드포인트의 지원되는 재정의입니다.
속성 | 미국 정부 클라우드: | 중국 클라우드 |
---|---|---|
AgentEndpoint | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
스냅샷 디버거 사용 안 함
Functions 앱에서 스냅샷 디버거를 사용하지 않도록 설정하려면 snapshotConfiguration.isEnabled
속성을 false
로 설정하여 host.json
파일을 업데이트합니다.
{
"version": "2.0",
"logging": {
"applicationInsights": {
"snapshotConfiguration": {
"isEnabled": false
}
}
}
}
다음 단계
- Azure Portal에서 스냅샷을 봅니다.
- Functions 앱에서 사용 사례에 따라 스냅샷 디버거 구성을 사용자 지정합니다. 자세한 내용은 host.json의 스냅샷 구성을 참조하세요.
- 스냅샷 디버거 문제를 해결합니다.