Exercice : utiliser la télémétrie dans un projet .NET Aspire
Dans cet exercice, vous utilisez les API OpenTelemetry pour ajouter des données personnalisées aux journaux. Vous examinez également les journaux pour rechercher vos événements personnalisés.
Prérequis à installer
Les prérequis pour cet exercice sont :
- .NET 8
- Préversion de Visual Studio 2022
- Docker Desktop
- Charge de travail .NET Aspire dans Visual Studio
Si ces packages sont déjà installés, vous pouvez passer à l’étape suivante pour commencer à utiliser la journalisation OpenTelemetry.
Installez .NET 8
Suivez ce lien .NET 8 et sélectionnez le programme d’installation approprié pour votre système d’exploitation. Par exemple, si vous utilisez Windows 11 et un processeur moderne, sélectionnez le kit de développement logiciel (SDK) .NET 8 x64 pour Windows.
Une fois le téléchargement terminé, exécutez le programme d’installation et suivez les instructions. Dans une fenêtre de terminal, exécutez la commande suivante pour vérifier que l’installation a réussi :
dotnet --version
Vous devez voir le numéro de version du kit de développement logiciel (SDK) .NET que vous avez installé. Par exemple :
8.0.300-preview.24203.14
Installer la préversion de Visual Studio 2022
Suivez ce lien de préversion de Visual Studio 2022, puis sélectionnez Télécharger la préversion. Une fois le téléchargement terminé, exécutez le programme d’installation et suivez les instructions.
Installer Docker Desktop
Suivez ce lien Docker Desktop, puis sélectionnez le programme d’installation approprié pour votre système d’exploitation. Une fois le téléchargement terminé, exécutez le programme d’installation et suivez les instructions. Pour optimiser les performances et la compatibilité, utilisez le serveur principal WSL 2.
Ouvrez l’application Docker Desktop et acceptez le contrat de service.
Installer la charge de travail .NET Aspire dans Visual Studio
Installez la charge de travail .NET Aspire à l’aide de l’interface CLI .NET :
Ouvrez un terminal.
Mettez à jour les charges de travail .NET avec cette commande :
dotnet workload update
Vous devez voir un message indiquant que les charges de travail sont mises à jour.
No workloads installed for this feature band. To update workloads installed with earlier SDK versions, include the --from-previous-sdk option. Updated advertising manifest microsoft.net.sdk.ios. Updated advertising manifest microsoft.net.workload.mono.toolchain.net6. Updated advertising manifest microsoft.net.sdk.android. Updated advertising manifest microsoft.net.workload.emscripten.net7. Updated advertising manifest microsoft.net.workload.emscripten.net6. Updated advertising manifest microsoft.net.sdk.macos. Updated advertising manifest microsoft.net.workload.emscripten.current. Updated advertising manifest microsoft.net.workload.mono.toolchain.current. Updated advertising manifest microsoft.net.sdk.maui. Updated advertising manifest microsoft.net.workload.mono.toolchain.net7. Updated advertising manifest microsoft.net.sdk.maccatalyst. Updated advertising manifest microsoft.net.sdk.tvos. Updated advertising manifest microsoft.net.sdk.aspire. No workloads installed for this feature band. To update workloads installed with earlier SDK versions, include the --from-previous-sdk option. Successfully updated workload(s): .
Installez la charge de travail .NET Aspire avec cette commande :
dotnet workload install aspire
Vous devriez voir un message indiquant que la charge de travail Aspire est installée avec succès.
Installing Aspire.Hosting.Sdk.Msi.x64 ...... Done Installing Aspire.ProjectTemplates.Msi.x64 ..... Done Installing Aspire.Hosting.Orchestration.win-x64.Msi.x64 ............. Done Installing Aspire.Hosting.Msi.x64 ..... Done Installing Aspire.Dashboard.Sdk.win-x64.Msi.x64 ....... Done Successfully installed workload(s) aspire.
Vérifiez que la charge de travail .NET Aspire est installée avec cette commande :
dotnet workload list
Vous devez voir les détails de la charge de travail .NET Aspire.
Installed Workload Id Manifest Version Installation Source --------------------------------------------------------------------------------------------- aspire 8.0.0/8.0.100 SDK 8.0.300-preview.24203, VS 17.10.34902.84 Use `dotnet workload search` to find additional workloads to install.
Clonage de l’exemple d’application
Utilisons git
pour obtenir un exemple d’application. Étant donné que l’application inclut .NET Aspire, OpenTelemetry est inclus avec la journalisation, les métriques et le suivi distribué par défaut :
Dans la ligne de commande, accédez à un dossier de votre choix dans lequel vous pouvez utiliser du code.
Exécutez la commande suivante pour cloner l’exemple d’application Northern Mountains eShop :
git clone -b aspire-telemetry https://github.com/MicrosoftDocs/mslearn-aspire-starter
Journaliser un message à l’aide de la génération de la source au moment de la compilation
Nous pouvons utiliser la génération de la source au moment de la compilation pour créer automatiquement du code de journalisation performant. Implémentons cette technique pour récupérer des marques de produits :
Ouvrez Visual Studio et sélectionnez Ouvrir un projet ou une solution.
Accédez au dossier dans lequel vous avez cloné le projet de démarrage. Ouvrez le dossier Démarrer, sélectionnez eShop.aspiretelemetry.sln, puis Ouvrir.
Dans l’Explorateur de solutions, développez WebApp > Services, puis double-cliquez sur CatalogService.cs.
Recherchez la ligne de code suivante, qui déclare la classe
CatalogService
:public class CatalogService(HttpClient httpClient)
Pour utiliser la génération de la source au moment de la compilation, nous devons rendre cette classe
partial
et utiliser l’injection de dépendances pour obtenir l’enregistreur d’événements. Modifiez la ligne pour qu’elle corresponde à ce code :public partial class CatalogService(HttpClient httpClient, ILogger<CatalogService> logger)
Ensuite, n’importe où dans la classe
CatalogService
, en dehors d’autres méthodes, créez une méthodestatic partial
nommée LogGetBrands :public static partial void LogGetBrands(string uri, ILogger logger);
Juste avant cette ligne, ajoutez
LoggerMessageAttribute
et définissez le niveau de journalisation et le message :[LoggerMessage( EventId = 0, Level = LogLevel.Information, Message = "Getting brands from URI: {uri}")]
Recherchez la méthode
GetBrands()
et la ligne de code suivante dans la méthode :var uri = $"{remoteServiceBaseUrl}catalogBrands";
Pour appeler votre nouvelle méthode de journalisation, insérez le code suivant après cette ligne :
LogGetBrands(uri, logger);
Pour enregistrer vos modifications, appuyez sur Ctrl + S ou sélectionnez Fichier > Enregistrer tout.
Tester l’instrumentation
À présent, nous allons tester la journalisation de génération de la source au moment de la compilation :
Dans Visual Studio, pour démarrer l’application en mode débogage, appuyez sur F5, ou sélectionnez Débogage > Démarrer le débogage.
Si le message Démarrer Docker Desktop s’affiche, sélectionnez Oui. L’application démarre et affiche le tableau de bord .NET Aspire dans un onglet de navigateur.
Pour effectuer des requêtes, recherchez le projet webapp dans la liste Ressources, puis sélectionnez l’une de ses entrées dans la colonne Points de terminaison :
Un nouvel onglet de navigateur s’affiche avec la page d’accueil de Northern Mountains. La liste des marques est incluse sur le côté gauche. Revenez au tableau de bord .NET Aspire et, sur le menu de gauche, sélectionnez Données structurées.
Dans la zone de texte Filtrer, tapez Récupération de marques. La page affiche votre événement journalisé :
Dans la colonne Détails correspondant à votre événement, sélectionnez Afficher. Le tableau de bord ouvre un volet inférieur avec les détails de l’entrée.
Fermez les onglets du navigateur et, dans Visual Studio, appuyez sur Maj + F5 ou sélectionnez Débogage > Arrêter le débogage.
Fermez Visual Studio.