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
- Um recurso do Application Insights. Tome nota da chave de instrumentação.
- Docker Desktop para criar imagens do Docker.
- SDK .NET 6 instalado.
Configurar o ambiente
Clone e utilize o seguinte projeto de exemplo:
git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
Aceda ao exemplo da Aplicação de Contentor:
cd examples/EnableServiceProfilerForContainerAppNet6
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)); }
Adicione o pacote NuGet para recolher os rastreios do Profiler:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Ative o Application Insights e o Profiler.
Adicionar
builder.Services.AddApplicationInsightsTelemetry()
ebuilder.Services.AddServiceProfiler()
depois doWebApplication.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();
Extrair as imagens de compilação/runtime mais recentes do ASP.NET Core
Aceda ao diretório de exemplo .NET Core 6.0:
cd examples/EnableServiceProfilerForContainerAppNet6
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
Através do recurso do Application Insights na portal do Azure, tome nota da chave de instrumentação do Application Insights.
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
Reveja o ficheiro do Docker.
Crie a imagem de exemplo:
docker build -t profilerapp .
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
Aguarde 2 a 5 minutos para que os eventos possam ser agregados ao Application Insights.
Abra o painel Desempenho no recurso do Application Insights.
Após a conclusão do processo de rastreio, é apresentado o botão Rastreios do Profiler .
Limpar os recursos
Execute o seguinte comando para parar o projeto de exemplo:
docker rm -f testapp