Cvičení – použití telemetrie v projektu .NET Aspire

Dokončeno

V tomto cvičení použijete rozhraní API OpenTelemetry k přidání vlastních dat do protokolů. Prozkoumáte také protokoly a vyhledáte vlastní události.

Požadavky na instalaci

Požadavky pro toto cvičení:

  • .NET 8
  • Visual Studio 2022 Preview
  • Docker Desktop
  • Úloha .NET Aspire v sadě Visual Studio

Pokud už jsou tyto balíčky nainstalované, můžete přeskočit a začít pracovat s protokolováním OpenTelemetry.

Instalace .NET 8

Postupujte podle tohoto odkazu na .NET 8 a vyberte správný instalační program pro váš operační systém. Pokud například používáte Windows 11 a moderní procesor, vyberte sadu x64 .NET 8 SDK pro Windows.

Po dokončení stahování spusťte instalační program a postupujte podle pokynů. V okně terminálu spusťte následující příkaz a ověřte, že instalace proběhla úspěšně:

dotnet --version

Měli byste vidět číslo verze sady .NET SDK, kterou jste nainstalovali. Příklad:

8.0.300-preview.24203.14

Instalace sady Visual Studio 2022 Preview

Postupujte podle tohoto odkazu sady Visual Studio 2022 Preview a vyberte Stáhnout verzi Preview. Po dokončení stahování spusťte instalační program a postupujte podle pokynů.

Instalace Docker Desktopu

Postupujte podle tohoto odkazu na Docker Desktop a vyberte správný instalační program pro váš operační systém. Po dokončení stahování spusťte instalační program a postupujte podle pokynů. Pro zajištění nejlepšího výkonu a kompatibility použijte back-end WSL 2 .

Otevřete aplikaci Docker Desktop a přijměte smlouvu o poskytování služeb.

Instalace úlohy .NET Aspire v sadě Visual Studio

Nainstalujte úlohu .NET Aspire pomocí rozhraní příkazového řádku .NET:

  1. Otevřete terminál.

  2. Aktualizujte úlohy .NET pomocí tohoto příkazu:

    dotnet workload update
    

    Měla by se zobrazit zpráva, že se úlohy úspěšně aktualizovaly.

    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. Pomocí tohoto příkazu nainstalujte úlohu .NET Aspire:

    dotnet workload install aspire
    

    Měla by se zobrazit zpráva, že úloha Aspire je úspěšně nainstalována.

    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. Pomocí tohoto příkazu ověřte, že je nainstalovaná úloha .NET Aspire:

    dotnet workload list
    

    Měli byste vidět podrobnosti o úloze .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.
    

Klonování ukázkové aplikace

Pojďme použít git k získání ukázkové aplikace. Vzhledem k tomu, že aplikace zahrnuje .NET Aspire, je OpenTelemetry součástí výchozího protokolování, metrik a distribuovaného trasování:

  1. Na příkazovém řádku přejděte do složky podle vašeho výběru, kde můžete pracovat s kódem.

  2. Spuštěním následujícího příkazu naklonujte ukázkovou aplikaci Northern Mountains eShop :

    git clone -b aspire-telemetry https://github.com/MicrosoftDocs/mslearn-aspire-starter
    

Protokolování zprávy pomocí generování zdroje času kompilace

K automatickému vytvoření výkonného kódu protokolování můžeme použít generování zdroje času kompilace. Pojďme tuto techniku implementovat pro získávání značek produktů:

  1. Otevřete Visual Studio a vyberte Otevřít projekt nebo řešení.

  2. Přejděte do složky, do které jste naklonovali počáteční projekt. Otevřete úvodní složku, vyberte eShop.aspiretelemetry.sln a pak vyberte Otevřít.

  3. V Průzkumník řešení rozbalte položku WebApp > Services a poklikejte na CatalogService.cs.

  4. Vyhledejte následující řádek kódu, který deklaruje CatalogService třídu:

    public class CatalogService(HttpClient httpClient)
    
  5. Abychom mohli použít generování zdroje času kompilace, musíme tuto třídu partial nastavit a použít injektáž závislostí k získání protokolovacího nástroje. Upravte řádek tak, aby odpovídal tomuto kódu:

    public partial class CatalogService(HttpClient httpClient, ILogger<CatalogService> logger)
    
  6. Dále kdekoli ve CatalogService třídě mimo jiné metody vytvořte novou static partial metodu s názvem LogGetBrands:

    public static partial void LogGetBrands(string uri, ILogger logger);
    
  7. Bezprostředně před tento řádek přidejte LoggerMessageAttribute úroveň protokolování a zprávu a definujte ji:

    [LoggerMessage(
    EventId = 0,
    Level = LogLevel.Information,
    Message = "Getting brands from URI: {uri}")]
    
  8. Vyhledejte metodu GetBrands() a následující řádek kódu:

    var uri = $"{remoteServiceBaseUrl}catalogBrands";
    
  9. Pokud chcete volat novou metodu protokolování, vložte za tento řádek následující kód:

    LogGetBrands(uri, logger);
    
  10. Pokud chcete uložit změny, stiskněte CTRL+S nebo vyberte Uložit > vše.

Otestování instrumentace

Teď otestujeme protokolování generování zdroje času kompilace:

  1. V sadě Visual Studio spusťte aplikaci v režimu ladění, stiskněte klávesu F5 nebo vyberte > Spustit ladění.

  2. Pokud se zobrazí zpráva Start Docker Desktop , vyberte Ano. Aplikace se spustí a zobrazí řídicí panel .NET Aspire na kartě prohlížeče.

  3. Pokud chcete provést nějaké požadavky, vyhledejte projekt webové aplikace v seznamu Zdroje a vyberte jednu z jejích položek ve sloupci Koncové body :

    Snímek obrazovky zobrazující řídicí panel .NET Aspire a umístění odkazů na koncový bod webové aplikace

  4. Zobrazí se nová karta prohlížeče a zobrazí se domovská stránka Severní hory. Seznam značek je uveden na levé straně. Přepněte zpět na řídicí panel .NET Aspire a v nabídce vlevo vyberte Strukturované.

  5. Do textového pole Filtr zadejte Získání značek. Na stránce se zobrazí zaprotokolovaná událost:

    Snímek obrazovky zobrazující filtrované události na řídicím panelu .NET Aspire

  6. Ve sloupci Podrobnosti události vyberte Zobrazit. Řídicí panel otevře dolní podokno pro zobrazení podrobností o položce.

  7. Zavřete karty prohlížeče a v sadě Visual Studio stiskněte SHIFT+F5 nebo vyberte Ladění > zastavit ladění.

  8. Zavřete Visual Studio.