Ćwiczenie — używanie danych telemetrycznych w projekcie .NET Aspire
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:
Otwórz terminal.
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): .
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.
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:
W wierszu polecenia przejdź do wybranego folderu, w którym możesz pracować z kodem.
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:
Otwórz program Visual Studio i wybierz pozycję Otwórz projekt lub rozwiązanie.
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.
W Eksplorator rozwiązań rozwiń węzeł WebApp > Services, a następnie kliknij dwukrotnie CatalogService.cs.
Znajdź następujący wiersz kodu, który deklaruje klasę
CatalogService
:public class CatalogService(HttpClient httpClient)
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)
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);
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}")]
Znajdź metodę
GetBrands()
i następujący wiersz kodu w nim:var uri = $"{remoteServiceBaseUrl}catalogBrands";
Aby wywołać nową metodę rejestrowania, wstaw następujący kod po tym wierszu:
LogGetBrands(uri, logger);
Aby zapisać zmiany, naciśnij CTRL + S lub wybierz pozycję Zapisz wszystko.>
Testowanie instrumentacji
Teraz przetestujemy rejestrowanie generowania źródła czasu kompilacji:
W programie Visual Studio, aby uruchomić aplikację w trybie debugowania, naciśnij F5 lub wybierz pozycję Debuguj > rozpocznij debugowanie.
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.
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 :
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.
W polu tekstowym Filter (Filtruj) wpisz Getting brands (Pobieranie marek). Na stronie zostanie wyświetlone zarejestrowane zdarzenie:
W kolumnie Szczegóły zdarzenia wybierz pozycję Wyświetl. Pulpit nawigacyjny otwiera dolne okienko, aby wyświetlić szczegóły wpisu.
Zamknij karty przeglądarki i w programie Visual Studio, naciśnij SHIFT + F5 lub wybierz pozycję Debuguj zatrzymaj > debugowanie.
Zamknij program Visual Studio.