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 el nivel 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.

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

Snapshot Debugger está preinstalado como parte del runtime de Azure Functions y de forma predeterminada está deshabilitado. Puesto que se incluye en el entorno de ejecución, no es necesario agregar paquetes NuGet adicionales ni configuración de la aplicación.

En el ejemplo sencillo de la aplicación de funciones de .NET Core siguiente, .csproj, {Your}Function.cs y host.json tienen Snapshot Debugger 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
      }
    }
  }
}

Recomendamos que tenga habilitado Snapshot Debugger en todas las aplicaciones para facilitar el diagnóstico de las excepciones de la aplicación.

Pasos siguientes

  • 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.
  • Vea las instantáneas en Azure Portal.
  • Personalice la configuración de Snapshot Debugger según su caso de uso en la aplicación de funciones. Para obtener más información, vea la configuración de instantáneas en host.json.
  • Por ayuda para solucionar problemas de Snapshot Debugger, consulte la sección Solución de problemas de Snapshot Debugger.