Share via


Criar perfis de contentores do Azure em direto com o Application Insights

Pode ativar o Application Insights Profiler para ASP.NET Core aplicação em execução no contentor quase sem código. Para ativar o Application Insights Profiler na sua instância de contentor, tem de:

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

Neste artigo, irá aprender sobre as várias formas de:

  • Instale o pacote NuGet no projeto.
  • Defina a variável de ambiente através do orquestrador (como o Kubernetes).
  • Saiba mais sobre as considerações de segurança em torno da implementação de produção, como proteger a chave de instrumentação do Application Insights.

Pré-requisitos

Configurar o ambiente

  1. Clone e utilize o seguinte projeto de exemplo:

    git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
    
  2. Aceda ao exemplo da Aplicação de Contentor:

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

    dotnet new mvc -n EnableServiceProfilerForContainerApp
    

    Adicionámos um atraso no Controllers/WeatherForecastController.cs projeto para simular o estrangulamento.

    [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 recolher os rastreios do Profiler:

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

    Adicionar builder.Services.AddApplicationInsightsTelemetry() e builder.Services.AddServiceProfiler() depois do 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();
    

Extrair as imagens de compilação/runtime mais recentes do ASP.NET Core

  1. Aceda ao diretório de exemplo .NET Core 6.0:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. Obtenha as imagens de ASP.NET Core mais recentes:

    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 do Docker e do runtime.

Adicionar a sua chave do Application Insights

  1. Através do recurso do Application Insights na portal do Azure, tome nota da 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 a chave de instrumentação do Application Insights a esta secção de código:

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

Criar e executar a imagem do Docker

  1. Reveja o ficheiro do Docker.

  2. Crie a imagem de exemplo:

    docker build -t profilerapp .
    
  3. Execute o contentor:

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

Ver o contentor através do browser

Para atingir o ponto final, tem duas opções:

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

  • Utilizar curl:

    curl http://localhost:8080/weatherforecast
    

Inspecionar os registos

Opcionalmente, inspecione o registo local para ver se uma sessão de criação de perfis foi concluída:

docker logs testapp

Nos registos locais, tenha em atenção 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.

Ver os rastreios 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 do Application Insights.

  3. Após a conclusão do processo de rastreio, é apresentado o botão Rastreios do Profiler .

    Captura de ecrã que mostra o botão Rastreios do Profiler no painel Desempenho.

Limpar os recursos

Execute o seguinte comando para parar o projeto de exemplo:

docker rm -f testapp

Passos seguintes