Partager via


Activer Profiler .NET sur des conteneurs Azure

Vous pouvez activer l'Application Insights Profiler for .NET sur les applications exécutées dans votre conteneur presque sans code. Pour activer Profiler .NET 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 Profiler .NET.
  • Configurez la chaîne de connexion 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écouvrez les considérations de sécurité relatives au déploiement de production, telles que la protection de votre chaîne de connexion 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
    

    Un délai se situe 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 Profiler .NET :

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

    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();
    

    Vous pouvez également ajouter des paramètres profileur personnalisés, le cas échéant.


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 Microsoft Azure, prenez note de votre chaîne de connexion Application Insights.

    Capture d’écran montrant la recherche de la chaîne de connexion dans le portail Azure.

  2. Ouvrez appsettings.json et ajoutez votre chaîne de connexion Application Insights à cette section de code :

    {
        "ApplicationInsights":
        {
            "InstrumentationKey": "Your connection string"
        }
    }
    

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 connection string: your-connection string # Double check the connection string
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.

Résolution des problèmes

Si vous ne parvenez pas à trouver de traces à partir de votre application, suivez les étapes décrites dans ce guide de résolution des problèmes.

Afficher les traces de Profiler .NET

  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 de Profiler .NET à 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