Samouczek: monitorowanie i diagnozowanie aplikacji usługi Service Fabric przy użyciu Szczegółowe informacje aplikacji
Ten samouczek jest częścią piątą w serii. Przedstawiono w nim kroki konfigurowania monitorowania i diagnostyki dla aplikacji ASP.NET Core działającej w klastrze usługi Azure Service Fabric przy użyciu usługi Application Szczegółowe informacje. Dane telemetryczne są zbierane z aplikacji opracowanej w części jednej z serii samouczków.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Konfigurowanie zasobu usługi Application Insights
- Dodawanie usługi Application Insights do usług aplikacji
- Wyświetlanie telemetrii i mapy aplikacji w Szczegółowe informacje aplikacji
- Dodawanie instrumentacji niestandardowej do aplikacji
W serii samouczków pokazano, jak wykonać następujące działania:
- Kompilowanie aplikacji .NET Service Fabric
- Wdrażanie aplikacji w klastrze zdalnym
- Dodawanie punktu końcowego HTTPS do usługi frontonu platformy ASP.NET Core
- Konfigurowanie ciągłej integracji/ciągłego wdrażania przy użyciu usługi Azure Pipelines
- Konfigurowanie monitorowania i diagnostyki aplikacji (w tym samouczku)
Wymagania wstępne
Przed rozpoczęciem tego samouczka:
- Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto.
- Zainstaluj program Visual Studio 2019, w tym pakiet roboczy Programowanie na platformie Azure oraz pakiet roboczy ASP.NET i tworzenie aplikacji internetowych.
- Zainstaluj zestaw SDK usługi Service Fabric.
Pobieranie przykładowej aplikacji do głosowania
Jeśli nie skompilujesz przykładowej aplikacji voting w części jednej z tej serii samouczków, możesz ją pobrać. W oknie polecenia lub terminalu uruchom następujące polecenie, aby sklonować przykładowe repozytorium aplikacji na komputer lokalny:
git clone https://github.com/Azure-Samples/service-fabric-dotnet-quickstart
Konfigurowanie zasobu usługi Application Insights
Szczegółowe informacje aplikacji to platforma zarządzania wydajnością aplikacji platformy Azure. Zalecamy używanie Szczegółowe informacje aplikacji do monitorowania i diagnostyki aplikacji w usłudze Service Fabric.
Aby utworzyć zasób Szczegółowe informacje aplikacji, przejdź do witryny Azure Portal. Wybierz pozycję Utwórz zasób. W menu portalu wybierz pozycję Monitorowanie i diagnostyka. W kolumnie Popularne usługi platformy Azure w obszarze Aplikacja Szczegółowe informacje wybierz pozycję Utwórz.
Wprowadź lub wybierz wartości w polach Subskrypcja, Grupa zasobów i Nazwa. W obszarze Region wybierz miejsce wdrożenia klastra usługi Service Fabric w przyszłości. W tym samouczku wdrożymy aplikację w klastrze lokalnym, więc region świadczenia usługi Azure jest nieistotny. W polu Typ aplikacji pozostaw wartość ASP.NET aplikacji internetowej.
Po wprowadzeniu lub wybraniu wymaganych informacji wybierz pozycję Utwórz , aby aprowizować zasób. Zasób jest wdrażany w ciągu około jednej minuty.
Dodawanie usługi Application Insights do usług aplikacji
Otwórz program Visual Studio 2019 przy użyciu opcji Uruchom jako administrator (kliknij prawym przyciskiem myszy ikonę programu Visual Studio w menu Start ). Wybierz pozycję Plik>Otwórz>projekt/rozwiązanie i przejdź do aplikacji do głosowania (utworzonej w części jednego z samouczków lub sklonowanej z usługi GitHub). Otwórz Voting.sln. Jeśli zostanie wyświetlony monit o przywrócenie pakietów NuGet aplikacji, wybierz pozycję Tak.
Aby skonfigurować Szczegółowe informacje aplikacji dla usług VotingWeb i VotingData:
Kliknij prawym przyciskiem myszy nazwę usługi, a następnie wybierz pozycję Dodaj Połączenie ed Services Monitoring with Application Szczegółowe informacje (Monitorowanie> usług>za pomocą aplikacji Szczegółowe informacje).
Uwaga
W zależności od typu projektu po kliknięciu prawym przyciskiem myszy nazwy usługi może być konieczne wybranie pozycji Dodaj, a następnie wybranie pozycji Aplikacja Szczegółowe informacje Telemetria.
Wybierz Rozpocznij.
Zaloguj się do konta używanego dla subskrypcji platformy Azure i wybierz subskrypcję, w której utworzono zasób Application Szczegółowe informacje. Aby znaleźć zasób, w obszarze Zasób przejdź do pozycji Istniejąca aplikacja Szczegółowe informacje zasób. Wybierz pozycję Zarejestruj, aby dodać Szczegółowe informacje aplikacji do usługi.
Wybierz Zakończ.
Uwaga
Pamiętaj, aby wykonać te kroki dla obu usług w aplikacji, aby zakończyć konfigurowanie aplikacji Szczegółowe informacje dla aplikacji. W przypadku obu usług jest używany ten sam zasób usługi Application Insights na potrzeby obsługi żądań przychodzących i wychodzących oraz komunikacji między usługami.
Dodawanie pakietu NuGet Microsoft.ApplicationInsights.ServiceFabric.Native do usług
Aplikacja Szczegółowe informacje ma dwa pakiety NuGet specyficzne dla usługi Service Fabric, których można użyć w zależności od scenariusza. Jeden z nich jest używany z usługami natywnymi usługi Service Fabric, a drugi z kontenerami i plikami wykonywalnymi gościa. W tym przypadku używamy aplikacji Microsoft.Application Szczegółowe informacje. Pakiet NuGet ServiceFabric.Native, aby dowiedzieć się więcej o kontekście usługi. Aby uzyskać więcej informacji na temat zestawu SDK usługi Application Szczegółowe informacje i pakietów NuGet specyficznych dla usługi Service Fabric, zobacz Microsoft Application Szczegółowe informacje for Service Fabric.
Aby skonfigurować pakiet NuGet:
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję Rozwiązanie "Voting" i wybierz polecenie Zarządzaj pakietami NuGet dla rozwiązania.
W oknie dialogowym NuGet — rozwiązanie wybierz pozycję Przeglądaj. Zaznacz pole wyboru Dołącz wersję wstępną.
Uwaga
Może być konieczne zainstalowanie pakietu Microsoft.ServiceFabric.Diagnostics.Internal w taki sam sposób, jeśli nie zostało ono wstępnie zainstalowane przed zainstalowaniem pakietu Szczegółowe informacje aplikacji.
Wyszukaj ciąg Microsoft.Application Szczegółowe informacje. ServiceFabric.Native, a następnie wybierz pakiet NuGet.
W okienku po prawej stronie zaznacz pole wyboru VotingWeb i pole wyboru VotingData . Wybierz Zainstaluj.
W oknie dialogowym Podgląd zmian wybierz przycisk OK, aby zaakceptować licencję. Pakiety NuGet są dodawane do usług.
Następnie skonfiguruj inicjator telemetrii w dwóch usługach. Otwórz VotingWeb.cs i VotingData.cs. Wykonaj następujące kroki w obu plikach kodu:
Dodaj te dwie
using
instrukcje w górnej części każdego pliku po istniejącychusing
instrukcjach:using Microsoft.ApplicationInsights.Extensibility; using Microsoft.ApplicationInsights.ServiceFabric;
W obu plikach w zagnieżdżonej instrukcji
CreateServiceInstanceListeners()
lubCreateServiceReplicaListeners()
w obszarzeConfigureServices
>services
, z innymi zadeklarowanymi usługamireturn
singleton dodaj:.AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext))
Ten kod dodaje
Service Context
dane telemetryczne, aby lepiej zrozumieć źródło danych telemetrycznych w usłudze Application Szczegółowe informacje. Instrukcja zagnieżdżonareturn
w VotingWeb.cs teraz wygląda podobnie do poniższego przykładu:return new WebHostBuilder() .UseKestrel() .ConfigureServices( services => services .AddSingleton<HttpClient>(new HttpClient()) .AddSingleton<FabricClient>(new FabricClient()) .AddSingleton<StatelessServiceContext>(serviceContext) .AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext))) .UseContentRoot(Directory.GetCurrentDirectory()) .UseStartup<Startup>() .UseApplicationInsights() .UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.None) .UseUrls(url) .Build();
W VotingData.cs kod wygląda teraz podobnie do tego przykładu:
return new WebHostBuilder()
.UseKestrel()
.ConfigureServices(
services => services
.AddSingleton<StatefulServiceContext>(serviceContext)
.AddSingleton<IReliableStateManager>(this.StateManager)
.AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext)))
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseApplicationInsights()
.UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.UseUniqueServiceUrl)
.UseUrls(url)
.Build();
Sprawdź dokładnie, czy UseApplicationInsights()
metoda jest wywoływana zarówno w VotingWeb.cs , jak i VotingData.cs , jak pokazano w przykładach.
Uwaga
Ta przykładowa aplikacja używa protokołu HTTP do komunikowania się z usługami. Jeśli tworzysz aplikację przy użyciu usługi Service Fabric Service Remoting V2, dodaj również następujące wiersze w tej samej lokalizacji w kodzie:
ConfigureServices(services => services
...
.AddSingleton<ITelemetryModule>(new ServiceRemotingDependencyTrackingTelemetryModule())
.AddSingleton<ITelemetryModule>(new ServiceRemotingRequestTrackingTelemetryModule())
)
Na tym etapie możesz przystąpić do wdrażania aplikacji. Wybierz pozycję Start (lub wybierz klawisz F5). Program Visual Studio kompiluje i pakuje aplikację, konfiguruje klaster lokalny i wdraża aplikację w klastrze.
Uwaga
Jeśli nie masz zainstalowanej aktualnej wersji zestawu .NET Core SDK, może wystąpić błąd kompilacji.
Po wdrożeniu aplikacji przejdź do localhost:8080
strony , w której jest uruchomiona aplikacja jednostronicowa voting. Zagłosuj na kilka różnych elementów, aby utworzyć przykładowe dane i dane telemetryczne. Na przykład desery!
Możesz również usunąć niektóre opcje głosowania po zakończeniu dodawania kilku głosów.
Wyświetlanie telemetrii i mapy aplikacji w Szczegółowe informacje aplikacji
W witrynie Azure Portal przejdź do zasobu Szczegółowe informacje aplikacji.
Wybierz pozycję Przegląd , aby wrócić do okienka przeglądu zasobu. Wybierz pozycję Wyszukaj , aby wyświetlić przychodzące ślady. Ślady pojawią się w usłudze Application Insights po kilku minutach. Jeśli nie widzisz żadnych śladów, poczekaj minutę, a następnie wybierz przycisk Odśwież .
Przewiń w dół w oknie wyszukiwania, aby wyświetlić wszystkie przychodzące dane telemetryczne dostarczane z aplikacją Szczegółowe informacje. Dla każdej akcji, którą wykonano w aplikacji do głosowania, powinno istnieć wychodzące żądanie PUT z VotingWeb (PUT Votes/Put [name]), przychodzące żądanie PUT z VotingData (PUT VoteData/Put [name]), a następnie parę żądań GET na potrzeby odświeżania wyświetlanych danych. Istnieje również ślad zależności dla protokołu HTTP, localhost
ponieważ te żądania są żądaniami HTTP. Oto przykład tego, co widzisz, aby dowiedzieć się, jak jest dodawane jedno głosowanie:
Możesz wybrać ślad, aby wyświetlić więcej szczegółów na jego temat. Aplikacja Szczegółowe informacje zawiera przydatne informacje o żądaniu, w tym wartości czasu odpowiedzi i adresu URL żądania. Ponieważ dodano pakiet NuGet specyficzny dla usługi Service Fabric, pobierasz również dane dotyczące aplikacji w kontekście klastra usługi Service Fabric w sekcji Dane niestandardowe. Dane obejmują kontekst usługi, dzięki czemu można zobaczyć wartości PartitionID i ReplicaId źródła żądania i lepiej izolować problemy podczas diagnozowania błędów w aplikacji.
Aby przejść do pozycji Mapa aplikacji, wybierz pozycję Mapa aplikacji w menu zasobów w okienku Przegląd lub wybierz ikonę Mapa aplikacji. Na mapie są wyświetlane dwie połączone usługi.
Mapa aplikacji może pomóc lepiej zrozumieć topologię aplikacji, zwłaszcza gdy zaczniesz dodawać usługi, które współpracują ze sobą. Udostępnia ona również podstawowe dane dotyczące współczynników powodzenia żądań i może pomóc zdiagnozować nieudane żądanie, aby zrozumieć, gdzie wystąpiły problemy. Aby dowiedzieć się więcej, zobacz Mapa aplikacji w Szczegółowe informacje aplikacji.
Dodawanie instrumentacji niestandardowej do aplikacji
Mimo że Szczegółowe informacje aplikacji udostępnia dane telemetryczne poza ramkę, możesz dodać instrumentację niestandardową. Być może masz potrzeby biznesowe dotyczące instrumentacji niestandardowej lub chcesz ulepszyć diagnostykę, gdy coś pójdzie nie tak w aplikacji. Zdarzenia niestandardowe i metryki można pozyskiwać przy użyciu interfejsu API Szczegółowe informacje aplikacji.
Następnie dodaj kilka zdarzeń niestandardowych do VoteDataController.cs (w VotingData
>Controllers
), aby śledzić, kiedy głosy są dodawane i usuwane z bazowego votesDictionary
elementu :
Dodaj
using Microsoft.ApplicationInsights;
na końcu innychusing
instrukcji.Zadeklaruj nową wartość dla na
TelemetryClient
początku klasy w obszarze tworzenia klasyIReliableStateManager
:private TelemetryClient telemetry = new TelemetryClient();
.Put()
W funkcji dodaj zdarzenie, które potwierdza dodanie głosu. Dodajtelemetry.TrackEvent($"Added a vote for {name}");
po zakończeniu transakcji bezpośrednio przed instrukcją returnOkResult
.W
Delete()
systemie istnieje "if/else" na podstawie warunku, któryvotesDictionary
zawiera głosy dla określonej opcji głosowania.- Dodaj zdarzenie, które potwierdza usunięcie głosu w instrukcji
if
po :await tx.CommitAsync()
telemetry.TrackEvent($"Deleted votes for {name}");
- Dodaj zdarzenie, aby pokazać, że usunięcie nie miało miejsca w instrukcji
else
przed instrukcjąreturn
:telemetry.TrackEvent($"Unable to delete votes for {name}, voting option not found");
- Dodaj zdarzenie, które potwierdza usunięcie głosu w instrukcji
Oto przykład tego, jak funkcje Put()
i Delete()
mogą wyglądać po dodaniu zdarzeń:
// PUT api/VoteData/name
[HttpPut("{name}")]
public async Task<IActionResult> Put(string name)
{
var votesDictionary = await this.stateManager.GetOrAddAsync<IReliableDictionary<string, int>>("counts");
using (ITransaction tx = this.stateManager.CreateTransaction())
{
await votesDictionary.AddOrUpdateAsync(tx, name, 1, (key, oldvalue) => oldvalue + 1);
await tx.CommitAsync();
}
telemetry.TrackEvent($"Added a vote for {name}");
return new OkResult();
}
// DELETE api/VoteData/name
[HttpDelete("{name}")]
public async Task<IActionResult> Delete(string name)
{
var votesDictionary = await this.stateManager.GetOrAddAsync<IReliableDictionary<string, int>>("counts");
using (ITransaction tx = this.stateManager.CreateTransaction())
{
if (await votesDictionary.ContainsKeyAsync(tx, name))
{
await votesDictionary.TryRemoveAsync(tx, name);
await tx.CommitAsync();
telemetry.TrackEvent($"Deleted votes for {name}");
return new OkResult();
}
else
{
telemetry.TrackEvent($"Unable to delete votes for {name}, voting option not found");
return new NotFoundResult();
}
}
}
Po zakończeniu wprowadzania tych zmian wybierz pozycję Uruchom w aplikacji, aby skompilować i wdrożyć najnowszą wersję. Po zakończeniu wdrażania aplikacji przejdź do strony localhost:8080
. Dodaj i usuń niektóre opcje głosowania. Następnie wróć do zasobu application Szczegółowe informacje, aby wyświetlić ślady najnowszego przebiegu (ślady mogą pojawić się w aplikacji Szczegółowe informacje od 1 do 2 minut). Dla wszystkich głosów, które zostały dodane i usunięte, powinien zostać wyświetlony wpis zdarzenia niestandardowego ze skojarzonymi telemetriami odpowiedzi.
Powiązana zawartość
- Dowiedz się więcej na temat monitorowania i diagnostyki w usłudze Service Fabric.
- Przejrzyj analizę zdarzeń usługi Service Fabric przy użyciu Szczegółowe informacje aplikacji.
- Dowiedz się więcej o Szczegółowe informacje aplikacji.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla