Share via


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

Configuración del entorno

  1. Clone y use el siguiente proyecto de muestra:

    git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
    
  2. Vaya al ejemplo de aplicación de contenedor:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  3. 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));
    }
    
  4. Agregue el paquete NuGet para recopilar los seguimientos de Profiler:

    dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
    
  5. Habilitación de Application Insights y Profiler:

    Agregue builder.Services.AddApplicationInsightsTelemetry() y builder.Services.AddServiceProfiler() después del método WebApplication.CreateBuilder() en Program.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

  1. Vaya al directorio de ejemplo de .NET Core 6.0.:

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. 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
    

Sugerencia

Busca las imágenes oficiales para Docker SDK y runtime.

Agregue la clave de Application Insights

  1. A través del recurso Application Insights en Azure Portal, anote su clave de instrumentación de Application Insights.

    Captura de pantalla que muestra la búsqueda de la clave de instrumentación en el Azure Portal.

  2. 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

  1. Revise el archivo Docker.

  2. Compile la imagen de ejemplo:

    docker build -t profilerapp .
    
  3. 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

  1. Espere de 2 a 5 minutos para que los eventos puedan agregarse a Application Insights.

  2. Abra el panel Rendimiento del recurso Application Insights.

  3. Una vez finalizado el proceso de rastreo, aparecerá el botón Seguimiento de perfiles.

    Captura de pantalla que muestra el botón Seguimiento de perfiles en el panel Rendimiento.

Limpieza de recursos

Ejecute el siguiente comando para detener el proyecto de ejemplo:

docker rm -f testapp

Pasos siguientes