Anmeldelse:
prosjekt, kan du bruke detKonsulellerApolloFor å gjøre konfigurasjonssenteret, en veiledning om Consul som et ASP.NET Core konfigurasjonssenter:
Krav: Vi lagrer konfigurasjonsinformasjonen til APM i Consul-mellomvaren, slik at vi slipper å logge inn på serveren for å manuelt endre konfigurasjonsinformasjonen i appsettings.json-filen.
Start Consul
Start consul-mellomvaren ved først å bruke følgende kommando:
Installer Consul-relaterte plugins ASP.NET Core
I vårt sky-apm-demoprosjekt bruker du nuget for å installere Consul-mellomvaren som en plugin for å lese konfigurasjonssenteret med følgende kommando:
Endre CreateHostBuilder-metoden i Program-objektet for å legge til lesing av ekstern Consul-konfigurasjonsinformasjon, koden er som følger:
I mellomtiden må du i appsettings.json-filen konfigurere consul_url-adressen, som følger:
Legg til konfigurasjonsinformasjonen vår i Consul for å åpne webadministrasjonsplattformen:Innloggingen med hyperkoblingen er synlig.For å lage sky-apm-demo/appsettings. Development.json nøkkelen er verdien som følger:
Opprett en ny test3-kontrollermetode for å lese informasjonen om konfigurasjonen av vår konsultjeneste for enkel testing, som følger:
AdkomstInnloggingen med hyperkoblingen er synlig.Du kan få konfigurasjonen vi setter normalt, som følger:
Når du ser på skyapm-20201111.log-loggene, vil du se at adressen der SkyApm får tilgang til Skywalking ikke er den vi har konfigurert, menStandard: localhost:11800, som vist i figuren nedenfor:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Informasjon] SkyApm.Transport.Grpc.ConnectionManager : Nedstengt tilkobling[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Feil] SkyApm.Transport.Grpc.ConnectionManager: Tilkoblingsserver tidsavbrudd.
System.Threading.Tasks.TaskCanceledException: Reached deadline. på Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, nullable'1 frist) på Grpc.Core.Channel.ConnectAsync (Nullable'1 frist) på SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Vi sjekker kildekoden til SkyAPM.Agent.AspNetCore på GitHub og finner ut at hvis programmet vårt først tildeler standardinnstillingene, og deretter leser konfigurasjonsfilen, appsettings.json skywalking.json skyapm.json for å overstyre de tidligere standardverdiene, som vist i figuren under:
Når det gjelder konfigurasjonen, er lasteprosessen som følger:
Så når etablerte SkyAPM kommunikasjon med Skywalking?
SkyAPM-kildekoden har en InstrumentationHostedService-bakgrunnsoppgave, når IHostedService registreres,.NET Core kaller henholdsvis StartAsync() og StopAsync()-metodene av typen IHostedService under applikasjonsstart og -stopp。
Du kan referere til:
Problemet nå er at konfigurasjonsinformasjonen satt av vår konsul blir overskrevet av standardverdien SkyAPM, og for å løse dette må vi endre kildekoden, vi laster ned SkyAPM-kildekoden på GitHub.
Endre ConfigurationFactory-filen som følger:
Endre ConfigurationBuilderExtensions-filen som følger:
For den modifiserte kildekoden kan du se på min gren:Innloggingen med hyperkoblingen er synlig.
Ekstra logisk vurdering, når SkyAPM-konfigurasjonen allerede eksisterer, ikke bruker standardverdien,Regenerersky-apm-demo og SkyApm.Agent.AspNetCore-prosjektene, kopierer alle filene under den modifiserte bibliotekmappen \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 til prosjektet vårt \bin\Debug\netcoreapp3.1 og erstatter dem.Oppdater nettleseren din。
Ved å se på APM-loggene kan du se at konfigurasjonsinformasjonen i consul er blitt lest og at kommunikasjonen med Skywalking er etablert, som vist i figuren nedenfor:
(Slutt)
|