Delen via


.NET Profiler inschakelen in Azure-containers

U kunt Application Insights Profiler voor .NET inschakelen voor toepassingen die in uw container bijna zonder code worden uitgevoerd. Als u .NET Profiler wilt inschakelen voor uw containerinstantie, moet u het volgende doen:

  • Voeg de verwijzing naar het Microsoft.ApplicationInsights.Profiler.AspNetCore NuGet-pakket toe.
  • Werk de code bij om profiler voor .NET in te schakelen.
  • Stel de Application Insights-instrumentatiesleutel in.

In dit artikel krijgt u informatie over de verschillende manieren waarop u het volgende kunt doen:

  • Installeer het NuGet-pakket in het project.
  • Stel de omgevingsvariabele in via de orchestrator (zoals Kubernetes).
  • Meer informatie over beveiligingsoverwegingen voor productie-implementatie, zoals het beveiligen van uw Application Insights-instrumentatiesleutel.

Vereisten

De omgeving instellen

  1. Kloon en gebruik het volgende voorbeeldproject:

    git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
    
  2. Ga naar het container-app-voorbeeld:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  3. Dit voorbeeld is een barebones-project dat is gemaakt door de volgende CLI-opdracht aan te roepen:

    dotnet new mvc -n EnableServiceProfilerForContainerApp
    

    We hebben vertraging in het Controllers/WeatherForecastController.cs project toegevoegd om het knelpunt te simuleren.

    [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. Voeg het NuGet-pakket toe om de .NET Profiler-traceringen te verzamelen:

    dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
    
  5. Schakel Application Insights en de .NET Profiler in.

    Toevoegen builder.Services.AddApplicationInsightsTelemetry() en builder.Services.AddServiceProfiler() na de WebApplication.CreateBuilder() methode in 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();
    

Haal de nieuwste ASP.NET Core build/runtime-installatiekopieën op

  1. Ga naar de .NET Core 6.0-voorbeeldmap:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. Haal de nieuwste ASP.NET Core-installatiekopieën op:

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

Tip

Zoek de officiële installatiekopieën voor de Docker SDK en runtime.

Uw Application Insights-sleutel toevoegen

  1. Noteer uw Application Insights-instrumentatiesleutel via uw Application Insights-resource in Azure Portal.

    Schermopname van het vinden van de instrumentatiesleutel in Azure Portal.

  2. Open appsettings.json uw Application Insights-instrumentatiesleutel en voeg deze toe aan deze codesectie:

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

De Docker-installatiekopieën bouwen en uitvoeren

  1. Controleer het Docker-bestand.

  2. Bouw de voorbeeldafbeelding:

    docker build -t profilerapp .
    
  3. Voer de container uit:

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

De container weergeven via uw browser

U hebt twee opties om het eindpunt te bereiken:

  • Ga naar http://localhost:8080/weatherforecast uw browser.

  • Curl gebruiken:

    curl http://localhost:8080/weatherforecast
    

De logboeken controleren

Controleer eventueel het lokale logboek om te zien of een sessie van profilering is voltooid:

docker logs testapp

Noteer de volgende gebeurtenissen in de lokale logboeken:

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.

De .NET Profiler-traceringen weergeven

  1. Wacht 2 tot 5 minuten, zodat de gebeurtenissen kunnen worden geaggregeerd naar Application Insights.

  2. Open het deelvenster Prestaties in uw Application Insights-resource.

  3. Nadat het traceringsproces is voltooid, wordt de knop Profiler Traces weergegeven.

    Schermopname van de knop Traceringen van .NET Profiler in het deelvenster Prestaties.

Resources opschonen

Voer de volgende opdracht uit om het voorbeeldproject te stoppen:

docker rm -f testapp

Volgende stappen