Peržiūra:
projektas, galite jį naudotiKonsulasarbaApolonasNorėdami atlikti konfigūracijos centrą, pamoka apie konsulą kaip ASP.NET Core konfigūracijos centrą:
Reikalavimai: Mes saugome APM konfigūracijos informaciją Consul tarpinėje programinėje įrangoje, todėl mums nereikia prisijungti prie serverio, kad rankiniu būdu modifikuotume konfigūracijos informaciją appsettings.json faile.
Pradėti konsulas
Paleiskite konsulo tarpinę programinę įrangą pirmiausia naudodami šią komandą:
Įdiekite su "Consul" susijusius papildinius ASP.NET Core
Mūsų sky-apm-demo projekte naudokite nuget, kad įdiegtumėte "Consul" tarpinę programinę įrangą kaip papildinį, skirtą skaityti konfigūracijos centrą naudodami šią komandą:
Modifikuokite CreateHostBuilder metodą programos objekte Norėdami pridėti nuotolinio konsulo konfigūracijos informacijos skaitymą, kodas yra toks:
Tuo tarpu appsettings.json faile turite sukonfigūruoti consul_url adresą taip:
Pridėkite mūsų konfigūracijos informaciją konsului, kad atidarytumėte žiniatinklio valdymo platformą:Hipersaito prisijungimas matomas., kad sukurtumėte sky-apm-demo/appsettings. Development.json rakto vertė yra tokia:
Sukurkite naują test3 valdiklio metodą, kad galėtumėte nuskaityti mūsų konsulo tarnybos konfigūracijos informaciją, kad būtų lengva testuoti, taip:
PrieigaHipersaito prisijungimas matomas.Galite gauti įprastą konfigūraciją taip:
Pažvelgę į skyapm-20201111.log žurnalus, pamatysite, kad adresas, kuriame "SkyApm" pasiekia "Skywalking", yra ne toks, kokį sukonfigūravome, oNumatytasis: localhost:11800, kaip parodyta toliau pateiktame paveikslėlyje:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Informacija] SkyApm.Transport.Grpc.ConnectionManager : Išjungimo ryšys[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Klaida] SkyApm.Transport.Grpc.ConnectionManager : Prisijungimo serverio skirtasis laikas.
System.Threading.Tasks.TaskCanceledException: Reached deadline. adresu Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 terminas) Grpc.Core.Channel.ConnectAsync(Nullable'1 terminas) adresu SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Mes patikriname "SkyAPM.Agent.AspNetCore" šaltinio kodą "GitHub" ir nustatome, kad jei mūsų programa pirmiausia priskiria numatytuosius nustatymus, o tada nuskaito konfigūracijos failą appsettings.json skywalking.json skyapm.json nepaisyti ankstesnių numatytųjų reikšmių, kaip parodyta paveikslėlyje žemiau:
Kalbant apie konfigūraciją, pakrovimo procesas yra toks:
Taigi, kada "SkyAPM" užmezgė ryšį su "Skywalking"?
SkyAPM šaltinio kodas turi InstrumentationHostedService foninę užduotį, registruojant IHostedService,.NET Core iškviečia atitinkamai IHostedService tipo StartAsync() ir StopAsync() metodus programos paleidimo ir sustabdymo metu。
Galite nurodyti:
Dabar problema ta, kad mūsų konsulo nustatyta konfigūracijos informacija yra perrašyta numatytąja "SkyAPM" reikšme, o norėdami išspręsti šią problemą, turime pakeisti šaltinio kodą, atsisiunčiame "SkyAPM" šaltinio kodą iš "GitHub".
Pakeiskite "ConfigurationFactory" failą taip:
Pakeiskite failą ConfigurationBuilderExtensions taip:
Dėl modifikuoto šaltinio kodo galite kreiptis į mano filialą:Hipersaito prisijungimas matomas.
Pridėtas loginis sprendimas, kai SkyAPM konfigūracija jau yra, nenaudoja numatytosios reikšmės,Regeneruotisky-apm-demo ir SkyApm.Agent.AspNetCore projektus, nukopijuokite visus failus pagal modifikuotą biblioteką \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 į mūsų projektą \bin\Debug\netcoreapp3.1 ir pakeiskite juos.Atnaujinkite naršyklę。
Pažvelgę į apm žurnalus, galite pastebėti, kad konsulo konfigūracijos informacija buvo sėkmingai perskaityta ir sėkmingai užmegztas ryšys su "Skywalking", kaip parodyta paveikslėlyje žemiau:
(Pabaiga)
|