Habilitar o Profiler do .NET em contêineres do Azure
Você pode habilitar Application Insights Profiler para .NET em aplicativos em execução no contêiner quase sem código. Para habilitar o .NET 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 para .NET.
- 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
- 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 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)); }
Adicione o pacote do NuGet para coletar os rastreamentos do Profiler do .NET:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Habilite o Application Insights e o Profiler do .NET.
Adicione
builder.Services.AddApplicationInsightsTelemetry()
ebuilder.Services.AddServiceProfiler()
depois do métodoWebApplication.CreateBuilder()
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();
Efetuar pull das imagens de build/runtime mais recentes do ASP.NET Core
Vá até o diretório de exemplo do .NET Core 6.0:
cd examples/EnableServiceProfilerForContainerAppNet6
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
Adicionar a chave do Application Insights
Por meio do recurso Application Insights no portal do Azure, anote a chave de instrumentação do Application Insights.
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
Experimente 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
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 do .NET
Aguarde 2 a 5 minutos para que os eventos possam ser agregados ao Application Insights.
Abra o painel Desempenho no recurso Application Insights.
Depois que o processo de rastreamento for concluído, o botão Rastreamentos do Profiler será exibido.
Limpar os recursos
Execute o seguinte comando para interromper o projeto de exemplo:
docker rm -f testapp