Anmeldelse:
projekt, du kan bruge detKonsulellerApolloFor at lave konfigurationscentret, en vejledning om Consul som et ASP.NET Core konfigurationscenter:
Krav: Vi gemmer konfigurationsinformationen for APM i Consul-middleware, så vi ikke behøver at logge ind på serveren for manuelt at ændre konfigurationsoplysningerne i appsettings.json-filen.
Start Consul
Start consul-middleware ved først at bruge følgende kommando:
Installer Consul-relaterede plugins ASP.NET Core
I vores sky-apm-demo-projekt bruger du nuget til at installere Consul-middleware som et plugin til at læse konfigurationscentret med følgende kommando:
Modificerer CreateHostBuilder-metoden i Program-objektet for at tilføje læsning af fjern Consul-konfigurationsinformation, koden er som følger:
I mellemtiden skal du i appsettings.json-filen konfigurere consul_url-adressen som følger:
Tilføj vores konfigurationsinformation til Consul for at åbne webadministrationsplatformen:Hyperlink-login er synlig.For at oprette sky-apm-demo/appsettings. Development.json nøglen er værdien som følger:
Opret en ny test3-controllermetode til at læse informationen om vores konsulservicekonfiguration for nem testning, som følger:
AdgangHyperlink-login er synlig.Du kan få den konfiguration, vi normalt sætter, som følger:
Hvis du kigger på skyapm-20201111.log logfiler, vil du opdage, at adressen, hvor SkyApm tilgår Skywalking, ikke er den, vi har konfigureret, menStandard: localhost:11800, som vist i figuren nedenfor:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Information] SkyApm.Transport.Grpc.ConnectionManager : Nedlukning forbindelse[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Fejl] SkyApm.Transport.Grpc.ConnectionManager : Tilslut server-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 tjekker SkyAPM.Agent.AspNetCore-kildekoden på GitHub og ser, at hvis vores program først tildeler standardindstillingerne og derefter læser konfigurationsfilen, appsettings.json skywalking.json skyapm.json for at tilsidesætte de tidligere standardværdier, som vist i figuren nedenfor:
Med hensyn til konfigurationen er indlæsningsprocessen som følger:
Så hvornår etablerede SkyAPM kommunikation med Skywalking?
SkyAPM-kildekoden har en InstrumentationHostedService-baggrundsopgave, når IHostedService registreres,.NET Core kalder StartAsync() og StopAsync()-metoderne af typen IHostedService under applikationsstart og -stop。
Du kan henvise til:
Problemet nu er, at konfigurationsinformationen, som vores konsul har sat, bliver overskrevet af standardværdien SkyAPM, og for at løse dette problem skal vi ændre kildekoden, vi downloader SkyAPM-kildekoden på GitHub.
Ændr ConfigurationFactory-filen som følger:
Ændr ConfigurationBuilderExtensions-filen som følger:
For den ændrede kildekode kan du henvise til min gren:Hyperlink-login er synlig.
Tilføjet logisk vurdering, når SkyAPM-konfigurationen allerede eksisterer, ikke bruger standardværdien,Regenerersky-apm-demo og SkyApm.Agent.AspNetCore-projekterne, kopier alle filerne under det modificerede bibliotek \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 mappe til vores projekt \bin\Debug\netcoreapp3.1 og erstatter dem.Opdater din browser。
Ved at se på APM-loggene kan du se, at konfigurationsinformationen i Consul er blevet læst med succes, og at kommunikationen med Skywalking er etableret, som vist i figuren nedenfor:
(Slut)
|