Dela via


Aktivera .NET Profiler i Azure-containrar

Du kan aktivera Application Insights Profiler för .NET på program som körs i containern nästan utan kod. Om du vill aktivera .NET Profiler på containerinstansen måste du:

  • Lägg till referensen Microsoft.ApplicationInsights.Profiler.AspNetCore till NuGet-paketet.
  • Uppdatera koden för att aktivera Profiler för .NET.
  • Konfigurera Application Insights-instrumentationsnyckeln.

I den här artikeln får du lära dig om de olika sätt som du kan:

  • Installera NuGet-paketet i projektet.
  • Ange miljövariabeln via orchestrator (till exempel Kubernetes).
  • Lär dig säkerhetsöverväganden kring produktionsdistribution, som att skydda din Application Insights-instrumentationsnyckel.

Förutsättningar

Konfigurera miljön

  1. Klona och använd följande exempelprojekt:

    git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
    
  2. Gå till exemplet containerapp:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  3. Det här exemplet är ett barebones-projekt som skapats genom att anropa följande CLI-kommando:

    dotnet new mvc -n EnableServiceProfilerForContainerApp
    

    Vi har lagt till fördröjning i Controllers/WeatherForecastController.cs projektet för att simulera flaskhalsen.

    [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));
    }
    
  4. Lägg till NuGet-paketet för att samla in .NET Profiler-spårningarna:

    dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
    
  5. Aktivera Application Insights och .NET Profiler.

    Lägg till builder.Services.AddApplicationInsightsTelemetry() och builder.Services.AddServiceProfiler() efter WebApplication.CreateBuilder() -metoden i 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();
    

Hämta de senaste ASP.NET Core build/runtime-avbildningarna

  1. Gå till exempelkatalogen för .NET Core 6.0:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. Hämta de senaste ASP.NET Core-bilderna:

    docker pull mcr.microsoft.com/dotnet/sdk:6.0
    docker pull mcr.microsoft.com/dotnet/aspnet:6.0
    

Dricks

Hitta de officiella avbildningarna för Docker SDK och runtime.

Lägg till din Application Insights-nyckel

  1. Anteckna application insights-instrumentationsnyckeln via Application Insights-resursen i Azure Portal.

    Skärmbild som visar hur du hittar instrumentationsnyckeln i Azure Portal.

  2. Öppna appsettings.json och lägg till instrumentationsnyckeln för Application Insights i det här kodavsnittet:

    {
        "ApplicationInsights":
        {
            "InstrumentationKey": "Your instrumentation key"
        }
    }
    

Skapa och kör Docker-avbildningen

  1. Granska Docker-filen.

  2. Skapa exempelbilden:

    docker build -t profilerapp .
    
  3. Kör containern:

    docker run -d -p 8080:80 --name testapp profilerapp
    

Visa containern via webbläsaren

För att nå slutpunkten har du två alternativ:

  • Besök http://localhost:8080/weatherforecast i webbläsaren.

  • Använd curl:

    curl http://localhost:8080/weatherforecast
    

Granska loggarna

Du kan också kontrollera den lokala loggen för att se om en session med profilering har slutförts:

docker logs testapp

Observera följande händelser i de lokala loggarna:

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.

Visa .NET Profiler-spårningar

  1. Vänta i 2 till 5 minuter så att händelserna kan aggregeras till Application Insights.

  2. Öppna fönstret Prestanda i Application Insights-resursen.

  3. När spårningsprocessen är klar visas knappen ProfilerSpårningar .

    Skärmbild som visar spårningsknappen .NET Profiler i fönstret Prestanda.

Rensa resurser

Kör följande kommando för att stoppa exempelprojektet:

docker rm -f testapp

Nästa steg