Arvostelu:
projekti, voit käyttää sitäKonsulitaiApolloKonfiguraatiokeskuksen tekemiseen löytyy opas Consulista ASP.NET Core -konfiguraatiokeskuksena:
Vaatimukset: Tallennamme APM:n konfiguraatiotiedot Consulin middlewareen, joten meidän ei tarvitse kirjautua palvelimelle muuttaaksemme appsettings.json-tiedoston konfiguraatiotietoja manuaalisesti.
Aloita konsuli
Käynnistä konsulin middleware käyttämällä ensin seuraavaa komentoa:
Asenna Consul-aiheisia lisäosia ASP.NET Core
Sky-apm-demo-projektissamme käytä nugetia asentaaksesi Consul-middlewaren lisäosana konfiguraatiokeskuksen lukemiseen seuraavalla komennolla:
Muokkaa CreateHostBuilder-metodia ohjelma-objektissa lisätäksesi etäkonsulin konfiguraatiotietojen lukemisen, koodi on seuraava:
Sillä välin appsettings.json-tiedostossa sinun täytyy konfiguroida consul_url-osoite seuraavasti:
Lisää konfiguraatiotietomme konsulille avataksesi web-hallintaalustan:Hyperlinkin kirjautuminen on näkyvissä.Sky-APM-demo/appsettingsin luomiseen. Development.json avaimessa arvo on seuraava:
Luo uusi test3-ohjainmenetelmä, jolla voit lukea tietoa konsulipalvelukonfiguraatiostamme helppoa testausta varten, seuraavasti:
PääsyHyperlinkin kirjautuminen on näkyvissä.Voit saada normaalisti asettamamme konfiguraation seuraavasti:
Katsoessasi skyapm-20201111.log lokkeja huomaat, että osoite, johon SkyApm käyttää Skywalkingia, ei ole se, jonka olemme konfiguroineet, muttaOletus: localhost:11800, kuten alla olevassa kuvassa näkyy:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Tiedot] SkyApm.Transport.Grpc.ConnectionManager : Yhteys katkaistaan [localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Virhe] SkyApm.Transport.Grpc.ConnectionManager : Yhdistä palvelimen aikakatkaisu.
System.Threading.Tasks.TaskCanceledException: Reached deadline. osoitteessa Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 deadline) osoitteessa Grpc.Core.Channel.ConnectAsync(Nullable'1 deadline) osoitteessa SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Tarkistamme SkyAPM.Agent.AspNetCore-lähdekoodin GitHubista ja huomaamme, että jos ohjelmamme asettaa oletusasetukset ensin ja lukee sitten konfiguraatiotiedoston, appsettings.json skywalking.json skyapm.json ohittaa aiemmat oletusarvot, kuten alla olevassa kuvassa näkyy:
Kokoonpanon osalta latausprosessi on seuraava:
Milloin SkyAPM siis otti yhteyden Skywalkingiin?
SkyAPM-lähdekoodissa on InstrumentationHostedService-taustatehtävä, kun rekisteröidään IHostedService,.NET Core kutsuu StartAsync()- ja StopAsync()-metodeja, jotka ovat tyyppejä IHostedService, sovelluksen käynnistyksen ja pysäytyksen yhteydessä。
Voit viitata seuraaviin paikkoihin:
Ongelma on nyt se, että konsulin asettama konfiguraatiotieto korvataan oletusarvolla SkyAPM, ja tämän ongelman ratkaisemiseksi meidän täytyy muokata lähdekoodia, lataamme SkyAPM:n lähdekoodin GitHubiin.
Muokkaa ConfigurationFactory-tiedostoa seuraavasti:
Muokkaa ConfigurationBuilderExtensions-tiedostoa seuraavasti:
Muokatun lähdekoodin osalta voit katsoa haarani:Hyperlinkin kirjautuminen on näkyvissä.
Lisälooginen harkinta on, että kun SkyAPM-konfiguraatio on jo olemassa, se ei käytä oletusarvoa,Regeneraatiosky-apm-demo ja SkyApm.Agent.AspNetCore -projektit, kopioi kaikki tiedostot muokatusta kirjastosta \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 -kansioomme \bin\Debug\netcoreapp3.1 ja korvaa ne.Päivitä selaimesi。
Katsomalla apm-lokkeja voit huomata, että konfiguraatiotiedot Consulissa on luettu onnistuneesti ja yhteys Skywalkingin kanssa on saatu aikaan, kuten alla olevassa kuvassa näkyy:
(Loppu)
|