Pregled:
projekt, lahko ga uporabišKonzulaliApolloZa izdelavo konfiguracijskega centra vodič o Consulu kot ASP.NET osnovnem konfiguracijskem centru:
Zahteve: Konfiguracijske informacije APM shranjujemo v Consul middleware, tako da se nam ni treba prijaviti na strežnik in ročno spreminjati konfiguracijske podatke v appsettings.json datoteki.
Začni kot konzul
Začnite consul middleware tako, da najprej uporabite naslednji ukaz:
Namestite Consul povezane vtičnike ASP.NET jedro
V našem projektu sky-apm-demo uporabite nuget za namestitev Consul middleware kot vtičnika za branje konfiguracijskega centra z naslednjim ukazom:
Spremenite metodo CreateHostBuilder v objektu Program, da dodate branje oddaljenih konfiguracijskih informacij Consul, koda je naslednja:
Medtem morate v appsettings.json datoteki nastaviti naslov consul_url, kot sledi:
Dodajte naše konfiguracijske podatke v consul, da odprete platformo za upravljanje spletnih strani:Prijava do hiperpovezave je vidna.Za ustvarjanje sky-apm-demo/appsettings. Development.json ključu je vrednost naslednja:
Ustvarite novo test3 krmilno metodo za branje informacij o naši konfiguraciji consul storitev za enostavno testiranje, kot sledi:
DostopPrijava do hiperpovezave je vidna.Konfiguracijo, ki jo običajno nastavimo, lahko dobimo na naslednji način:
Če pogledate skyapm-20201111.log dnevnike, boste ugotovili, da naslov, kjer SkyApm dostopa do Skywalkinga, ni tisti, ki smo ga konfigurirali, vendarPrivzeto: localhost:11800, kot je prikazano na spodnji sliki:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Informacije] SkyApm.Transport.Grpc.ConnectionManager : Izklop povezave[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Napaka] SkyApm.Transport.Grpc.ConnectionManager : Časovna omejitev strežnika za povezavo.
System.Threading.Tasks.TaskCanceledException: Reached deadline. na Grpc.Core.Channel.WaitForStateChangedAsync(Stanje kanala zadnjičOpazovanostanje, Nullable'1 deadline) na Grpc.Core.Channel.ConnectAsync(Nullable'1 deadline) na SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Preverimo izvorno kodo SkyAPM.Agent.AspNetCore na GitHubu in ugotovimo, da če naš program najprej dodeli privzete nastavitve, nato pa prebere konfiguracijsko datoteko, appsettings.json skywalking.json skyapm.json preglasiti prejšnje privzete vrednosti, kot je prikazano na spodnji sliki:
Kar zadeva konfiguracijo, je postopek nalaganja naslednji:
Kdaj je SkyAPM vzpostavil komunikacijo s Skywalkingom?
Izvorna koda SkyAPM ima ozadje naloge InstrumentationHostedService ob registraciji IHostedService,.NET Core kliče metode StartAsync() in StopAsync() tipa IHostedService med zagonom in ustavljanjem aplikacije。
Lahko se sklicujete na:
Težava je zdaj v tem, da so konfiguracijske informacije, ki jih je določil naš konzul, prepisane z privzeto vrednostjo SkyAPM, in da bi rešili ta problem, moramo spremeniti izvorno kodo, torej prenesemo izvorno kodo SkyAPM na GitHub.
Datoteko ConfigurationFactory spremenite na naslednji način:
Datoteko ConfigurationBuilderExtensions spremenite na naslednji način:
Za spremenjeno izvorno kodo lahko pogledate mojo vejo:Prijava do hiperpovezave je vidna.
Dodatna logična presoja, ko konfiguracija SkyAPM že obstaja, ne uporablja privzete vrednosti,Regenerateprojekte sky-apm-demo in SkyApm.Agent.AspNetCore, kopirajte vse datoteke iz spremenjene knjižnice \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 v naš projekt \bin\Debug\netcoreapp3.1 in jih zamenjajte.Osvežite svoj brskalnik。
Z ogledom apm dnevnikov lahko ugotovite, da so bile konfiguracijske informacije v consulu uspešno prebrane in da je bila komunikacija s Skywalking uspešno vzpostavljena, kot je prikazano na spodnji sliki:
(Konec)
|