Povolení profileru .NET v kontejnerech Azure
Profiler Application Insights pro .NET můžete povolit u aplikací spuštěných v kontejneru téměř bez kódu. Pokud chcete ve vaší instanci kontejneru povolit profiler .NET, musíte:
- Přidejte odkaz na
Microsoft.ApplicationInsights.Profiler.AspNetCore
balíček NuGet. - Aktualizujte kód tak, aby povolil Profiler pro .NET.
- Nastavte instrumentační klíč Application Insights.
V tomto článku se dozvíte o různých způsobech, jak:
- Nainstalujte balíček NuGet do projektu.
- Nastavte proměnnou prostředí prostřednictvím orchestrátoru (například Kubernetes).
- Seznamte se s aspekty zabezpečení týkajícími se produkčního nasazení, jako je ochrana instrumentačního klíče Application Insights.
Požadavky
- Prostředek Application Insights Poznamenejte si instrumentační klíč.
- Docker Desktop pro vytváření 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 kontejnerové aplikace:
cd examples/EnableServiceProfilerForContainerAppNet6
Tento příklad je holý projekt vytvořený voláním následujícího příkazu rozhraní příkazového řádku:
dotnet new mvc -n EnableServiceProfilerForContainerApp
Přidali jsme zpoždění v
Controllers/WeatherForecastController.cs
projektu pro simulaci kritického bodu.[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 pro shromáždění trasování profileru .NET:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Povolte Application Insights a profiler .NET.
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
Stáhněte si nejnovější image 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 na webu Azure Portal si poznamenejte instrumentační klíč Application Insights.
Otevřete
appsettings.json
a přidejte 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 v prohlížeči
Pokud chcete přejít na koncový bod, máte dvě možnosti:
Navštivte
http://localhost:8080/weatherforecast
prohlížeč.Použití curl:
curl http://localhost:8080/weatherforecast
Kontrola protokolů
Pokud chcete zjistit, jestli relace profilace skončila, zkontrolujte místní protokol:
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í profileru .NET
Počkejte 2 až 5 minut, aby se události mohly agregovat do Application Insights.
Otevřete podokno Výkon v prostředku Application Insights.
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