Activer le Débogueur de capture instantanée pour les applications .NET et .NET Core dans Azure Functions

Le débogueur de capture instantanée fonctionne actuellement pour les applications ASP.NET et ASP.NET Core s’exécutant sur Azure Functions sur des plans de service Windows.

Nous vous recommandons d'exécuter votre application au niveau de service de base ou supérieur lorsque vous utilisez le débogueur de capture instantanée.

Pour la plupart des applications, la mémoire disponible ou l’espace disque avec les niveaux de service Gratuit et Partagé est insuffisant pour enregistrer les captures instantanées.

Prérequis

Activer la surveillance Application Insights dans votre application Azure Functions

Activer le Débogueur de capture instantanée

Pour activer le débogueur de capture instantanée dans votre application Azure Functions, ajoutez la propriété snapshotConfiguration à votre fichier host.json et redéployez votre fonction. Par exemple :

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

Le débogueur de capture instantanée est préinstallé dans le cadre du runtime Azure Functions et est désactivé par défaut. Dans la mesure où il est inclus dans le runtime, vous n’avez pas besoin d’ajouter d’autres packages NuGet ni de paramètres d’application.

Dans l’exemple simple d’application de fonction .NET Core qui suit, le débogueur de capture instantanée est activé sur .csproj, {Your}Function.cs et 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
      }
    }
  }
}

Activer le Débogueur de capture instantanée pour les autres clouds

Seules les régions Azure Government et Microsoft Azure géré par 21Vianet nécessitent actuellement des modifications de leurs points de terminaison.

L’exemple suivant présente host.json mis à jour avec le point de terminaison de l’agent cloud US Government :

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

Voici les valeurs de remplacement du point de terminaison de l’agent débogueur de capture instantanée prises en charge :

Propriété Cloud US Government China Cloud
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Désactiver le Débogueur de capture instantanée

Pour désactiver le débogueur de capture instantanée dans votre application Azure Functions, mettez à jour votre fichier host.json en définissant la propriété snapshotConfiguration.isEnabled sur false.

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

Nous vous recommandons d’avoir le Débogueur de capture instantanée activé sur toutes vos applications afin de faciliter le diagnostic des exceptions d’application.

Étapes suivantes