Szemle:
Projekt, használhatodKonzulvagyApolloA konfigurációs központ elkészítéséhez egy oktatóvideó a Consulról, mint ASP.NET Core konfigurációs központról:
Követelmények: Az APM konfigurációs adatait a Consul middleware-ben tároljuk, így nem kell bejelentkeznünk a szerverbe, hogy manuálisan módosítsuk a konfigurációs információkat a appsettings.json fájlban.
Kezdje a Konzul
Indítsd el a konzul middleware-t először a következő parancs használatával:
Consulhoz kapcsolódó pluginek telepítése ASP.NET Core
Sky-apm-demo projektünkben a nuget-et telepítsd a Consul middleware-t bővítményként a konfigurációs központ olvasásához a következő parancsval:
Módosítsuk a CreateHostBuilder metódust a Program objektumban, hogy hozzáadjuk a távoli Konzul konfigurációs információk olvasását, a kód a következő:
Eközben a appsettings.json fájlban a consul_url címet a következőképpen kell konfigurálni:
Add hozzá konfigurációs adatainkat a konzulhoz, hogy megnyithasd a webkezelő platformot:A hiperlink bejelentkezés látható.Sky-apm-demo/appsettings létrehozására. Development.json kulcs esetén az érték a következő:
Hozz létre egy új test3 vezérlő módszert, hogy elolvassa konzuli szolgáltatási konfigurációnk adatait a tesztelés megkönnyítéséhez, az alábbiak szerint:
HozzáférésA hiperlink bejelentkezés látható.A normálisan beállított konfigurációt a következőképpen kaphatjuk:
A skyapm-20201111.log naplókat nézve azt láthatod, hogy az a cím, ahol a SkyApm eléri a Skywalkingot, nem az, amit beállítottunk, deAlapértelmezett: localhost:11800, ahogy az alábbi ábrán látható:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Információ] SkyApm.Transport.Grpc.ConnectionManager : Leállított kapcsolat[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [hiba] SkyApm.Transport.Grpc.ConnectionManager : Szerver időlevonása
System.Threading.Tasks.TaskCanceledException: Reached deadline. at Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 deadline) a Grpc.Core.Channel.ConnectAsync (Nullable'1 határidő) címen. a SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() címen Megnézzük a SkyAPM.Agent.AspNetCore forráskódot a GitHubon, és kiderül, hogy ha a programunk először az alapértelmezett beállításokat rendeli hozzá, majd a konfigurációs fájlt olvassa appsettings.json skywalking.json skyapm.json, hogy felülírja a korábbi alapértelmezett értékeket, ahogy az alábbi ábrán látható:
A konfigurációval kapcsolatban a betöltési folyamat a következő:
Mikor kapcsolt kapcsolatot a SkyAPM a Skywalkinggal?
A SkyAPM forráskódnak van egy InstrumentationHostedService háttérfeladata, amikor regisztrálják az IHostedService-t,A .NET Core az alkalmazás indítása és megállítása során a IHostedService típusú StartAsync() és StopAsync() metódusokat hívja。
Megnézheti:
A probléma most az, hogy a konzulunk által állított konfigurációs információkat felülírja az alapértelmezett SkyAPM érték, és ennek megoldásához módosítanunk kell a forráskódot, letöltjük a SkyAPM forráskódot a GitHubra.
Módosítsa a ConfigurationFactory fájlt az alábbiakban:
Módosítsa a ConfigurationBuilderExtensions fájlt az alábbiakban:
A módosított forráskódhoz hivatkozhatsz az én ágamra:A hiperlink bejelentkezés látható.
A logikai ítélet, ha a SkyAPM konfiguráció már létezik, nem használja az alapértelmezett értéket,Regenerálássky-apm-demo és SkyApm.Agent.AspNetCore projektek segítségével másolják le az összes fájlt a módosított könyvtár \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 mappába a \bin\Debug\netcoreapp3.1 projektünkbe, és cseréljétek ki őket.Frissítsd a böngésződet。
Az apm naplók megtekintésével látható, hogy a consul konfigurációs adatai sikeresen elolvashatók, és a Skywalk-nal való kommunikáció sikeresen sikeresen sikerült, ahogy az alábbi ábrán látható:
(Vége)
|