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
- Ene Application Insights-Ressource. Notieren Sie sich den Instrumentierungsschlüssel.
- Docker Desktop zum Erstellen von Docker-Images.
- .NET 6 SDK installiert.
Einrichten der Umgebung
Klonen und verwenden Sie das folgende Beispielprojekt:
git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
Wechseln Sie zum Container-App-Beispiel:
cd examples/EnableServiceProfilerForContainerAppNet6
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)); }
Fügen Sie das NuGet-Paket hinzu, um die Profiler-Ablaufverfolgungen zu erfassen:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Aktivieren von Application Insights und Profiler.
Fügen Sie
builder.Services.AddApplicationInsightsTelemetry()
undbuilder.Services.AddServiceProfiler()
nach derWebApplication.CreateBuilder()
-Methode zuProgram.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
Wechseln Sie zum .NET Core 6.0-Beispielverzeichnis:
cd examples/EnableServiceProfilerForContainerAppNet6
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
Fügen Sie Ihren Application Insights-Schlüssel hinzu
Beachten Sie Ihren Application Insights-Instrumentierungsschlüssel über Ihre Application Insights-Ressource im Azure-Portal.
Ö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
Überprüfen Sie die Docker-Datei.
Kompilieren Sie das Beispiel-Image:
docker build -t profilerapp .
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
Warten Sie 2 bis 5 Minuten, damit die Ereignisse in Application Insights aggregiert werden können.
Öffnen Sie den Bereich Leistung in Application Insights.
Nachdem der Ablaufverfolgungsprozess abgeschlossen ist, wird die Schaltfläche Profiler-Ablaufverfolgungen angezeigt.
Bereinigen von Ressourcen
Führen Sie den folgenden Befehl aus, um das Beispielprojekt zu stoppen:
docker rm -f testapp