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ê precisará fazer o seguinte:

  • Adicione a referência ao pacote NuGet Microsoft.ApplicationInsights.Profiler.AspNetCore.
  • Defina as variáveis de ambiente para habilitá-lo.

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. Navegue até o exemplo de Aplicativo de Contêiner:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  3. Este exemplo é um projeto bare bone 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 em Startup.cs:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddApplicationInsightsTelemetry(); // Add this line of code to enable Application Insights.
        services.AddServiceProfiler(); // Add this line of code to Enable Profiler
        services.AddControllersWithViews();
    }
    

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

  1. Navegue até o diretório de exemplo do .NET Core 6.0.

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. Efetuar 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 da localização da 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. Examine os Dockerfile.

  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:

  • 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 a folha Desempenho no recurso Application Insights.

  3. Depois que o processo de rastreamento for concluído, você visualizará o botão Rastreamentos do Profiler como abaixo:

    Captura de tela de rastreamentos de perfil na folha de desempenho.

Limpar os recursos

Execute o seguinte comando para interromper o projeto de exemplo:

docker rm -f testapp

Próximas etapas

Saiba como...