Recension:
projekt, du kan använda detKonsulellerApolloFör att göra konfigurationscentret, en handledning om Consul som ett ASP.NET Core-konfigurationscenter:
Krav: Vi lagrar konfigurationsinformationen för APM i Consuls middleware, så vi behöver inte logga in på servern för att manuellt ändra konfigurationsinformationen i appsettings.json-filen.
Start Consul
Starta consul-middleware genom att först använda följande kommando:
Installera Consul-relaterade plugins ASP.NET Core
I vårt sky-apm-demo-projekt, använd nuget för att installera Consul-middleware som ett plugin för att läsa konfigurationscentret med följande kommando:
Modifiera metoden CreateHostBuilder i Program-objektet för att lägga till läsning av fjärrkonfigurationsinformation för Consul, koden är följande:
Under tiden måste du konfigurera consul_url adressen i appsettings.json-filen enligt följande:
Lägg till vår konfigurationsinformation i Consul för att öppna webbhanteringsplattformen:Inloggningen med hyperlänken är synlig.För att skapa sky-apm-demo/appsettings. Development.json nyckeln är värdet följande:
Skapa en ny test3-controllermetod för att läsa informationen om vår konsulservicekonfiguration för enkel testning, enligt följande:
TillgångInloggningen med hyperlänken är synlig.Du kan få den konfiguration vi normalt ställer in, enligt följande:
Om du tittar på skyapm-20201111.log loggar ser du att adressen där SkyApm använder Skywalking inte är den vi konfigurerade, menStandard: localhost:11800, som visas i figuren nedan:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Information] SkyApm.Transport.Grpc.ConnectionManager : Stäng av anslutning[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Fel] SkyApm.Transport.Grpc.ConnectionManager: Anslutningsserver-timeout.
System.Threading.Tasks.TaskCanceledException: Reached deadline. på Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 deadline) på Grpc.Core.Channel.ConnectAsync (Nullable'1 deadline) på SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Vi kontrollerar källkoden SkyAPM.Agent.AspNetCore på GitHub och ser att om vårt program först tilldelar standardinställningarna och sedan läser konfigurationsfilen appsettings.json skywalking.json skyapm.json för att åsidosätta de tidigare standardvärdena, som visas i figuren nedan:
När det gäller konfigurationen är laddningsprocessen följande:
Så när etablerade SkyAPM kommunikation med Skywalking?
SkyAPM-källkoden har en bakgrundsuppgift InstrumentationHostedService vid registrering av IHostedService,.NET Core anropar StartAsync() och StopAsync()-metoderna av typen IHostedService under applikationsstart respektive stopp。
Du kan hänvisa till:
Problemet nu är att konfigurationsinformationen som vår konsul ställt in skrivs över av standardvärdet för SkyAPM, och för att lösa detta måste vi ändra källkoden, vi laddar ner SkyAPM-källkoden på GitHub.
Modifiera ConfigurationFactory-filen enligt följande:
Modifiera filen ConfigurationBuilderExtensions enligt följande:
För den modifierade källkoden kan du hänvisa till min avdelning:Inloggningen med hyperlänken är synlig.
Ytterligare logisk bedömning, när SkyAPM-konfigurationen redan existerar, använder inte standardvärdet,Regenererasky-apm-demo och SkyApm.Agent.AspNetCore-projekten, kopiera alla filer under den modifierade bibliotekmappen \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 till vårt projekt \bin\Debug\netcoreapp3.1 och ersätt dem.Uppdatera din webbläsare。
Genom att titta på APM-loggarna kan du se att konfigurationsinformationen i Consul har lästs framgångsrikt och kommunikationen med Skywalking har etablerats, som visas i figuren nedan:
(Slut)
|