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 Gratis y Compartido no tienen suficiente memoria ni espacio en disco para guardar las instantáneas.

Requisitos previos

Habilitación de Snapshot Debugger

Si está ejecutando otro tipo de servicio de Azure, aquí encontrará instrucciones para habilitar Snapshot Debugger en otras plataformas compatibles:

Para habilitar Snapshot Debugger en la aplicación de funciones, debe actualizar el archivo host.json agregando la propiedad snapshotConfiguration tal y como se define a continuación y volver a implementar la función.

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

Snapshot Debugger está preinstalado como parte del runtime de Azure Functions, que, de forma predeterminada, está deshabilitado.

Como Snapshot Debugger está incluido en el runtime de Azure Functions, no es necesario agregar paquetes NuGet adicionales ni configuraciones de la aplicación.

Como referencia, para una aplicación de función simple (.NET Core), a continuación se muestra el aspecto que tendrá .csproj, {Your}Function.cs y host.json después de que se haya habilitado Snapshot Debugger en él.

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

Clase Function

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");
        }
    }
}

Archivo de host

{
  "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 de punto de conexión son Azure Government y Azure China.

A continuación se muestra un ejemplo de 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"
      }
    }
  }
}

A continuación 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, solo tiene que actualizar el archivo host.json estableciendo en false la propiedad snapshotConfiguration.isEnabled.

{
  "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. A continuación, 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.