Profilování živých kontejnerů Azure pomocí Application Insights
Profiler Application Insights můžete povolit pro ASP.NET Core aplikaci spuštěnou v kontejneru téměř bez kódu. Pokud chcete v instanci kontejneru povolit profiler Application Insights, musíte:
- Přidejte odkaz na
Microsoft.ApplicationInsights.Profiler.AspNetCore
balíček NuGet. - Aktualizujte kód a povolte profiler.
- Nastavte instrumentační klíč Application Insights.
V tomto článku se dozvíte o různých způsobech:
- Nainstalujte do projektu balíček NuGet.
- Nastavte proměnnou prostředí prostřednictvím orchestrátoru (například Kubernetes).
- Seznamte se s aspekty zabezpečení souvisejícími s produkčním nasazením, jako je ochrana instrumentačního klíče Application Insights.
Požadavky
- Prostředek Application Insights. Poznamenejte si instrumentační klíč.
- Docker Desktop k sestavení imagí Dockeru.
- Nainstalovaná sada .NET 6 SDK .
Nastavení prostředí
Naklonujte a použijte následující ukázkový projekt:
git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
Přejděte na příklad aplikace kontejneru:
cd examples/EnableServiceProfilerForContainerAppNet6
Tento příklad je projekt barebones vytvořený voláním následujícího příkazu rozhraní příkazového řádku:
dotnet new mvc -n EnableServiceProfilerForContainerApp
Do projektu jsme přidali zpoždění,
Controllers/WeatherForecastController.cs
které simuluje kritický bod.[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)); }
Přidejte balíček NuGet, který shromáždí trasování Profileru:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Povolte Application Insights a Profiler.
Přidejte
builder.Services.AddApplicationInsightsTelemetry()
abuilder.Services.AddServiceProfiler()
za metoduWebApplication.CreateBuilder()
vProgram.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();
Stažení nejnovějších imagí sestavení/modulu runtime ASP.NET Core
Přejděte do ukázkového adresáře .NET Core 6.0:
cd examples/EnableServiceProfilerForContainerAppNet6
Stažení nejnovějších imagí ASP.NET Core:
docker pull mcr.microsoft.com/dotnet/sdk:6.0 docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Tip
Vyhledejte oficiální image pro sadu Docker SDK a modul runtime.
Přidání klíče Application Insights
Prostřednictvím prostředku Application Insights v Azure Portal si poznamenejte instrumentační klíč Application Insights.
Otevřete
appsettings.json
a přidejte svůj instrumentační klíč Application Insights do této části kódu:{ "ApplicationInsights": { "InstrumentationKey": "Your instrumentation key" } }
Sestavení a spuštění image Dockeru
Zkontrolujte soubor Dockeru.
Sestavte ukázkovou image:
docker build -t profilerapp .
Spusťte kontejner:
docker run -d -p 8080:80 --name testapp profilerapp
Zobrazení kontejneru prostřednictvím prohlížeče
Pokud chcete přejít na koncový bod, máte dvě možnosti:
Přejděte
http://localhost:8080/weatherforecast
na stránku v prohlížeči.Použijte curl:
curl http://localhost:8080/weatherforecast
Kontrola protokolů
Volitelně můžete zkontrolovat místní protokol a zjistit, jestli se dokončila relace profilace:
docker logs testapp
V místních protokolech si všimněte následujících událostí:
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.
Zobrazení trasování služby Profileru
Počkejte 2 až 5 minut, aby se události mohly agregovat do Application Insights.
V prostředku Application Insights otevřete podokno Výkon .
Po dokončení procesu trasování se zobrazí tlačítko Trasování profileru .
Vyčištění prostředků
Spuštěním následujícího příkazu zastavte ukázkový projekt:
docker rm -f testapp