Share via


Profiler des conteneurs dynamiques sur Azure avec Application Insights

Vous pouvez activer Application Insights Profiler pour une application ASP.NET Core s’exécutant dans votre conteneur quasiment sans code. Pour activer Application Insights Profiler sur votre instance de conteneur, vous devez :

  • Ajoutez la référence au package NuGet Microsoft.ApplicationInsights.Profiler.AspNetCore.
  • Mettez à jour le code pour activer le profileur.
  • Configurez la clé d’instrumentation Application Insights.

Dans cet article, vous découvrirez les différentes façons d’effectuer les procédures suivantes :

  • Installer le package NuGet dans le projet.
  • Définir la variable d’environnement via l’orchestrateur (comme Kubernetes).
  • Découvrir les considérations de sécurité relatives au déploiement de production, comme la protection de votre clé d’instrumentation Application Insights.

Prérequis

Configurer l’environnement

  1. Clonez et utilisez l’exemple de projet suivant :

    git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
    
  2. Accédez à l’exemple d’application de conteneur :

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  3. Cet exemple est un projet nu créé en appelant la commande CLI suivante :

    dotnet new mvc -n EnableServiceProfilerForContainerApp
    

    Nous avons ajouté un délai dans le projet Controllers/WeatherForecastController.cs pour simuler le goulot d’étranglement.

    [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. Ajoutez le package NuGet pour collecter les traces du profileur :

    dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
    
  5. Activez Application Insights et Profiler.

    Ajoutez builder.Services.AddApplicationInsightsTelemetry() et builder.Services.AddServiceProfiler() après la WebApplication.CreateBuilder() méthode dans 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();
    

Extraire les dernières images de build/runtime ASP.NET Core

  1. Accédez à l’exemple de répertoire .NET Core 6.0 :

    cd examples/EnableServiceProfilerForContainerAppNet6
    
  2. Procédez à l’extraction des dernières images d’ASP.NET Core :

    docker pull mcr.microsoft.com/dotnet/sdk:6.0
    docker pull mcr.microsoft.com/dotnet/aspnet:6.0
    

Conseil

Recherchez les images officielles pour le Kit de développement logiciel (SDK) et le runtime Docker.

Ajouter votre clé Application Insights

  1. Via votre ressource Application Insights dans le portail Azure, prenez note de votre clé d'instrumentation Application Insights.

    Capture d’écran montrant où trouver la clé d’instrumentation dans le portail Azure.

  2. Ouvrez appsettings.json et ajoutez votre clé d’instrumentation Informations Application à cette section de code :

    {
        "ApplicationInsights":
        {
            "InstrumentationKey": "Your instrumentation key"
        }
    }
    

Générer et exécuter l’image Docker

  1. Passez en revue la plateforme Docker.

  2. Générez l’exemple d’image :

    docker build -t profilerapp .
    
  3. Exécutez le conteneur :

    docker run -d -p 8080:80 --name testapp profilerapp
    

Afficher le conteneur via votre navigateur

Pour atteindre le point de terminaison, vous avez deux options :

  • Visitez http://localhost:8080/weatherforecast dans votre navigateur.

  • Utiliser curl :

    curl http://localhost:8080/weatherforecast
    

Inspection des données

Si vous le souhaitez, examinez le journal local pour voir si une session de profilage est terminée :

docker logs testapp

Dans les journaux locaux, notez les événements suivants :

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.

Afficher les traces de Service Profiler

  1. Attendez 2 à 5 minutes que les événements soit agrégés à Application Insights.

  2. Ouvrez le volet Performances dans votre ressource Application Insights.

  3. Une fois le processus de suivi terminé, le bouton Traces du profileur s’affiche.

    Capture d’écran montrant le bouton Traces du profileur à partir du panneau Niveau de performance.

Nettoyer les ressources

Exécutez la commande suivante pour arrêter le projet d'exemple :

docker rm -f testapp

Étapes suivantes