Teilen über


Aktivieren des .NET Profiler für Azure-Container

Sie können den Application Insights Profiler für .NET auf Anwendung aktivieren, die in Ihrem Container fast ohne Code ausgeführt wird. Um den .NET-Profiler in Ihrer Containerinstanz zu aktivieren, müssen Sie Folgendes ausführen:

  • Fügen Sie einen Verweis auf das NuGet-Paket Microsoft.ApplicationInsights.Profiler.AspNetCore hinzu.
  • Aktualisieren Sie den Code, um den Profiler für .NET zu aktivieren.
  • Richten Sie den Application Insights-Instrumentierungsschlüssel ein.

In diesem Artikel erfahren Sie mehr über die verschiedenen Möglichkeiten, mit denen Sie Folgendes tun können:

  • das NuGet-Paket im Projekt zu installieren.
  • die Umgebungsvariable über den Orchestrator (z. B. Kubernetes) festzulegen.
  • Erfahren Sie mehr über Sicherheitsüberlegungen zur Produktionsbereitstellung, z. B. den Schutz Ihres Application Insights-Instrumentierungsschlüssels.

Voraussetzungen

Einrichten der Umgebung

  1. Klonen und verwenden Sie das folgende Beispielprojekt:

    git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
    
  2. Wechseln Sie zum Container-App-Beispiel:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  3. Dieses Beispiel ist ein Barebones-Projekt, das durch den Aufruf des folgenden CLI-Befehls erstellt wird:

    dotnet new mvc -n EnableServiceProfilerForContainerApp
    

    Beachten Sie, dass wir die Verzögerung im Controllers/WeatherForecastController.cs Projekt hinzugefügt haben, um den Engpass zu simulieren.

    [HttpGet(Name = "GetWeatherForecast")]
    public IEnumerable<WeatherForecast> Get()
    {
        SimulateDelay();
        ...
        // Other existing code.
    }
    private void SimulateDelay()
    {
        // Delay for 500ms to 2s to simulate a bottleneck.
        Thread.Sleep((new Random()).Next(500, 2000));
    }
    
  4. Fügen Sie das NuGet-Paket hinzu, um die .NET-Profiler-Ablaufverfolgungen zu erfassen:

    dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
    
  5. Aktivieren von Application Insights und des .NET-Profilers.

    Fügen Sie builder.Services.AddApplicationInsightsTelemetry() und builder.Services.AddServiceProfiler() nach der WebApplication.CreateBuilder()-Methode zu Program.cs hinzu:

    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddApplicationInsightsTelemetry(); // Add this line of code to enable Application Insights.
    builder.Services.AddServiceProfiler(); // Add this line of code to enable Profiler
    builder.Services.AddControllersWithViews();
    
    var app = builder.Build();
    

Pullen Sie die neuesten ASP.NET Core Build-/Laufzeitimages

  1. Wechseln Sie zum .NET Core 6.0-Beispielverzeichnis:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. Pullen Sie die aktuellsten ASP.NET Core-Images:

    docker pull mcr.microsoft.com/dotnet/sdk:6.0
    docker pull mcr.microsoft.com/dotnet/aspnet:6.0
    

Tipp

Suchen Sie die offiziellen Images für das Docker-SDK und die Runtime.

Fügen Sie Ihren Application Insights-Schlüssel hinzu

  1. Beachten Sie Ihren Application Insights-Instrumentierungsschlüssel über Ihre Application Insights-Ressource im Azure-Portal.

    Screenshot zeigt das Suchen des Instrumentierungsschlüssels im Azure-Portal.

  2. Öffnen Sie appsettings.json und fügen Sie Ihren Application Insights Instrumentierungsschlüssel zu diesem Codeabschnitt hinzu:

    {
        "ApplicationInsights":
        {
            "InstrumentationKey": "Your instrumentation key"
        }
    }
    

Kompilieren und Ausführen des Docker-Images

  1. Überprüfen Sie die Docker-Datei.

  2. Kompilieren Sie das Beispiel-Image:

    docker build -t profilerapp .
    
  3. Führen Sie den Container aus:

    docker run -d -p 8080:80 --name testapp profilerapp
    

Anzeigen des Containers über Ihren Browser

Um den Endpunkt zu erreichen, haben Sie zwei Optionen:

  • Besuchen Sie http://localhost:8080/weatherforecast in Ihrem Browser.

  • Verwenden Sie curl:

    curl http://localhost:8080/weatherforecast
    

Protokolle untersuchen

Überprüfen Sie optional das lokale Protokoll, um festzustellen, ob eine Profilerstellungssitzung abgeschlossen ist:

docker logs testapp

Beachten Sie in den lokalen Protokollen die folgenden Ereignisse:

Starting application insights profiler with instrumentation key: your-instrumentation key # Double check the instrumentation key
Service Profiler session started.               # Profiler started.
Finished calling trace uploader. Exit code: 0   # Uploader is called with exit code 0.
Service Profiler session finished.              # A profiling session is completed.

Anzeigen der .NET-Profiler-Ablaufverfolgungen

  1. Warten Sie 2 bis 5 Minuten, damit die Ereignisse in Application Insights aggregiert werden können.

  2. Öffnen Sie den Bereich Leistung in Application Insights.

  3. Nachdem der Ablaufverfolgungsprozess abgeschlossen ist, wird die Schaltfläche Profiler-Ablaufverfolgungen angezeigt.

    Screenshot zeigt die Schaltfläche „.NET-Profiler-Ablaufverfolgungen“ im Bereich „Leistung“.

Bereinigen von Ressourcen

Führen Sie den folgenden Befehl aus, um das Beispielprojekt zu stoppen:

docker rm -f testapp

Nächste Schritte