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 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
- Une ressource Application Insights. Notez la clé d’instrumentation.
- Docker Desktop pour générer des images Docker.
- SDK .NET 6 installé.
Configurer l’environnement
Clonez et utilisez l’exemple de projet suivant :
git clone https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore.git
Accédez à l’exemple d’application de conteneur :
cd examples/EnableServiceProfilerForContainerAppNet6
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)); }
Ajoutez le package NuGet pour collecter les traces du Profiler .NET :
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
Activez Application Insights et le Profiler .NET.
Ajoutez
builder.Services.AddApplicationInsightsTelemetry()
etbuilder.Services.AddServiceProfiler()
après laWebApplication.CreateBuilder()
méthode dansProgram.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
Accédez à l’exemple de répertoire .NET Core 6.0 :
cd examples/EnableServiceProfilerForContainerAppNet6
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
Via votre ressource Application Insights dans le portail Azure, prenez note de votre clé d'instrumentation Application Insights.
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
Passez en revue la plateforme Docker.
Générez l’exemple d’image :
docker build -t profilerapp .
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 Profiler .NET
Attendez 2 à 5 minutes que les événements soit agrégés à Application Insights.
Ouvrez le volet Performances dans votre ressource Application Insights.
Une fois le processus de suivi terminé, le bouton Traces du profileur s’affiche.
Nettoyer les ressources
Exécutez la commande suivante pour arrêter le projet d'exemple :
docker rm -f testapp