Pārskats:
projektu, varat to izmantotKonsulsvaiApolloLai veiktu konfigurācijas centru, apmācība par konsulu kā ASP.NET Core konfigurācijas centru:
Prasības: Mēs glabājam APM konfigurācijas informāciju Consul starpprogrammatūrā, tāpēc mums nav jāpiesakās serverī, lai manuāli modificētu konfigurācijas informāciju appsettings.json failā.
Sākt konsulu
Startējiet konsula starpprogrammatūru, vispirms izmantojot šādu komandu:
Instalējiet ar Consul saistītus spraudņus ASP.NET Core
Mūsu sky-apm-demo projektā izmantojiet nuget, lai instalētu Consul starpprogrammatūru kā spraudni konfigurācijas centra lasīšanai ar šādu komandu:
Modificējiet CreateHostBuilder metodi programmas objektā, lai pievienotu attālā konsula konfigurācijas informācijas lasīšanu, kods ir šāds:
Tikmēr appsettings.json failā consul_url adrese ir jākonfigurē šādi:
Pievienojiet mūsu konfigurācijas informāciju konsulam, lai atvērtu tīmekļa pārvaldības platformu:Hipersaites pieteikšanās ir redzama., lai izveidotu sky-apm-demo/appsettings. Development.json atslēgas vērtība ir šāda:
Izveidojiet jaunu test3 kontroliera metodi, lai nolasītu mūsu konsula dienesta konfigurācijas informāciju ērtai testēšanai, šādi:
PiekļuveHipersaites pieteikšanās ir redzama.Jūs varat iegūt konfigurāciju, ko mēs iestatījām parasti, šādi:
Aplūkojot skyapm-20201111.log žurnālus, jūs atradīsiet, ka adrese, kurā SkyApm piekļūst Skywalking, nav tā, ko mēs konfigurējām, betNoklusējums: localhost:11800, kā parādīts attēlā:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Informācija] SkyApm.Transport.Grpc.ConnectionManager : Izslēgšanas savienojums[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Kļūda] SkyApm.Transport.Grpc.ConnectionManager : Savienojuma izveides servera taimauts.
System.Threading.Tasks.TaskCanceledException: Reached deadline. vietnē Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 termiņš) pie Grpc.Core.Channel.ConnectAsync(Nullable'1 termiņš) vietnē SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Mēs pārbaudām SkyAPM.Agent.AspNetCore avota kodu vietnē GitHub un konstatējam, ka, ja mūsu programma vispirms piešķir noklusējuma iestatījumus un pēc tam nolasa konfigurācijas failu appsettings.json skywalking.json skyapm.json, lai ignorētu iepriekšējās noklusējuma vērtības, kā parādīts attēlā:
Attiecībā uz konfigurāciju iekraušanas process ir šāds:
Tātad, kad SkyAPM izveidoja saziņu ar Skywalking?
SkyAPM avota kodam ir InstrumentationHostedService fona uzdevums, reģistrējot IHostedService,.NET Core izsauc attiecīgi IHostedService tipa metodes StartAsync() un StopAsync() lietojumprogrammas startēšanas un apturēšanas laikā。
Jūs varat atsaukties:
Tagad problēma ir tā, ka mūsu konsula iestatītā konfigurācijas informācija tiek pārrakstīta ar SkyAPM noklusējuma vērtību, un, lai atrisinātu šo problēmu, mums ir jāmaina avota kods, mēs lejupielādējam SkyAPM avota kodu vietnē GitHub.
Modificējiet ConfigurationFactory failu šādi:
Modificējiet failu ConfigurationBuilderExtensions šādi:
Lai iegūtu modificēto avota kodu, varat atsaukties uz manu filiāli:Hipersaites pieteikšanās ir redzama.
Pievienots loģiskais spriedums, kad SkyAPM konfigurācija jau pastāv, neizmanto noklusējuma vērtību,Atjaunotsky-apm-demo un SkyApm.Agent.AspNetCore projekti, kopējiet visus failus modificētajā bibliotēkā \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 uz mūsu projektu \bin\Debug\netcoreapp3.1 un nomainiet tos.Pārlūkprogrammas atsvaidzināšana。
Aplūkojot apm žurnālus, jūs varat konstatēt, ka konfigurācijas informācija konsulā ir veiksmīgi nolasīta un saziņa ar Skywalking ir veiksmīgi izveidota, kā parādīts zemāk redzamajā attēlā:
(Beigas)
|