Aktivieren des Momentaufnahmedebuggers für .NET- und .NET Core-Apps in Azure Functions

Der Momentaufnahmedebugger kann derzeit für ASP.NET- und ASP.NET Core-Apps verwendet werden, die unter Azure Functions in Windows-Dienstplänen ausgeführt werden.

Wenn Sie den Momentaufnahmedebugger verwenden, empfehlen wir, Ihre App auf der Dienstebene „Basic“ oder höher auszuführen.

Bei den meisten Anwendungen haben die Dienstebenen „Free“ und „Shared“ nicht genügend Arbeits- oder Festplattenspeicher zum Speichern von Momentaufnahmen.

Voraussetzungen

Aktivieren der Application Insights-Überwachung in Ihrer Functions-App

Aktivieren des Momentaufnahmedebuggers

Um den Momentaufnahmedebugger in Ihrer Functions-App zu aktivieren, fügen Sie die snapshotConfiguration-Eigenschaft zu Ihrer host.json-Datei hinzu und stellen Ihre Funktion erneut bereit. Beispiel:

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

Der Momentaufnahmedebugger ist als Teil der Azure Functions-Runtime vorinstalliert und standardmäßig deaktiviert. Da er in der Runtime enthalten ist, müssen Sie keine zusätzlichen NuGet-Pakete oder Anwendungseinstellungen festlegen.

In der folgenden einfachen .NET Core Functions-App ist der Momentaufnahmedebugger für .csproj, {Your}Function.cs und host.json aktiviert:

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

Aktivieren des Momentaufnahmedebuggers für andere Clouds

Derzeit sind Azure Government und Microsoft Azure operated by 21Vianet die einzigen Regionen, für die Endpunktänderungen erforderlich sind.

Im Folgenden finden Sie ein Beispiel für die Datei host.json, die mit dem Agent-Endpunkt der US Government-Cloud aktualisiert wurde:

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

Im Folgenden finden Sie die unterstützten Überschreibungen des Agent-Endpunkts für den Momentaufnahmedebugger:

Eigenschaft US Government-Cloud China-Cloud
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Deaktivieren des Momentaufnahmedebuggers

Zum Deaktivieren des Momentaufnahmedebuggers in Ihrer Functions-App aktualisieren Sie Ihre host.json-Datei, indem Sie die snapshotConfiguration.isEnabled-Eigenschaft auf false festlegen.

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

Es wird empfohlen, den Momentaufnahmedebugger für alle Ihre Apps zu aktivieren, um die Diagnose von Anwendungsausnahmen zu erleichtern.

Nächste Schritte

  • Generieren Sie Datenverkehr für Ihre Anwendung, der eine Ausnahme auslösen kann. Warten Sie dann 10 bis 15 Minuten, bis die Momentaufnahmen an die Application Insights-Instanz gesendet werden.
  • Weitere Informationen finden Sie unter Momentaufnahmen anzeigen im Azure-Portal.
  • Passen Sie die Konfiguration für den Momentaufnahmedebugger basierend auf Ihrem Anwendungsfall in Ihrer Functions-App an. Weitere Informationen finden Sie unter Momentaufnahmekonfiguration in host.json.
  • Hilfe bei der Behandlung von Problemen mit dem Momentaufnahmedebugger finden Sie unter Problembehandlung für Momentaufnahmedebugger.