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
- Um recurso do Application Insights. Anote a chave de instrumentação.
- Docker Desktop para criar imagens do Docker.
- SDK do .NET 6 instalado .
Configurar o ambiente
Clone e use o seguinte projeto de exemplo:
git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
Vá para o exemplo de aplicativo de contêiner:
cd examples/EnableServiceProfilerForContainerAppNet6
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)); }
Adicione o pacote NuGet para coletar os rastreamentos do .NET Profiler:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Habilite o Application Insights e o .NET Profiler.
Adicionar
builder.Services.AddApplicationInsightsTelemetry()
ebuilder.Services.AddServiceProfiler()
após oWebApplication.CreateBuilder()
método emProgram.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
Vá para o diretório de exemplo do .NET Core 6.0:
cd examples/EnableServiceProfilerForContainerAppNet6
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
Por meio do recurso do Application Insights no portal do Azure, anote sua chave de instrumentação do Application Insights.
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
Revise o arquivo do Docker.
Crie a imagem de exemplo:
docker build -t profilerapp .
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
Aguarde de 2 a 5 minutos para que os eventos possam ser agregados ao Application Insights.
Abra o painel Desempenho no recurso do Application Insights.
Depois que o processo de rastreamento for concluído, o botão Rastreamentos do Profiler será exibido.
Clean up resources (Limpar recursos)
Execute o seguinte comando para parar o projeto de exemplo:
docker rm -f testapp