Övning – Använda telemetri i ett .NET Aspire-projekt
I den här övningen använder du OpenTelemetry-API:erna för att lägga till anpassade data i loggarna. Du undersöker även loggarna för att hitta dina anpassade händelser.
Installationskrav
Förutsättningarna för den här övningen är:
- .NET 8
- Förhandsversion av Visual Studio 2022
- Docker Desktop
- .NET Aspire-arbetsbelastning i Visual Studio
Om dessa paket redan är installerade kan du gå vidare och börja arbeta med OpenTelemetry-loggning.
Installera .NET 8
Följ den här .NET 8-länken och välj rätt installationsprogram för operativsystemet. Om du till exempel använder Windows 11 och en modern processor väljer du X64 .NET 8 SDK för Windows.
När nedladdningen är klar kör du installationsprogrammet och följer anvisningarna. I ett terminalfönster kör du följande kommando för att kontrollera att installationen lyckades:
dotnet --version
Du bör se versionsnumret för .NET SDK som du har installerat. Till exempel:
8.0.300-preview.24203.14
Installera Visual Studio 2022 Preview
Följ den här Visual Studio 2022 Preview-länken och välj Ladda ned förhandsversion. När nedladdningen är klar kör du installationsprogrammet och följer anvisningarna.
Installera Docker Desktop
Följ den här Docker Desktop-länken och välj rätt installationsprogram för operativsystemet. När nedladdningen är klar kör du installationsprogrammet och följer anvisningarna. Använd WSL 2-serverdelen för bästa prestanda och kompatibilitet.
Öppna Docker Desktop-programmet och godkänn tjänstavtalet.
Installera .NET Aspire-arbetsbelastningen i Visual Studio
Installera .NET Aspire-arbetsbelastningen med .NET CLI:
Öppna en terminal.
Uppdatera .NET-arbetsbelastningar med det här kommandot:
dotnet workload update
Du bör se ett meddelande om att arbetsbelastningarna har uppdaterats.
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): .
Installera .NET Aspire-arbetsbelastningen med det här kommandot:
dotnet workload install aspire
Du bör se ett meddelande om att Aspire-arbetsbelastningen har installerats.
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.
Kontrollera att .NET Aspire-arbetsbelastningen är installerad med det här kommandot:
dotnet workload list
Du bör se information om .NET Aspire-arbetsbelastningen.
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.
Klona exempelappen
Vi använder git
för att hämta en exempelapp. Eftersom appen innehåller .NET Aspire ingår OpenTelemetry med standardloggning, mått och distribuerad spårning:
På kommandoraden bläddrar du till en mapp där du kan arbeta med kod.
Kör följande kommando för att klona exempelprogrammet Northern Mountains eShop :
git clone -b aspire-telemetry https://github.com/MicrosoftDocs/mslearn-aspire-starter
Logga ett meddelande med hjälp av kompilering av tidskälla
Vi kan använda kompilering av tidskällans generering för att skapa högpresterande loggningskod automatiskt. Nu ska vi implementera den tekniken för att få produktmärken:
Öppna Visual Studio och välj Öppna ett projekt eller en lösning.
Bläddra till mappen där du klonade startprojektet. Öppna startmappen, välj eShop.aspiretelemetry.sln och välj sedan Öppna.
Expandera WebApp Services i Solution Explorer och dubbelklicka sedan på CatalogService.cs. >
Leta upp följande kodrad, som deklarerar
CatalogService
klassen:public class CatalogService(HttpClient httpClient)
För att kunna använda kompilering av tidskälla måste vi göra den här klassen
partial
och använda beroendeinmatning för att hämta loggern. Ändra raden så att den matchar den här koden:public partial class CatalogService(HttpClient httpClient, ILogger<CatalogService> logger)
Därefter, var som helst i
CatalogService
klassen utanför andra metoder, skapar du en nystatic partial
metod med namnet LogGetBrands:public static partial void LogGetBrands(string uri, ILogger logger);
Omedelbart före den raden lägger du till
LoggerMessageAttribute
och definierar loggningsnivån och meddelandet:[LoggerMessage( EventId = 0, Level = LogLevel.Information, Message = "Getting brands from URI: {uri}")]
GetBrands()
Leta upp metoden och följande kodrad i den:var uri = $"{remoteServiceBaseUrl}catalogBrands";
Om du vill anropa den nya loggningsmetoden infogar du följande kod efter den raden:
LogGetBrands(uri, logger);
Om du vill spara ändringarna trycker du på CTRL + S eller väljer Spara > alla.
Testa instrumentationen
Nu testar vi loggningen för kompilering av tidskällans generering:
I Visual Studio startar du appen i felsökningsläge genom att trycka på F5 eller välja Felsöka > Starta felsökning.
Om meddelandet Starta Docker Desktop visas väljer du Ja. Appen startar och visar instrumentpanelen .NET Aspire på en webbläsarflik.
Om du vill göra några begäranden letar du upp webappprojektet i listan Resurser och väljer sedan en av dess poster i kolumnen Slutpunkter:
En ny webbläsarflik visas och visar startsidan för Northern Mountains. Listan över varumärken finns till vänster. Växla tillbaka till instrumentpanelen .NET Aspire och välj Strukturerad på den vänstra menyn.
I textrutan Filter skriver du Hämta varumärken. Sidan visar din loggade händelse:
I kolumnen Information för din händelse väljer du Visa. Instrumentpanelen öppnar ett nedre fönster för att visa information om posten.
Stäng webbläsarflikarna och tryck på SKIFT + F5 i Visual Studio eller välj Felsök > stoppa felsökning.
Stäng Visual Studio.