Revízia:
projekt, môžeš ho použiťKonzulaleboApolloNa vytvorenie konfiguračného centra tutoriál o Consul ako ASP.NET Core konfiguračnom centre:
Požiadavky: Konfiguračné informácie APM ukladáme v Consul middleware, takže sa nemusíme prihlasovať na server, aby sme manuálne upravovali konfiguračné informácie v appsettings.json súbore.
Začnite ako konzul
Začnite middleware Consul najprv pomocou nasledujúceho príkazu:
Nainštalujte pluginy súvisiace s Consul ASP.NET Core
V našom projekte sky-apm-demo použite nuget na inštaláciu middleware Consul ako pluginu na čítanie konfiguračného centra pomocou nasledujúceho príkazu:
Upravte metódu CreateHostBuilder v objekte Program tak, aby ste pridali čítanie vzdialených konfiguračných informácií Consul, kód je nasledovný:
Medzitým v appsettings.json súbore musíte nastaviť consul_url adresu nasledovne:
Pridajte naše konfiguračné informácie do Consul, aby ste otvorili platformu na správu webu:Prihlásenie na hypertextový odkaz je viditeľné.Na vytvorenie sky-apm-demo/appsettings. Development.json kľúč je hodnota nasledovná:
Vytvorte novú metódu kontroléra test3 na čítanie informácií o konfigurácii našich konzulárnych služieb pre jednoduché testovanie, nasledovne:
PrístupPrihlásenie na hypertextový odkaz je viditeľné.Môžete získať konfiguráciu, ktorú nastavíme normálne, nasledovne:
Keď sa pozriete na skyapm-20201111.log logy, zistíte, že adresa, kde SkyApm pristupuje k Skywalkingu, nie je taká, akú sme konfigurovali, alePredvolené: localhost:11800, ako je znázornené na obrázku nižšie:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Informácie] SkyApm.Transport.Grpc.ConnectionManager : Vypnutie spojenia[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Chyba] SkyApm.Transport.Grpc.ConnectionManager : Časový limit pripojenia servera.
System.Threading.Tasks.TaskCanceledException: Reached deadline. na Grpc.Core.Channel.WaitForStateChangedAsync(Stav kanála naposledyPozorovanýStav, termín Nullable'1) na Grpc.Core.Channel.ConnectAsync(Nullable'1 deadline) at SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Skontrolujeme zdrojový kód SkyAPM.Agent.AspNetCore na GitHube a zistíme, že ak náš program najprv priradí predvolené nastavenia a potom načíta konfiguračný súbor, appsettings.json skywalking.json skyapm.json prepísať predchádzajúce predvolené hodnoty, ako je znázornené na obrázku nižšie:
Čo sa týka konfigurácie, proces nakladania je nasledovný:
Kedy teda SkyAPM nadviazal komunikáciu so Skywalkingom?
Zdrojový kód SkyAPM má úlohu InstrumentationHostedService pri registrácii IHostedService,.NET Core volá metódy StartAsync() a StopAsync() typu IHostedService počas štartu a zastavenia aplikácie。
Môžete sa odvolať na:
Problém teraz je, že konfiguračné informácie nastavené naším konzulom sú prepísané predvolenou hodnotou SkyAPM, a aby sme tento problém vyriešili, musíme upraviť zdrojový kód, stiahneme zdrojový kód SkyAPM na GitHub.
Upravte súbor ConfigurationFactory nasledovne:
Upravte súbor ConfigurationBuilderExtensions nasledovne:
Pre upravený zdrojový kód sa môžete pozrieť na moju vetvu:Prihlásenie na hypertextový odkaz je viditeľné.
Pridané logické úsudky, keď už konfigurácia SkyAPM existuje, nepoužíva predvolenú hodnotu,Regenerujprojekty sky-apm-demo a SkyApm.Agent.AspNetCore, skopírujte všetky súbory pod upravenou knižnicou \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 priečinka do nášho projektu \bin\Debug\netcoreapp3.1 a nahraďte ich.Obnovte svoj prehliadač。
Pri pohľade na APM logy môžete zistiť, že konfiguračné informácie v Consul boli úspešne prečítané a komunikácia so Skywalking bola úspešne nadviazaná, ako je znázornené na obrázku nižšie:
(Koniec)
|