Přezkoumání:
projektu, můžeš ho použítKonzulneboApolloPro konfigurační centrum je tutoriál o Consulu jako ASP.NET Core konfiguračním centru:
Požadavky: Konfigurační informace APM ukládáme do middleware Consul, takže se nemusíme přihlašovat na server a ručně upravovat konfigurační informace v appsettings.json souboru.
Začni konzulovat
Začněte middleware Consul nejprve pomocí následujícího příkazu:
Nainstalujte pluginy související s Consulem ASP.NET Core
V našem projektu sky-apm-demo použijte nuget k instalaci middleware Consul jako pluginu pro čtení konfiguračního centra pomocí následujícího příkazu:
Upravte metodu CreateHostBuilder v objektu Program tak, aby bylo možné číst vzdálené konfigurační informace Consul, kód je následující:
Mezitím v souboru appsettings.json je potřeba nastavit consul_url adresu následovně:
Přidejte naše konfigurační informace do Consul pro otevření platformy pro správu webu:Přihlášení k hypertextovému odkazu je viditelné.Pro vytvoření sky-apm-demo/appsettings. Development.json klíč je hodnota následující:
Vytvořte novou metodu test3 pro kontrolu informací o konfiguraci konzulárních služeb pro snadné testování, a to následovně:
PřístupPřihlášení k hypertextovému odkazu je viditelné.Konfiguraci, kterou nastavujeme normálně, můžete získat následovně:
Při pohledu na skyapm-20201111.log logy zjistíte, že adresa, kde SkyApm přistupuje ke Skywalkingu, není to, co jsme konfigurovali, aleVýchozí: localhost:11800, jak je znázorněno na obrázku níže:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Informace] SkyApm.Transport.Grpc.ConnectionManager : Vypnutí spojení[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Error] SkyApm.Transport.Grpc.ConnectionManager : Připojení serveru timeout.
System.Threading.Tasks.TaskCanceledException: Reached deadline. na Grpc.Core.Channel.WaitForStateChangedAsync(Stav kanálu naposledyPozorován, termín Nullable'1) at Grpc.Core.Channel.ConnectAsync(Nullable'1 deadline) na SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Zkontrolujeme zdrojový kód SkyAPM.Agent.AspNetCore na GitHubu a zjistíme, že pokud náš program nejprve přiřadí výchozí nastavení a poté přečte konfigurační soubor appsettings.json skywalking.json skyapm.json přepsat předchozí výchozí hodnoty, jak je znázorněno na obrázku níže:
Co se týče konfigurace, proces načítání probíhá následovně:
Kdy tedy SkyAPM navázal komunikaci se Skywalkingem?
Zdrojový kód SkyAPM má při registraci IHostedService na pozadí úkol InstrumentationHostedService,.NET Core volá metody StartAsync() a StopAsync() typu IHostedService při startu a ukončení aplikace。
Můžete se odkázat na:
Problém je nyní v tom, že konfigurační informace nastavené naším konzulem jsou přepsány výchozí hodnotou SkyAPM, a abychom tento problém vyřešili, musíme upravit zdrojový kód, stáhneme zdrojový kód SkyAPM na GitHubu.
Upravte soubor ConfigurationFactory následovně:
Upravte soubor ConfigurationBuilderExtensions následovně:
Pro upravený zdrojový kód se můžete podívat na mou větev:Přihlášení k hypertextovému odkazu je viditelné.
Přidané logické úsudky, pokud konfigurace SkyAPM již existuje, nepoužívá výchozí hodnotu,Regeneraceprojekty sky-apm-demo a SkyApm.Agent.AspNetCore, zkopírujte všechny soubory pod upravenou knihovnou \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 do našeho projektu \bin\Debug\netcoreapp3.1 a nahraďte je.Obnovte svůj prohlížeč。
Při pohledu do APM logů zjistíte, že konfigurační informace v Consulu byly úspěšně přečteny a komunikace se Skywalking byla úspěšně navázána, jak ukazuje obrázek níže:
(Konec)
|