Compartir a través de


Habilitación de Snapshot Debugger para aplicaciones .NET y .NET Core en Azure Functions

Actualmente, Snapshot Debugger puede usarse con aplicaciones ASP.NET y ASP.NET Core que se ejecutan en Azure Functions en planes de servicio de Windows.

Se recomienda ejecutar la aplicación en los niveles de servicio Básico o superior al usar Snapshot Debugger. Para la mayoría de las aplicaciones:

  • Los niveles de servicio Gratuito y Compartido no tienen suficiente memoria ni espacio en disco para guardar las instantáneas.
  • El nivel Consumo no está disponible actualmente en Snapshot Debugger.

Snapshot Debugger está preinstalado como parte del entorno de ejecución de Azure Functions, por lo que no es necesario agregar paquetes NuGet ni configuraciones de aplicación adicionales.

Requisito previo

Habilitar la supervisión de Application Insights en la aplicación de funciones.

Habilitación de Snapshot Debugger

Para habilitar Snapshot Debugger en la aplicación de funciones, agregue la propiedad snapshotConfiguration al archivo host.json y vuelva a implementar la función. Por ejemplo:

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

Genere tráfico para la aplicación que pueda desencadenar una excepción. Luego, espere de 10 a 15 minutos para que se empiecen a enviar instantáneas a la instancia de Application Insights.

Puede comprobar que Snapshot Debugger se ha habilitado comprobando los archivos de la aplicación de funciones de .NET. Por ejemplo, en la siguiente aplicación de funciones sencilla de .NET, el .csproj, {Your}Function.csy host.json de la aplicación .NET muestran Snapshot Debugger como habilitado:

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
      }
    }
  }
}

Habilitación de Snapshot Debugger para otras nubes

Actualmente, las únicas regiones que requieren modificaciones en el punto final son Azure Government y Microsoft Azure operado por 21Vianet.

El ejemplo siguiente muestra el archivo host.json actualizado con el punto de conexión del agente en la nube del Gobierno de EE. UU.:

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

Aquí se muestran las invalidaciones admitidas del punto de conexión del agente Snapshot Debugger:

Propiedad Nube del Gobierno de EE. UU. Nube de China
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Deshabilitación de Snapshot Debugger

Para deshabilitar Snapshot Debugger en la aplicación de funciones, actualice el archivo host.json estableciendo la propiedad snapshotConfiguration.isEnabled en false.

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

Pasos siguientes