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.
  • Legen Sie zum Aktivieren die Umgebungsvariablen fest.

In diesem Artikel erfahren Sie Ihre verschiedenen Möglichkeiten, um:

  • das NuGet-Paket im Projekt zu installieren.
  • die Umgebungsvariable über den Orchestrator (z. B. Kubernetes) festzulegen.
  • Erfahren Sie mehr über sicherheitsrelevante Ü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. Navigieren Sie zum Container-App-Beispiel:

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

    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 in Startup.cs:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddApplicationInsightsTelemetry(); // Add this line of code to enable Application Insights.
        services.AddServiceProfiler(); // Add this line of code to Enable Profiler
        services.AddControllersWithViews();
    }
    

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

  1. Navigieren Sie zum .NET Core 6.0-Beispielverzeichnis.

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. Pullen Sie die neuesten 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 Docker SDK und Laufzeit.

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 Finden des Instrumentierungsschlüssel in 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. Lesen Sie Dockerfile.

  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 auf den Endpunkt zu treffen, führen Sie eine der folgenden Aktionen aus:

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

  • 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 andernfalls das Blatt Leistung in Application Insights.

  3. Sobald der Ablaufverfolgungsprozess abgeschlossen ist, wird die Schaltfläche "Profiler-Ablaufverfolgungen", wie unten dargestellt, angezeigt:

    Screenshot Profilenüberwachung in Leistungsscheibe.

Bereinigen von Ressourcen

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

docker rm -f testapp

Nächste Schritte

Lernen Sie wie man...