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
- 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 .NET-Profiler-Ablaufverfolgungen zu erfassen:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Aktivieren von Application Insights und des .NET-Profilers.
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 .NET-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