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

Nastavení prostředí

  1. Naklonujte a použijte následující ukázkový projekt:

    git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
    
  2. Přejděte na příklad kontejnerové aplikace:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  3. 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));
    }
    
  4. Přidejte balíček NuGet pro shromáždění trasování profileru .NET:

    dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
    
  5. Povolte Application Insights a profiler .NET.

    Přidejte builder.Services.AddApplicationInsightsTelemetry() a builder.Services.AddServiceProfiler() za metodu WebApplication.CreateBuilder() v 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();
    

Stažení nejnovějších imagí sestavení/modulu runtime ASP.NET Core

  1. Přejděte do ukázkového adresáře .NET Core 6.0:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. 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

  1. Prostřednictvím prostředku Application Insights na webu Azure Portal si poznamenejte instrumentační klíč Application Insights.

    Snímek obrazovky znázorňující vyhledání instrumentačního klíče na webu Azure Portal

  2. 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

  1. Zkontrolujte soubor Dockeru.

  2. Sestavte ukázkovou image:

    docker build -t profilerapp .
    
  3. 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

  1. Počkejte 2 až 5 minut, aby se události mohly agregovat do Application Insights.

  2. Otevřete podokno Výkon v prostředku Application Insights.

  3. Po dokončení procesu trasování se zobrazí tlačítko Trasování profileru.

    Snímek obrazovky znázorňující tlačítko trasování profileru .NET v podokně Výkon

Vyčištění prostředků

Spuštěním následujícího příkazu zastavte ukázkový projekt:

docker rm -f testapp

Další kroky