Habilitación de .NET Profiler en contenedores de Azure
Puede habilitar Application Insights Profiler para .NET en aplicaciones que se ejecutan en el contenedor casi sin código. Para habilitar .NET Profiler en la instancia de contenedor, debe:
- Agregue la referencia al paquete NuGet
Microsoft.ApplicationInsights.Profiler.AspNetCore
. - Actualice el código para habilitar Profiler para .NET.
- Configure la clave de instrumentación de Application Insights.
En este artículo le explicamos cómo hacerlo:
- Instale el paquete NuGet en el proyecto.
- Establezca la variable de entorno a través del orquestador (como Kubernetes).
- Obtenga información sobre las consideraciones de seguridad sobre la implementación de producción, como proteger la clave de instrumentación de Application Insights.
Requisitos previos
- Un recurso de Application Insights. Anote la clave de instrumentación.
- Docker Desktop para compilar imágenes de Docker.
- SDK de .NET 6 instalado.
Configuración del entorno
Clone y use el siguiente proyecto de muestra:
git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
Vaya al ejemplo de aplicación de contenedor:
cd examples/EnableServiceProfilerForContainerAppNet6
Este ejemplo es un proyecto básico creado mediante el siguiente comando de la CLI:
dotnet new mvc -n EnableServiceProfilerForContainerApp
Hemos agregado retraso en el proyecto
Controllers/WeatherForecastController.cs
para simular el cuello de botella.[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)); }
Agregue el paquete NuGet para recopilar los seguimientos de .NET Profiler:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Habilite Application Insights y .NET Profiler.
Agregue
builder.Services.AddApplicationInsightsTelemetry()
ybuilder.Services.AddServiceProfiler()
después del métodoWebApplication.CreateBuilder()
enProgram.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();
Extracción de las imágenes de compilación o tiempo de ejecución más recientes de ASP.NET Core
Vaya al directorio de ejemplo de .NET Core 6.0.:
cd examples/EnableServiceProfilerForContainerAppNet6
Extracción de las imágenes más recientes de ASP.NET Core:
docker pull mcr.microsoft.com/dotnet/sdk:6.0 docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Agregue la clave de Application Insights
A través del recurso Application Insights en Azure Portal, anote su clave de instrumentación de Application Insights.
Abra
appsettings.json
y agregue la clave de instrumentación de Application Insights a esta sección de código:{ "ApplicationInsights": { "InstrumentationKey": "Your instrumentation key" } }
Creación y ejecución de la imagen de Docker
Revise el archivo Docker.
Compile la imagen de ejemplo:
docker build -t profilerapp .
Ejecute el contenedor:
docker run -d -p 8080:80 --name testapp profilerapp
Visualización del contenedor a través del explorador
Para acceder al punto de conexión, tienes dos opciones:
En el explorador, visite
http://localhost:8080/weatherforecast
.Use cURL:
curl http://localhost:8080/weatherforecast
Inspección de los registros
De manera opcional, inspeccione el registro local para ver si se ha finalizado una sesión de generación de perfiles:
docker logs testapp
En los registros locales, tenga en cuenta los siguientes 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.
Visualización de los seguimientos de .NET Profiler
Espere de 2 a 5 minutos para que los eventos puedan agregarse a Application Insights.
Abra el panel Rendimiento del recurso Application Insights.
Una vez finalizado el proceso de rastreo, aparecerá el botón Seguimiento de perfiles.
Limpieza de recursos
Ejecute el siguiente comando para detener el proyecto de ejemplo:
docker rm -f testapp