Esercizio - Usare i dati di telemetria in un progetto .NET Aspire
In questo esercizio vengono usate le API OpenTelemetry per aggiungere dati personalizzati ai log. Vengono esaminati inoltre i log per trovare gli eventi personalizzati.
Installare i prerequisiti
I prerequisiti per questo esercizio sono:
- .NET 8
- Anteprima di Visual Studio 2022
- Docker Desktop
- Carico di lavoro .NET Aspire in Visual Studio
Se questi pacchetti sono già stati installati, è possibile iniziare a usare la registrazione OpenTelemetry.
Installare .NET 8
Seguire questo collegamento a .NET 8 e selezionare il programma di installazione corretto per il sistema operativo. Ad esempio, se si usa Windows 11 e un processore moderno, selezionare x64 .NET 8 SDK per Windows.
Al termine del download, eseguire il programma di installazione e seguire le istruzioni. In una finestra del terminale eseguire il comando seguente per verificare che l'installazione sia riuscita:
dotnet --version
Verrà visualizzato il numero di versione di .NET SDK installato. Ad esempio:
8.0.300-preview.24203.14
Installare Visual Studio 2022 Preview
Seguire questo collegamento di Visual Studio 2022 Preview e selezionare Scarica anteprima. Al termine del download, eseguire il programma di installazione e seguire le istruzioni.
Installare Docker Desktop
Seguire questo collegamento a Docker Desktop e selezionare il programma di installazione corretto per il sistema operativo. Al termine del download, eseguire il programma di installazione e seguire le istruzioni. Per ottenere prestazioni e compatibilità ottimali, usare il back-end WSL 2.
Aprire l'applicazione Docker Desktop e accettare il contratto di servizio.
Installare il carico di lavoro .NET Aspire in Visual Studio
Installare il carico di lavoro .NET Aspire usando l'interfaccia della riga di comando di .NET:
Aprire un terminale.
Aggiornare i carichi di lavoro .NET con questo comando:
dotnet workload update
Verrà visualizzato un messaggio che informa che i carichi di lavoro vengono aggiornati correttamente.
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): .
Installare il carico di lavoro .NET Aspire con questo comando:
dotnet workload install aspire
Verrà visualizzato un messaggio che informa che il carico di lavoro Aspire è stato installato correttamente.
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.
Verificare che il carico di lavoro .NET Aspire sia installato con questo comando:
dotnet workload list
Verranno visualizzati i dettagli del carico di lavoro .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.
Clonare l'app di esempio
Si userà git
ora per ottenere un'app di esempio. Poiché l'app include .NET Aspire, OpenTelemetry è incluso con la registrazione predefinita, le metriche e la traccia distribuita:
Nella riga di comando passare a una cartella di propria scelta in cui è possibile usare il codice.
Eseguire il comando seguente per clonare l'applicazione di esempio Northern Mountains eShop:
git clone -b aspire-telemetry https://github.com/MicrosoftDocs/mslearn-aspire-starter
Registrare un messaggio usando la generazione dell'origine in fase di compilazione
È possibile usare la generazione dell'origine in fase di compilazione per creare automaticamente codice di registrazione con prestazioni elevate. Implementare questa tecnica per ottenere marchi di prodotti:
Aprire Visual Studio e selezionare Apri un progetto o una soluzione.
Spostarsi nella cartella in cui è stato clonato il progetto. Aprire la cartella start, selezionare eShop.aspiretelemetry.slne quindi selezionare Apri.
In Esplora soluzioni espandere AppWeb > Servizi quindi fare doppio clic su CatalogService.cs.
Individuare la riga di codice seguente, che dichiara la classe
CatalogService
:public class CatalogService(HttpClient httpClient)
Per usare la generazione dell'origine in fase di compilazione, è necessario eseguire questa classe
partial
e usare l'inserimento delle dipendenze per ottenere il logger. Modificare la riga in modo che corrisponda al codice seguente:public partial class CatalogService(HttpClient httpClient, ILogger<CatalogService> logger)
Successivamente, in qualsiasi punto della classe
CatalogService
all'esterno di altri metodi, creare un nuovo metodostatic partial
denominato LogGetBrands:public static partial void LogGetBrands(string uri, ILogger logger);
Subito prima di tale riga, aggiungere
LoggerMessageAttribute
e definire il livello di registrazione e il messaggio:[LoggerMessage( EventId = 0, Level = LogLevel.Information, Message = "Getting brands from URI: {uri}")]
Individuare il metodo
GetBrands()
e la seguente riga di codice in esso:var uri = $"{remoteServiceBaseUrl}catalogBrands";
Per chiamare il nuovo metodo di registrazione, inserire il codice seguente dopo tale riga:
LogGetBrands(uri, logger);
Per salvare le modifiche, premere CTRL+S o selezionare File > Salva tutto.
Testare la strumentazione
A questo punto, viene testata la registrazione della generazione dell'origine in fase di compilazione:
In Visual Studio, per avviare l'app in modalità di debug, premere F5 o selezionare Debug > Avvia debug.
Se viene visualizzato il messaggio Avvia Docker Desktop, selezionare Sì. L'app avvia e visualizza il dashboard .NET Aspire in una scheda del browser.
Per effettuare alcune richieste, individuare il progetto webapp nell'elenco Risorse, quindi selezionare una delle relative voci nella colonna Endpoint:
Compare una nuova scheda del browser e viene visualizzata la home page di Northern Mountains. L'elenco dei marchi è incluso sul lato sinistro. Tornare al dashboard .NET Aspire e nel menu a sinistra selezionare Dati strutturati.
Nella casella di testo Filtro digitare Recupero marchi. La pagina mostra l'evento registrato:
Nella colonna Dettagli dell'evento selezionare Visualizza. Il dashboard apre un riquadro inferiore che mostra i dettagli della voce.
Chiudere le schede del browser e in Visual Studio premere MAIUSC + F5 o selezionare Debug > Arresta debug.
Chiudere Visual Studio.