Partilhar via


Habilitar o .NET Profiler em contêineres do Azure

Você pode habilitar o Application Insights Profiler para .NET em aplicativos executados em seu contêiner quase sem código. Para habilitar o .NET Profiler em sua instância de contêiner, você precisa:

  • Adicione a referência ao Microsoft.ApplicationInsights.Profiler.AspNetCore pacote NuGet.
  • Atualize o código para habilitar o Profiler para .NET.
  • Configure a chave de instrumentação do Application Insights.

Neste artigo, você aprenderá sobre as várias maneiras que você pode:

  • Instale o pacote NuGet no projeto.
  • Defina a variável de ambiente através do orquestrador (como o Kubernetes).
  • Aprenda considerações de segurança sobre a implantação de produção, como proteger sua chave de instrumentação do Application Insights.

Pré-requisitos

Configurar o ambiente

  1. Clone e use o seguinte projeto de exemplo:

    git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
    
  2. Vá para o exemplo de aplicativo de contêiner:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  3. Este exemplo é um projeto barebones criado chamando o seguinte comando CLI:

    dotnet new mvc -n EnableServiceProfilerForContainerApp
    

    Adicionamos atraso no Controllers/WeatherForecastController.cs projeto para simular o gargalo.

    [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. Adicione o pacote NuGet para coletar os rastreamentos do .NET Profiler:

    dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
    
  5. Habilite o Application Insights e o .NET Profiler.

    Adicionar builder.Services.AddApplicationInsightsTelemetry() e builder.Services.AddServiceProfiler() após o WebApplication.CreateBuilder() método em 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();
    

Extraia as imagens de compilação/tempo de execução mais recentes do ASP.NET Core

  1. Vá para o diretório de exemplo do .NET Core 6.0:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. Puxe as imagens mais recentes do ASP.NET Core:

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

Gorjeta

Encontre as imagens oficiais para o SDK e o tempo de execução do Docker.

Adicione sua chave do Application Insights

  1. Por meio do recurso do Application Insights no portal do Azure, anote sua chave de instrumentação do Application Insights.

    Captura de ecrã que mostra a localização da chave de instrumentação no portal do Azure.

  2. Abra appsettings.json e adicione sua chave de instrumentação do Application Insights a esta seção de código:

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

Criar e executar a imagem do Docker

  1. Revise o arquivo do Docker.

  2. Crie a imagem de exemplo:

    docker build -t profilerapp .
    
  3. Execute o contêiner:

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

Ver o contentor através do seu browser

Para atingir o ponto de extremidade, você tem duas opções:

  • Visite http://localhost:8080/weatherforecast no seu navegador.

  • Use a ondulação:

    curl http://localhost:8080/weatherforecast
    

Inspecionar os logs

Opcionalmente, inspecione o log local para ver se uma sessão de criação de perfil terminou:

docker logs testapp

Nos logs locais, observe os seguintes eventos:

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.

Exibir os rastreamentos do .NET Profiler

  1. Aguarde de 2 a 5 minutos para que os eventos possam ser agregados ao Application Insights.

  2. Abra o painel Desempenho no recurso do Application Insights.

  3. Depois que o processo de rastreamento for concluído, o botão Rastreamentos do Profiler será exibido.

    Captura de tela que mostra o botão de rastreamentos do .NET Profiler no painel Desempenho.

Clean up resources (Limpar recursos)

Execute o seguinte comando para parar o projeto de exemplo:

docker rm -f testapp

Próximos passos