Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 24815|Răspunde: 1

[ASP.NET] ASP.NET Core Link Tracing (3) SkyAPM se bazează pe configurația dinamică Consul

[Copiază linkul]
Postat pe 2020-11-11 16:13:50 | | | |
Recenzie:

ASP.NET Core Link Tracing (1) Instalează tutorialul Skywalking
https://www.itsvse.com/thread-9456-1-1.html

ASP.NET Core link tracing (2) folosește integrarea SkyAPM
https://www.itsvse.com/thread-9458-1-1.html



proiect, poți să-l foloseștiConsulsauApolloPentru a face centrul de configurare, un tutorial despre Consul ca centru de configurare ASP.NET Core:

Arhitectură: ASP.NET Core configurează dinamic actualizările calde bazate pe Consul
https://www.itsvse.com/thread-9421-1-1.html
Cerințe: Stocăm informațiile de configurare ale APM în middleware-ul Consul, astfel încât să nu fie nevoie să ne conectăm la server pentru a modifica manual informațiile de configurare din fișierul appsettings.json.

Start Consul

Începe middleware-ul consul folosind mai întâi următoarea comandă:




Instalează plugin-urile legate de Consul ASP.NET Core

În proiectul nostru sky-apm-demo, folosește Nuget pentru a instala middleware-ul Consul ca plugin pentru citirea centrului de configurare cu următoarea comandă:

Modifică metoda CreateHostBuilder în obiectul Program pentru a adăuga citirea informațiilor de configurare Consul la distanță, codul este următorul:

Între timp, în fișierul appsettings.json, trebuie să configurezi adresa consul_url, după cum urmează:



Adaugă informațiile noastre de configurare în consul pentru a deschide platforma de management web:Autentificarea cu hyperlink este vizibilă.pentru a crea sky-apm-demo/appsettings. Development.json cheie, valoarea este următoarea:



Creează o nouă metodă de controler test3 pentru a citi informațiile configurației serviciului nostru consul pentru o testare ușoară, după cum urmează:

AccesAutentificarea cu hyperlink este vizibilă.Puteți obține configurația pe care am ses-o în mod normal, după cum urmează:



Uitându-te la jurnalele skyapm-20201111.log, vei observa că adresa la care SkyApm accesează Skywalking-ul nu este cea configurată noi, darImplicit: localhost:11800, așa cum se arată în figura de mai jos:



2020-11-11 15:32:35.869 +08:00 [My_Service] [Informații] SkyApm.Transport.Grpc.ConnectionManager : Oprire conexiune[localhost:11800].
2020-11-11 15:32:45.875 +08:00 [My_Service] [Eroare] SkyApm.Transport.Grpc.ConnectionManager: Timp de expirare a serverului de conectare.
System.Threading.Tasks.TaskCanceledException: Reached deadline.
   la Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, termenul limită Nullable'1)
   la Grpc.Core.Channel.ConnectAsync (termenul limită Nullable'1)
   la SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync()
Verificăm codul sursă SkyAPM.Agent.AspNetCore pe GitHub și constatăm că, dacă programul nostru atribuie mai întâi setările implicite, apoi citește fișierul de configurare appsettings.json skywalking.json skyapm.json să suprascrie valorile implicite anterioare, așa cum se arată în figura de mai jos:



În ceea ce privește configurația, procesul de încărcare este următorul:



Deci, când a stabilit SkyAPM comunicarea cu Skywalking?



Codul sursă SkyAPM are o sarcină de fundal InstrumentationHostedService, la înregistrarea IHostedService,.NET Core apelează metodele StartAsync() și StopAsync() de tip IHostedService, respectiv, în timpul începerii și opririi aplicației

Poți face referire la:

Un serviciu bazat pe .NET Core pe Linux
https://www.itsvse.com/thread-9447-1-1.html
Problema acum este că informația de configurare setată de consulul nostru este suprascrisă de valoarea implicită a SkyAPM, iar pentru a rezolva această problemă trebuie să modificăm codul sursă, descărcăm codul sursă SkyAPM pe GitHub.

Modificați fișierul ConfigurationFactory astfel:

Modifică fișierul ConfigurationBuilderExtensions astfel:

Pentru codul sursă modificat, puteți consulta ramura mea:Autentificarea cu hyperlink este vizibilă.

O judecată logică suplimentară, când configurația SkyAPM există deja, nu folosește valoarea implicită,Regenereazăsky-apm-demo și SkyApm.Agent.AspNetCore, copiați toate fișierele din folderul modificat \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 în proiectul nostru \bin\Debug\netcoreapp3.1 și înlocuiți-le.Reîmprospătează browserul

Uitându-vă la jurnalele apm, puteți constata că informațiile de configurare din consul au fost citite cu succes și comunicarea cu Skywalking a fost stabilită cu succes, așa cum se vede în figura de mai jos:




(Sfârșit)




Precedent:. .NET MySQL Connector Conflicte DbProviderFactories (.NET MySQL Connector Conflicts DbP...
Următor:.NET Core afișează serviciile înregistrate și implementările și ciclurile lor de viață
Postat la 2023-6-2 14:24:31 |
Abțibild bun
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com