Generación de perfiles de contenedores de Azure activos con Application Insights
Puede habilitar Application Ideas Profiler para la aplicación de ASP.NET Core que se ejecuta en el contenedor casi sin código. Para habilitar Application Ideas Profiler en la instancia de contenedor, debe hacer lo siguiente:
- Agregue la referencia al paquete NuGet
Microsoft.ApplicationInsights.Profiler.AspNetCore
. - Actualice el código para habilitar Profiler.
- 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 Profiler:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Habilitación de Application Insights y 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 Service 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