Esercizio - Usare i dati di telemetria in un progetto .NET Aspire

Completato

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:

  1. Aprire un terminale.

  2. 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): .
    
  3. 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.
    
  4. 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:

  1. Nella riga di comando passare a una cartella di propria scelta in cui è possibile usare il codice.

  2. 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:

  1. Aprire Visual Studio e selezionare Apri un progetto o una soluzione.

  2. Spostarsi nella cartella in cui è stato clonato il progetto. Aprire la cartella start, selezionare eShop.aspiretelemetry.slne quindi selezionare Apri.

  3. In Esplora soluzioni espandere AppWeb > Servizi quindi fare doppio clic su CatalogService.cs.

  4. Individuare la riga di codice seguente, che dichiara la classe CatalogService:

    public class CatalogService(HttpClient httpClient)
    
  5. 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)
    
  6. Successivamente, in qualsiasi punto della classe CatalogService all'esterno di altri metodi, creare un nuovo metodo static partial denominato LogGetBrands:

    public static partial void LogGetBrands(string uri, ILogger logger);
    
  7. 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}")]
    
  8. Individuare il metodo GetBrands() e la seguente riga di codice in esso:

    var uri = $"{remoteServiceBaseUrl}catalogBrands";
    
  9. Per chiamare il nuovo metodo di registrazione, inserire il codice seguente dopo tale riga:

    LogGetBrands(uri, logger);
    
  10. 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:

  1. In Visual Studio, per avviare l'app in modalità di debug, premere F5 o selezionare Debug > Avvia debug.

  2. Se viene visualizzato il messaggio Avvia Docker Desktop, selezionare . L'app avvia e visualizza il dashboard .NET Aspire in una scheda del browser.

  3. Per effettuare alcune richieste, individuare il progetto webapp nell'elenco Risorse, quindi selezionare una delle relative voci nella colonna Endpoint:

    Screenshot che mostra il dashboard .NET Aspire e il percorso dei collegamenti endpoint dell'app Web.

  4. 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.

  5. Nella casella di testo Filtro digitare Recupero marchi. La pagina mostra l'evento registrato:

    Screenshot che mostra gli eventi filtrati nel dashboard .NET Aspire.

  6. Nella colonna Dettagli dell'evento selezionare Visualizza. Il dashboard apre un riquadro inferiore che mostra i dettagli della voce.

  7. Chiudere le schede del browser e in Visual Studio premere MAIUSC + F5 o selezionare Debug > Arresta debug.

  8. Chiudere Visual Studio.