Share via


Profilerstellung für Live-Azure-Container mit Application Insights

Sie können den Application Insights Profiler für ASP.NET Core Anwendung aktivieren, die in Ihrem Container fast ohne Code ausgeführt wird. Um den Application Insights 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 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 Profiler-Ablaufverfolgungen zu erfassen:

    dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
    
  5. Aktivieren von Application Insights und Profiler.

    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 Service 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 „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