Ćwiczenie — używanie danych telemetrycznych w projekcie .NET Aspire

Ukończone

W tym ćwiczeniu użyjesz interfejsów API OpenTelemetry, aby dodać dane niestandardowe do dzienników. Zapoznasz się również z dziennikami, aby znaleźć zdarzenia niestandardowe.

Instalacja wymagań wstępnych

Wymagania wstępne dotyczące tego ćwiczenia są następujące:

  • .NET 8
  • Visual Studio 2022 (wersja zapoznawcza)
  • Docker Desktop
  • Obciążenie .NET Aspire w programie Visual Studio

Jeśli te pakiety są już zainstalowane, możesz przejść do przodu, aby rozpocząć pracę z rejestrowaniem OpenTelemetry.

Instalowanie platformy .NET 8

Postępuj zgodnie z tym linkiem platformy .NET 8 i wybierz prawidłowy instalator dla swojego systemu operacyjnego. Jeśli na przykład używasz systemu Windows 11 i nowoczesnego procesora, wybierz zestaw SDK platformy .NET 8 x64 dla systemu Windows.

Po zakończeniu pobierania uruchom instalatora i postępuj zgodnie z instrukcjami. W oknie terminalu uruchom następujące polecenie, aby sprawdzić, czy instalacja zakończyła się pomyślnie:

dotnet --version

Powinien zostać wyświetlony numer wersji zainstalowanego zestawu .NET SDK. Na przykład:

8.0.300-preview.24203.14

Instalowanie programu Visual Studio 2022 (wersja zapoznawcza)

Postępuj zgodnie z tym linkiem programu Visual Studio 2022 (wersja zapoznawcza) i wybierz pozycję Pobierz wersję zapoznawcza. Po zakończeniu pobierania uruchom instalatora i postępuj zgodnie z instrukcjami.

Instalowanie programu Docker Desktop

Postępuj zgodnie z tym linkiem do programu Docker Desktop i wybierz prawidłowy instalator dla swojego systemu operacyjnego. Po zakończeniu pobierania uruchom instalatora i postępuj zgodnie z instrukcjami. Aby uzyskać najlepszą wydajność i zgodność, użyj zaplecza WSL 2 .

Otwórz aplikację docker Desktop i zaakceptuj umowę serwisową.

Instalowanie obciążenia platformy .NET Aspire w programie Visual Studio

Zainstaluj obciążenie platformy .NET Aspire przy użyciu interfejsu wiersza polecenia platformy .NET:

  1. Otwórz terminal.

  2. Zaktualizuj obciążenia platformy .NET za pomocą tego polecenia:

    dotnet workload update
    

    Powinien zostać wyświetlony komunikat informujący o pomyślnym zaktualizowaniu obciążeń.

    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. Zainstaluj obciążenie platformy .NET Aspire za pomocą tego polecenia:

    dotnet workload install aspire
    

    Powinien zostać wyświetlony komunikat informujący o pomyślnym zainstalowaniu obciążenia Aspire.

    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. Sprawdź, czy obciążenie platformy .NET Aspire jest zainstalowane za pomocą tego polecenia:

    dotnet workload list
    

    Powinny zostać wyświetlone szczegóły obciążenia platformy .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.
    

Klonowanie przykładowej aplikacji

Użyjmy metody git , aby uzyskać przykładową aplikację. Ponieważ aplikacja zawiera platformę .NET Aspire, funkcja OpenTelemetry jest dołączona do domyślnego rejestrowania, metryk i śledzenia rozproszonego:

  1. W wierszu polecenia przejdź do wybranego folderu, w którym możesz pracować z kodem.

  2. Wykonaj następujące polecenie, aby sklonować przykładową aplikację eShop w Górach Północnych:

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

Rejestrowanie komunikatu przy użyciu generowania źródła czasu kompilacji

Możemy użyć generowania źródła czasu kompilacji do automatycznego tworzenia wydajnego kodu rejestrowania. Zaimplementujmy tę technikę uzyskiwania marek produktów:

  1. Otwórz program Visual Studio i wybierz pozycję Otwórz projekt lub rozwiązanie.

  2. Przejdź do folderu, w którym sklonowany został projekt startowy. Otwórz folder Start, wybierz pozycję eShop.aspiretelemetry.sln, a następnie wybierz pozycję Otwórz.

  3. W Eksplorator rozwiązań rozwiń węzeł WebApp > Services, a następnie kliknij dwukrotnie CatalogService.cs.

  4. Znajdź następujący wiersz kodu, który deklaruje klasę CatalogService :

    public class CatalogService(HttpClient httpClient)
    
  5. Aby użyć generowania źródła czasu kompilacji, musimy wprowadzić tę klasę partial i użyć wstrzykiwania zależności w celu uzyskania rejestratora. Zmodyfikuj wiersz tak, aby był zgodny z tym kodem:

    public partial class CatalogService(HttpClient httpClient, ILogger<CatalogService> logger)
    
  6. Następnie w dowolnym miejscu klasy CatalogService poza innymi metodami utwórz nową static partial metodę o nazwie LogGetBrands:

    public static partial void LogGetBrands(string uri, ILogger logger);
    
  7. Bezpośrednio przed tym wierszem LoggerMessageAttribute dodaj i zdefiniuj poziom rejestrowania i komunikat:

    [LoggerMessage(
    EventId = 0,
    Level = LogLevel.Information,
    Message = "Getting brands from URI: {uri}")]
    
  8. Znajdź metodę GetBrands() i następujący wiersz kodu w nim:

    var uri = $"{remoteServiceBaseUrl}catalogBrands";
    
  9. Aby wywołać nową metodę rejestrowania, wstaw następujący kod po tym wierszu:

    LogGetBrands(uri, logger);
    
  10. Aby zapisać zmiany, naciśnij CTRL + S lub wybierz pozycję Zapisz wszystko.>

Testowanie instrumentacji

Teraz przetestujemy rejestrowanie generowania źródła czasu kompilacji:

  1. W programie Visual Studio, aby uruchomić aplikację w trybie debugowania, naciśnij F5 lub wybierz pozycję Debuguj > rozpocznij debugowanie.

  2. Jeśli zostanie wyświetlony komunikat Uruchom program Docker Desktop, wybierz pozycję Tak. Aplikacja uruchamia się i wyświetla pulpit nawigacyjny platformy .NET Aspire na karcie przeglądarki.

  3. Aby wykonać kilka żądań, znajdź projekt aplikacji internetowej na liście Zasoby , a następnie wybierz jeden z jego wpisów w kolumnie Punkty końcowe :

    Zrzut ekranu przedstawiający pulpit nawigacyjny platformy .NET Aspire i lokalizację linków punktu końcowego aplikacji internetowej.

  4. Zostanie wyświetlona nowa karta przeglądarki i zostanie wyświetlona strona główna Gór Północnych. Lista marek znajduje się po lewej stronie. Wróć do pulpitu nawigacyjnego .NET Aspire i w menu po lewej stronie wybierz pozycję Ustrukturyzowana.

  5. W polu tekstowym Filter (Filtruj) wpisz Getting brands (Pobieranie marek). Na stronie zostanie wyświetlone zarejestrowane zdarzenie:

    Zrzut ekranu przedstawiający przefiltrowane zdarzenia na pulpicie nawigacyjnym platformy .NET Aspire.

  6. W kolumnie Szczegóły zdarzenia wybierz pozycję Wyświetl. Pulpit nawigacyjny otwiera dolne okienko, aby wyświetlić szczegóły wpisu.

  7. Zamknij karty przeglądarki i w programie Visual Studio, naciśnij SHIFT + F5 lub wybierz pozycję Debuguj zatrzymaj > debugowanie.

  8. Zamknij program Visual Studio.