Recensie:
project, je kunt het gebruikenConsulofApolloOm het configuratiecentrum te doen, een tutorial over Consul als een ASP.NET Core configuratiecentrum:
Vereisten: We slaan de configuratie-informatie van APM op in de Consul-middleware, zodat we niet hoeven in te loggen op de server om handmatig de configuratie-informatie in het appsettings.json-bestand aan te passen.
Start Consul
Start de consul-middleware door eerst het volgende commando te gebruiken:
Installeer Consul-gerelateerde plugins ASP.NET Core
In ons sky-apm-demo project gebruik je nuget om de Consul-middleware te installeren als plugin voor het lezen van het configuratiecentrum met het volgende commando:
Wijzig de CreateHostBuilder-methode in het Program-object om het lezen van externe Consul-configuratie-informatie toe te voegen, de code is als volgt:
Ondertussen moet je in het appsettings.json-bestand het consul_url-adres als volgt configureren:
Voeg onze configuratie-informatie toe aan Consul om het webbeheerplatform te openen:De hyperlink-login is zichtbaar.Om Sky-APM-demo/appsettings te maken. Development.json sleutel is de waarde als volgt:
Maak een nieuwe test3-controllermethode aan om de informatie van onze consul-serviceconfiguratie te lezen voor eenvoudig testen, als volgt:
ToegangDe hyperlink-login is zichtbaar.Je kunt de configuratie krijgen die we normaal instellen, als volgt:
Als je naar de skyapm-20201111.log logs kijkt, zie je dat het adres waar SkyApm Skywalking bezoekt niet is wat we hebben ingesteld, maarStandaard: localhost:11800, zoals getoond in de onderstaande figuur:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Informatie] SkyApm.Transport.Grpc.ConnectionManager : Verbinding afsluiten[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Fout] SkyApm.Transport.Grpc.ConnectionManager : Verbinding server timeout.
System.Threading.Tasks.TaskCanceledException: Reached deadline. op Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 deadline) op Grpc.Core.Channel.ConnectAsync (Nullable'1 deadline) op SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() We controleren de broncode van SkyAPM.Agent.AspNetCore op GitHub en zien dat als ons programma eerst de standaardinstellingen toewijst en vervolgens het configuratiebestand leest, appsettings.json skywalking.json skyapm.json om de vorige standaardwaarden te overschrijven, zoals te zien in de onderstaande figuur:
Wat betreft de configuratie is het laadproces als volgt:
Dus wanneer heeft SkyAPM contact gelegd met Skywalking?
De SkyAPM-broncode heeft een InstrumentationHostedService-achtergrondtaak, bij het registreren van IHostedService,.NET Core roept respectievelijk de StartAsync() en StopAsync() methoden van het type IHostedService aan tijdens het starten en stoppen van de applicatie。
U kunt verwijzen naar:
Het probleem is nu dat de configuratie-informatie die door ons consul is ingesteld wordt overschreven door de standaardwaarde van SkyAPM, en om dit probleem op te lossen moeten we de broncode wijzigen, we downloaden de SkyAPM-broncode op GitHub.
Wijzig het ConfigurationFactory-bestand als volgt:
Pas het bestand ConfigurationBuilderExtensions als volgt aan:
Voor de aangepaste broncode kun je mijn branch raadplegen:De hyperlink-login is zichtbaar.
Toegevoegd logisch oordeel, wanneer de SkyAPM-configuratie al bestaat en de standaardwaarde niet gebruikt,Regenereersky-apm-demo en SkyApm.Agent.AspNetCore-projecten, kopieer alle bestanden onder de gewijzigde bibliotheek \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 map naar ons project \bin\Debug\netcoreapp3.1 en vervang ze.Ververs je browser。
Door de APM-logs te bekijken, kunt u zien dat de configuratie-informatie in Consul succesvol is gelezen en dat communicatie met Skywalking succesvol tot stand is gekomen, zoals te zien is in de onderstaande figuur:
(Einde)
|