Übung: Verwenden von Telemetrie in einem .NET Aspire-Projekt
In dieser Übung verwenden Sie die OpenTelemetry-APIs, um den Protokollen benutzerdefinierte Daten hinzuzufügen. Außerdem untersuchen Sie die Protokolle, um Ihre benutzerdefinierten Ereignisse zu finden.
Installieren der erforderlichen Komponenten
Die Voraussetzungen für diese Übung sind:
- .NET 8
- Visual Studio 2022 Preview
- Docker Desktop
- .NET Aspire-Workload in Visual Studio
Wenn diese Pakete bereits installiert sind, können Sie die Arbeit mit der OpenTelemetry-Protokollierung gleich beginnen.
Installieren von .NET 8
Folgen Sie diesem .NET 8-Link, und wählen Sie das richtige Installationsprogramm für Ihr Betriebssystem aus. Wenn Sie beispielsweise Windows 11 und einen modernen Prozessor verwenden, wählen Sie das x64 .NET 8 SDK für Windows aus.
Führen Sie nach Abschluss des Downloads das Installationsprogramm aus, und folgen Sie den Anweisungen. Führen Sie in einem Terminalfenster den folgenden Befehl aus, um zu überprüfen, ob die Installation erfolgreich war:
dotnet --version
Die Versionsnummer des .NET SDK, das Sie installiert haben, sollte angezeigt werden. Zum Beispiel:
8.0.300-preview.24203.14
Installieren der Vorschauversion von Visual Studio 2022
Folgen Sie diesem Visual Studio 2022 Preview-Link, und wählen Sie Downloadvorschau aus. Führen Sie nach Abschluss des Downloads das Installationsprogramm aus und folgen Sie den Anweisungen.
Installation von Docker Desktop
Folgen Sie diesem Docker Desktop-Link und wählen Sie das richtige Installationsprogramm für Ihr Betriebssystem aus. Führen Sie nach Abschluss des Downloads das Installationsprogramm aus und folgen Sie den Anweisungen. Für die beste Leistung und Kompatibilität verwenden Sie das WSL 2-Back-End.
Öffnen Sie die Docker Desktop-Anwendung und akzeptieren Sie den Servicevertrag.
Installieren der .NET Aspire-Workload in Visual Studio
Installieren Sie die .NET Aspire-Workload mithilfe der .NET CLI:
Öffnen Sie ein Terminal.
Aktualisieren Sie .NET-Workloads mit diesem Befehl:
dotnet workload update
Es sollte eine Meldung angezeigt werden, dass die Workloads erfolgreich aktualisiert werden.
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): .
Installieren Sie die .NET Aspire-Workload mit diesem Befehl:
dotnet workload install aspire
Es sollte eine Meldung angezeigt werden, dass die Aspire-Workload erfolgreich installiert wurde.
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.
Stellen Sie sicher, dass die .NET Aspire-Workload mit diesem Befehl installiert wird:
dotnet workload list
Die Details der .NET Aspire-Workload sollten angezeigt werden.
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.
Klonen der Beispiel-App
Verwenden wir git
zum Abrufen einer Beispiel-App. Da die App .NET Aspire enthält, ist OpenTelemetry in der Standardprotokollierung, den Metriken und der verteilten Ablaufverfolgung enthalten:
Navigieren Sie in der Befehlszeile zu einem Ordner Ihrer Wahl, in dem Sie mit Code arbeiten können.
Führen Sie den folgenden Befehl aus, um die Northern Mountains eShop-Beispielanwendung zu klonen:
git clone -b aspire-telemetry https://github.com/MicrosoftDocs/mslearn-aspire-starter
Protokollieren einer Meldung mithilfe der Erstellung von Kompilierungszeitquellen
Wir können die Erstellung von Kompilierungszeitquellen verwenden, um performanten Protokollierungscode automatisch zu erstellen. Lassen Sie uns diese Technik zum Abrufen von Produktmarken implementieren:
Öffnen Sie Visual Studio, und wählen Sie Projekt oder Projektmappe öffnen aus.
Navigieren Sie zu dem Ordner, in dem Sie das Startprojekt geklont haben. Öffnen Sie den Ordner start, und wählen Sie eShop.aspiretelemetry.sln und dann Öffnen aus.
Erweitern Sie im Projektmappen-Explorer WebApp > Services, und doppelklicken Sie dann auf CatalogService.cs.
Suchen Sie die folgende Codezeile, die die Klasse
CatalogService
deklariert:public class CatalogService(HttpClient httpClient)
Um die Erstellung von Kompilierungszeitquellen zu verwenden, müssen wir diese
partial
-Klasse erstellen und Abhängigkeitsinjektion verwenden, um die Protokollierung abzurufen. Ändern Sie die Zeile so, dass sie diesem Code entspricht:public partial class CatalogService(HttpClient httpClient, ILogger<CatalogService> logger)
Erstellen Sie als Nächstes an einer beliebigen Stelle in der Klasse
CatalogService
außerhalb anderer Methoden eine neuestatic partial
-Methode mit dem Namen LogGetBrands:public static partial void LogGetBrands(string uri, ILogger logger);
Fügen Sie unmittelbar vor dieser Zeile das
LoggerMessageAttribute
hinzu und definieren Sie die Protokollierungsebene und die Meldung:[LoggerMessage( EventId = 0, Level = LogLevel.Information, Message = "Getting brands from URI: {uri}")]
Suchen Sie die Methode
GetBrands()
und die folgende Codezeile darin:var uri = $"{remoteServiceBaseUrl}catalogBrands";
Fügen Sie nach dieser Zeile den folgenden Code ein, um die neue Protokollierungsmethode aufzurufen:
LogGetBrands(uri, logger);
Wenn Sie Ihre Änderungen speichern möchten, drücken Sie STRG+S oder wählen Sie Datei > Alle speichern aus.
Testen der Instrumentierung
Jetzt testen wir die Protokollierung der Quellgenerierung zur Kompilierzeit:
Drücken Sie in Visual Studio F5, oder wählen Sie Debuggen > Debuggen starten aus, um die App im Debugmodus zu starten.
Wenn die Meldung Docker Desktop starten angezeigt wird, wählen Sie Ja aus. Die App wird gestartet und zeigt das .NET Aspire-Dashboard auf einer Browserregisterkarte an.
Um einige Anforderungen zu stellen, suchen Sie das Webapp-Projekt in der Liste Ressourcen, und wählen Sie dann einen der Einträge in der Spalte Endpoints aus:
Eine neue Browserregisterkarte mit der Northern Mountains-Homepage wird angezeigt. Die Markenliste ist links enthalten. Wechseln Sie zurück zum .NET Aspire-Dashboard, und wählen Sie im Menü auf der linken Seite Strukturiert aus.
Geben Sie im Textfeld Filter Marken abrufen ein. Auf der Seite wird Ihr protokolliertes Ereignis angezeigt:
Wählen Sie in der Spalte Details für Ihr Ereignis die Option Ansicht aus. Das Dashboard öffnet einen unteren Bereich, um die Details des Eintrags anzuzeigen.
Schließen Sie die Browserregisterkarten und drücken Sie in Visual Studio Umschalt+F5 oder wählen Sie Debuggen > Debuggen beenden aus.
Schließen Sie Visual Studio.