Läbivaatamine:
projekt, saad seda kasutadaKonsulvõiApolloKonfiguratsioonikeskuse tegemiseks on juhend Consulist kui ASP.NET Core konfiguratsioonikeskusest:
Nõuded: Salvestame APM-i konfiguratsiooniinfo Consul'i vahendustarkvarasse, nii et me ei pea serverisse sisse logima, et käsitsi muuta appsettings.json faili konfiguratsiooniinfot.
Alusta konsulina
Alusta konsuli vahendustarkvara, kasutades esmalt järgmist käsku:
Paigalda Consuliga seotud pluginad ASP.NET Core
Meie sky-apm-demo projektis kasuta nugetit, et paigaldada Consul middleware pluginana konfiguratsioonikeskuse lugemiseks järgmise käsuga:
Muuda CreateHostBuilder meetodit programmi objektis, et lisada kaugkonsuli konfiguratsiooniinfo lugemine, kood on järgmine:
Samal ajal tuleb appsettings.json failis konfigureerida consul_url aadress järgmiselt:
Lisa meie konfiguratsiooniteave konsulile, et avada veebihaldusplatvorm:Hüperlingi sisselogimine on nähtav.Sky-apm-demo/appsettings loomiseks. Development.json on väärtus järgmine:
Loo uus test3 kontrolleri meetod, et lugeda meie konsuli teenuse konfiguratsiooni infot lihtsaks testimiseks, järgmiselt:
LigipääsHüperlingi sisselogimine on nähtav.Saad tavapärase seadistuse järgmiselt:
Vaadates skyapm-20201111.log logisid, leiad, et aadress, kuhu SkyApm Skywalkingule ligi pääseb, ei ole see, mida me seadistasime, vaidVaikimisi: localhost:11800, nagu alloleval joonisel näidatud:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Info] SkyApm.Transport.Grpc.ConnectionManager : Ühenduse sulgemine[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [viga] SkyApm.Transport.Grpc.ConnectionManager : Ühenda serveri timeout.
System.Threading.Tasks.TaskCanceledException: Reached deadline. aadressil Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 tähtaeg) aadressil Grpc.Core.Channel.ConnectAsync(nullable'1 tähtaeg) aadressil SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Kontrollime SkyAPM.Agent.AspNetCore lähtekoodi GitHubis ja leiame, et kui meie programm määrab esmalt vaikimisi seaded ja loeb seejärel konfiguratsioonifaili, appsettings.json skywalking.json skyapm.json varasemad vaikimisi väärtused üle kirjutada, nagu alloleval joonisel näidatud:
Konfiguratsiooni osas on laadimisprotsess järgmine:
Millal siis SkyAPM lõi suhtluse Skywalkinguga?
SkyAPM lähtekoodil on InstrumentationHostedService taustaülesanne, kui registreeritakse IHostedService,.NET Core kutsub rakenduse käivitamisel ja peatamisel vastavalt IHostedService tüüpi StartAsync() ja StopAsync() meetodeid。
Võite viidata:
Probleem on nüüd selles, et konsuli seatud konfiguratsiooniinfo kirjutatakse üle vaikimisi väärtusega SkyAPM, ja selle probleemi lahendamiseks peame lähtekoodi muutma, laadime SkyAPM lähtekoodi alla GitHubi.
Muuda ConfigurationFactory faili järgmiselt:
Muuda ConfigurationBuilderExtensions faili järgmiselt:
Muudetud lähtekoodi kohta võid vaadata minu haru:Hüperlingi sisselogimine on nähtav.
Lisaks loogiline hinnang, kui SkyAPM konfiguratsioon juba eksisteerib, ei kasuta vaikimisi väärtust,Regeneratsioonsky-apm-demo ja SkyApm.Agent.AspNetCore projektid, kopeeri kõik failid muudetud teegi \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 kausta meie projekti \bin\Debug\netcoreapp3.1 ja asenda need.Värskenda oma brauserit。
APM-logisid vaadates näete, et konfiguratsiooniteave konfiguratsioonis on edukalt loetud ja suhtlus Skywalkinguga on edukalt loodud, nagu näidatud alloleval joonisel:
(Lõpp)
|