Oefening: telemetrie gebruiken in een .NET Aspire-project
In deze oefening gebruikt u de OpenTelemetry-API's om aangepaste gegevens toe te voegen aan de logboeken. U bekijkt ook de logboeken om uw aangepaste gebeurtenissen te vinden.
Vereiste onderdelen installeren
De vereisten voor deze oefening zijn:
- .NET 8
- Visual Studio 2022 Preview
- Docker Desktop
- .NET Aspire-workload in Visual Studio
Als deze pakketten al zijn geïnstalleerd, kunt u verdergaan met het werken met OpenTelemetry-logboekregistratie.
.NET 8 installeren
Volg deze .NET 8-koppeling en selecteer het juiste installatieprogramma voor uw besturingssysteem. Als u bijvoorbeeld Windows 11 en een moderne processor gebruikt, selecteert u de x64 .NET 8 SDK voor Windows.
Nadat het downloaden is voltooid, voert u het installatieprogramma uit en volgt u de instructies. Voer in een terminalvenster de volgende opdracht uit om te controleren of de installatie is geslaagd:
dotnet --version
U ziet nu het versienummer van de .NET SDK die u hebt geïnstalleerd. Voorbeeld:
8.0.300-preview.24203.14
Visual Studio 2022 Preview installeren
Volg deze koppeling naar Visual Studio 2022 Preview en selecteer Voorbeeld downloaden. Nadat het downloaden is voltooid, voert u het installatieprogramma uit en volgt u de instructies.
Docker Desktop installeren
Volg deze Docker Desktop-koppeling en selecteer het juiste installatieprogramma voor uw besturingssysteem. Nadat het downloaden is voltooid, voert u het installatieprogramma uit en volgt u de instructies. Gebruik de WSL 2-back-end voor de beste prestaties en compatibiliteit.
Open de Docker Desktop-toepassing en accepteer de serviceovereenkomst.
De workload .NET Aspire installeren in Visual Studio
Installeer de .NET Aspire-workload met behulp van de .NET CLI:
Open een terminal.
Werk .NET-workloads bij met deze opdracht:
dotnet workload update
U ziet nu een bericht dat de workloads zijn bijgewerkt.
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): .
Installeer de workload .NET Aspire met deze opdracht:
dotnet workload install aspire
U ziet nu een bericht dat de Workload Aspire is geïnstalleerd.
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.
Controleer of de workload .NET Aspire is geïnstalleerd met deze opdracht:
dotnet workload list
U ziet nu de details van de workload .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.
De voorbeeld-app klonen
Laten we een git
voorbeeld-app verkrijgen. Omdat de app .NET Aspire bevat, is OpenTelemetry opgenomen in standaardlogboekregistratie, metrische gegevens en gedistribueerde tracering:
Blader in de opdrachtregel naar een map van uw keuze waar u met code kunt werken.
Voer de volgende opdracht uit om de Northern Mountains eShop-voorbeeldtoepassing te klonen:
git clone -b aspire-telemetry https://github.com/MicrosoftDocs/mslearn-aspire-starter
Een bericht registreren met het genereren van tijdbronnen compileren
We kunnen het genereren van tijdbronnen compileren gebruiken om automatisch performante logboekregistratiecode te maken. Laten we die techniek implementeren voor het ophalen van productenmerken:
Open Visual Studio en selecteer Een project of oplossing openen.
Blader naar de map waarin u het startersproject hebt gekloond. Open de startmap , selecteer eShop.aspiretelemetry.sln en selecteer vervolgens Openen.
Vouw in Solution Explorer WebApp > Services uit en dubbelklik op CatalogService.cs.
Zoek de volgende coderegel, die de
CatalogService
klasse declareert:public class CatalogService(HttpClient httpClient)
Om compileertijdbrongeneratie te gebruiken, moeten we deze klasse
partial
maken en afhankelijkheidsinjectie gebruiken om de logger te verkrijgen. Wijzig de regel zodat deze overeenkomt met deze code:public partial class CatalogService(HttpClient httpClient, ILogger<CatalogService> logger)
Maak vervolgens ergens in de klasse buiten andere methoden een nieuwe
static partial
methode met deCatalogService
naam LogGetBrands:public static partial void LogGetBrands(string uri, ILogger logger);
Voeg direct vóór die regel het
LoggerMessageAttribute
logboekregistratieniveau en het bericht toe en definieer dit:[LoggerMessage( EventId = 0, Level = LogLevel.Information, Message = "Getting brands from URI: {uri}")]
Zoek de
GetBrands()
methode en de volgende coderegel erin:var uri = $"{remoteServiceBaseUrl}catalogBrands";
Als u de nieuwe methode voor logboekregistratie wilt aanroepen, voegt u de volgende code na die regel in:
LogGetBrands(uri, logger);
Als u de wijzigingen wilt opslaan, drukt u op Ctrl+S of selecteert u Alles >opslaan.
De instrumentatie testen
Nu testen we de logboekregistratie voor het genereren van tijdbronnen:
Als u in Visual Studio de app wilt starten in de foutopsporingsmodus, drukt u op F5 of selecteert u Foutopsporing >starten.
Als het bericht Docker Desktop starten wordt weergegeven, selecteert u Ja. De app wordt gestart en het .NET Aspire-dashboard weergegeven op een browsertabblad.
Als u enkele aanvragen wilt doen, zoekt u het web-app-project in de lijst Resources en selecteert u vervolgens een van de vermeldingen in de kolom Eindpunten:
Er wordt een nieuw browsertabblad weergegeven en de startpagina van Northern Mountains wordt weergegeven. De lijst met merken staat aan de linkerkant. Ga terug naar het .NET Aspire-dashboard en selecteer Gestructureerd in het linkermenu.
Typ In het tekstvak Filter merken verkrijgen. Op de pagina wordt de vastgelegde gebeurtenis weergegeven:
Selecteer Weergave in de kolom Details voor uw gebeurtenis. Het dashboard opent een lager deelvenster om de details van de vermelding weer te geven.
Sluit de browsertabbladen en druk in Visual Studio op Shift +F5 of selecteer Foutopsporing stoppen met foutopsporing>.
Visual Studio sluiten.