Criar o perfil de contêineres do Azure ao vivo com o Application Insights

Você pode habilitar o aplicativo Application Insights Profiler para ASP.NET Core em execução no contêiner quase sem código. Para habilitar o Application Insights Profiler na instância de contêiner, você precisa fazer o seguinte:

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

Neste artigo, você aprenderá as várias maneiras de fazer o seguinte:

  • Instale o pacote NuGet no projeto.
  • Defina a variável de ambiente por meio do orquestrador (como o Kubernetes).
  • Saiba mais sobre as considerações de segurança a respeito da implantação de produção, como proteger a 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 básico criado ao chamar o seguinte comando da CLI:

    dotnet new mvc -n EnableServiceProfilerForContainerApp
    

    Adicionamos um atraso ao projeto Controllers/WeatherForecastController.cs 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 do NuGet para coletar os rastreamentos do Profiler:

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

    Adicione builder.Services.AddApplicationInsightsTelemetry() e builder.Services.AddServiceProfiler() depois do método WebApplication.CreateBuilder() 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();
    

Efetuar pull das imagens de build/runtime mais recentes do ASP.NET Core

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

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. Efetue p pull das 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
    

Dica

Localize as imagens oficiais do SDK e do runtime do Docker.

Adicionar a chave do Application Insights

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

    Captura de tela que mostra como encontrar a chave de instrumentação no portal do Azure.

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

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

Crie e execute a imagem do Docker

  1. Experimente 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
    

Exibir o contêiner por meio do navegador

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

  • Acesse http://localhost:8080/weatherforecast no navegador ou.

  • Use cURL:

    curl http://localhost:8080/weatherforecast
    

Inspecionar os logs

Como alternativa, inspecione o log local para ver se uma sessão de criação de perfil foi concluída:

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 Service Profiler

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

  2. Abra o painel Desempenho no recurso 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 rastreamento do Profiler no painel Desempenho.

Limpar os recursos

Execute o seguinte comando para interromper o projeto de exemplo:

docker rm -f testapp

Próximas etapas