Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 24815|Odpowiedź: 1

[ASP.NET] ASP.NET Core Link Tracing (3) SkyAPM opiera się na konfiguracji dynamicznej Consul

[Skopiuj link]
Opublikowano 2020-11-11 o 16:13:50 | | | |
Recenzja:

ASP.NET Śledzenie łączy rdzeniowych (1) Zainstaluj samouczek Skywalking
https://www.itsvse.com/thread-9456-1-1.html

ASP.NET Core link tracing (2) wykorzystuje integrację ze SkyAPM
https://www.itsvse.com/thread-9458-1-1.html



projektu, możesz go użyćKonsullubApolloAby zrobić centrum konfiguracyjne, tutorial o Consul jako centrum konfiguracyjnym ASP.NET Core:

Architektura: ASP.NET Core dynamicznie konfiguruje gorące aktualizacje na podstawie Consul
https://www.itsvse.com/thread-9421-1-1.html
Wymagania: Informacje konfiguracyjne APM przechowujemy w oprogramowaniu Consul, dzięki czemu nie musimy logować się na serwer, aby ręcznie modyfikować dane konfiguracyjne w pliku appsettings.json.

Start Consul

Rozpocznij oprogramowanie middleware Consul, najpierw za pomocą następującego polecenia:




Zainstaluj wtyczki związane z Consul ASP.NET Core

W naszym projekcie sky-apm-demo użyj nuget do zainstalowania middleware Consul jako wtyczki do odczytu centrum konfiguracyjnego za pomocą następującego polecenia:

Zmodyfikuj metodę CreateHostBuilder w obiekcie Program, aby dodać odczyt zdalnych informacji konfiguracyjnych Consul, a kod wygląda następująco:

Tymczasem w pliku appsettings.json musisz skonfigurować adres consul_url, w następujący sposób:



Dodaj nasze dane konfiguracyjne do Consul, aby otworzyć platformę zarządzania stroną:Logowanie do linku jest widoczne.Aby tworzyć sky-apm-demo/appsettings. Development.json klucz jest następująca:



Stwórz nową metodę kontrolera test3 do odczytu informacji o konfiguracji usług konsula dla łatwego testowania, w następujący sposób:

DostępLogowanie do linku jest widoczne.Możesz uzyskać konfigurację, którą normalnie ustaliliśmy, w następujący sposób:



Patrząc na logi skyapm-20201111.log, zobaczysz, że adres, na którym SkyApm korzysta ze Skywalking, nie jest tym, co skonfigurowaliśmy, aleDomyślne: localhost:11800, jak pokazano na poniższym rysunku:



2020-11-11 15:32:35.869 +08:00 [My_Service] [Informacje] SkyApm.Transport.Grpc.ConnectionManager : Wyłączenie połączenia[localhost:11800].
2020-11-11 15:32:45.875 +08:00 [My_Service] [Błąd] SkyApm.Transport.Grpc.ConnectionManager : Czas na połączenie serwera.
System.Threading.Tasks.TaskCanceledException: Reached deadline.
   na Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 deadline)
   na Grpc.Core.Channel.ConnectAsync(Nullable'1 deadline)
   na stronie SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync()
Sprawdzamy kod źródłowy SkyAPM.Agent.AspNetCore na GitHubie i okazuje się, że jeśli nasz program najpierw przypisze domyślne ustawienia, a następnie odczyta plik konfiguracyjny appsettings.json skywalking.json skyapm.json nadpisuje wcześniejsze wartości domyślne, jak pokazano na poniższym rysunku:



Jeśli chodzi o konfigurację, proces ładowania wygląda następująco:



Kiedy więc SkyAPM nawiązało kontakt ze Skywalking?



Kod źródłowy SkyAPM posiada zadanie tła InstrumentationHostedService, podczas rejestracji IHostedService,.NET Core wywołuje metody StartAsync() i StopAsync() typu IHostedService, odpowiednio podczas uruchamiania i zatrzymywania aplikacji

Możesz odnieść się do:

Usługa oparta na .NET Core na Linuksie
https://www.itsvse.com/thread-9447-1-1.html
Problem polega teraz na tym, że informacje konfiguracyjne ustawione przez naszego konsula są nadpisywane przez domyślną wartość SkyAPM, a aby rozwiązać ten problem, musimy zmodyfikować kod źródłowy, pobieramy kod źródłowy SkyAPM na GitHub.

Zmodyfikuj plik ConfigurationFactory w następujący sposób:

Zmodyfikuj plik ConfigurationBuilderExtensions w następujący sposób:

Zmodyfikowany kod źródłowy można znaleźć w mojej gałęzi:Logowanie do linku jest widoczne.

Dodana ocena logiczna, gdy konfiguracja SkyAPM już istnieje, nie używa wartości domyślnej,Regenerujprojekty sky-apm-demo i SkyApm.Agent.AspNetCore, skopiuj wszystkie pliki z zmodyfikowanej biblioteki \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 do naszego projektu \bin\Debug\netcoreapp3.1 i zastąp je.Odśwież przeglądarkę

Przeglądając logi APM, można zobaczyć, że informacje konfiguracyjne w Consul zostały pomyślnie odczytane, a komunikacja ze Skywalking została pomyślnie nawiązana, co pokazano na poniższym rysunku:




(Koniec)




Poprzedni:. .NET MySQL Connector Conflicts DbProviderFactories (.NET MySQL connector Conflicts DbP...
Następny:.NET Core wyświetla zarejestrowane usługi i implementacje oraz ich cykle życia
Opublikowano 2023-6-2 o 14:24:31 |
Dobra naklejka
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com