Włączanie programu .NET Profiler w kontenerach platformy Azure
Profiler usługi Application Insights dla platformy .NET można włączyć w aplikacjach uruchomionych w kontenerze prawie bez kodu. Aby włączyć program .NET Profiler w wystąpieniu kontenera, należy wykonać następujące kroki:
- Dodaj odwołanie do
Microsoft.ApplicationInsights.Profiler.AspNetCore
pakietu NuGet. - Zaktualizuj kod, aby włączyć profiler dla platformy .NET.
- Skonfiguruj klucz instrumentacji usługi Application Insights.
Z tego artykułu dowiesz się więcej o różnych sposobach:
- Zainstaluj pakiet NuGet w projekcie.
- Ustaw zmienną środowiskową za pośrednictwem orkiestratora (na przykład Kubernetes).
- Poznaj zagadnienia dotyczące zabezpieczeń związane z wdrażaniem produkcyjnym, takie jak ochrona klucza instrumentacji usługi Application Insights.
Wymagania wstępne
- Zasób usługi Application Insights. Zanotuj klucz instrumentacji.
- Docker Desktop do tworzenia obrazów platformy Docker.
- Zainstalowany zestaw SDK platformy .NET 6.
Konfigurowanie środowiska
Sklonuj i użyj następującego przykładowego projektu:
git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
Przejdź do przykładu aplikacji kontenera:
cd examples/EnableServiceProfilerForContainerAppNet6
W tym przykładzie jest tworzony projekt barebones, wywołując następujące polecenie interfejsu wiersza polecenia:
dotnet new mvc -n EnableServiceProfilerForContainerApp
Dodaliśmy opóźnienie w projekcie w celu symulowania wąskiego
Controllers/WeatherForecastController.cs
gardła.[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)); }
Dodaj pakiet NuGet, aby zebrać ślady programu .NET Profiler:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Włącz usługę Application Insights i program .NET Profiler.
Dodaj
builder.Services.AddApplicationInsightsTelemetry()
metodę ibuilder.Services.AddServiceProfiler()
po metodzie w plikuWebApplication.CreateBuilder()
Program.cs
: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();
Pobieranie najnowszych obrazów kompilacji/środowiska uruchomieniowego platformy ASP.NET Core
Przejdź do przykładowego katalogu platformy .NET Core 6.0:
cd examples/EnableServiceProfilerForContainerAppNet6
Pobierz najnowsze obrazy ASP.NET Core:
docker pull mcr.microsoft.com/dotnet/sdk:6.0 docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Napiwek
Znajdź oficjalne obrazy zestawu Sdk platformy Docker i środowiska uruchomieniowego.
Dodawanie klucza usługi Application Insights
Za pomocą zasobu usługi Application Insights w witrynie Azure Portal zanotuj klucz instrumentacji usługi Application Insights.
Otwórz
appsettings.json
i dodaj klucz instrumentacji usługi Application Insights do tej sekcji kodu:{ "ApplicationInsights": { "InstrumentationKey": "Your instrumentation key" } }
Kompilowanie i uruchamianie obrazu platformy Docker
Przejrzyj plik platformy Docker.
Skompiluj przykładowy obraz:
docker build -t profilerapp .
Uruchom kontener:
docker run -d -p 8080:80 --name testapp profilerapp
Wyświetlanie kontenera za pośrednictwem przeglądarki
Aby trafić do punktu końcowego, masz dwie opcje:
Odwiedź stronę
http://localhost:8080/weatherforecast
w przeglądarce.Użyj narzędzia curl:
curl http://localhost:8080/weatherforecast
Inspekcja dzienników
Opcjonalnie sprawdź dziennik lokalny, aby sprawdzić, czy sesja profilowania zakończyła się:
docker logs testapp
W dziennikach lokalnych zanotuj następujące zdarzenia:
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.
Wyświetlanie śladów profilera platformy .NET
Poczekaj od 2 do 5 minut, aby zdarzenia mogły być agregowane do usługi Application Insights.
Otwórz okienko Wydajność w zasobie usługi Application Insights.
Po zakończeniu procesu śledzenia zostanie wyświetlony przycisk Ślady profilera.
Czyszczenie zasobów
Uruchom następujące polecenie, aby zatrzymać przykładowy projekt:
docker rm -f testapp