Eleştiri:
proje, kullanabilirsinizKonsolosveyaApolloYapılandırma merkezini yapmak için, Consul'un ASP.NET Core yapılandırma merkezi olarak eğitim alması:
Gereksinimler: APM'nin yapılandırma bilgilerini Consul ara yazılımında saklarız, böylece appsettings.json dosyasındaki yapılandırma bilgilerini manuel olarak değiştirmek için sunucuya giriş yapmamıza gerek kalmaz.
Başlat Konsolos
Konsol ara yazılımını başlatmak için önce aşağıdaki komutu kullanın:
Consul ile ilgili eklentileri ASP.NET Core kur
Sky-apm-demo projemizde, yapılandırma merkezini okumak için eklenti olarak Consul middleware'i aşağıdaki komutla nuget ile yükleyin:
Program nesnesinde CreateHostBuilder yöntemini uzak Konsolos yapılandırma bilgilerinin okunmasını eklemek için değiştirin, kod şu şekildedir:
Bu arada, appsettings.json dosyasında consul_url adresini aşağıdaki gibi yapılandırmanız gerekir:
Web yönetim platformunu açmak için yapılandırma bilgilerimizi konsoloya ekleyin:Bağlantı girişi görünür.Sky-APM-demo/appsettings oluşturmak için. Development.json anahtar değeri şu şekildedir:
Konsolos hizmet yapılandırmamızın bilgilerini okumak için aşağıdaki gibi yeni bir test3 kontrolcü yöntemi oluşturun:
ErişimBağlantı girişi görünür.Normalde ayarladığımız konfigürasyonu aşağıdaki gibi alabilirsiniz:
skyapm-20201111.log kayıtlarına baktığınızda, SkyApm'in Skywalking'e eriştiği adresin bizim yapılandırmamız olmadığını göreceksiniz, ancakVarsayılan: localhost:11800, aşağıdaki şekilde gösterildiği gibi:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Bilgi] SkyApm.Transport.Grpc.ConnectionManager : Kapatma bağlantısı[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Hata] SkyApm.Transport.Grpc.ConnectionManager : Sunucu zaman aşımını bağlayın.
System.Threading.Tasks.TaskCanceledException: Reached deadline. Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 son tarihi) Grpc.Core.Channel.ConnectAsync adresinde(Nullable'1 son tarihi) SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() adresinde GitHub'da SkyAPM.Agent.AspNetCore kaynak kodunu kontrol ediyoruz ve programımız önce varsayılan ayarları atayıp ardından yapılandırma dosyasını appsettings.json skywalking.json skyapm.json okursa, önceki varsayılan değerleri geçersiz kılmak için okursa, aşağıdaki şekilde gösterildiği gibi:
Konfigürasyon ile ilgili olarak, yükleme süreci şu şekildedir:
Peki SkyAPM, Skywalking ile ne zaman iletişim kurdu?
SkyAPM kaynak kodu, IHostedService kaydedilirken InstrumentationHostedService arka plan görevine sahiptir,.NET Core, uygulama başlatma ve durdurma sırasında sırasıyla IHostedService tipindeki StartAsync() ve StopAsync() metodlarını çağırır。
Başvurabilirsiniz:
Şimdi sorun, konsolosumuz tarafından belirlenen yapılandırma bilgilerinin varsayılan değeri SkyAPM tarafından üzerine yazılması ve bu sorunu çözmek için kaynak kodunu değiştirmemiz gerekiyor, SkyAPM kaynak kodunu GitHub'dan indiriyoruz.
ConfigurationFactory dosyasını aşağıdaki gibi değiştirin:
ConfigurationBuilderExtensions dosyasını aşağıdaki şekilde değiştirin:
Değiştirilmiş kaynak kodu için şubeme başvurabilirsiniz:Bağlantı girişi görünür.
Ek mantıksal yargı olarak, SkyAPM yapılandırması zaten var olduğunda varsayılan değeri kullanmaz,Yeniden Doğurmasky-apm-demo ve SkyApm.Agent.AspNetCore projeleri, değiştirilmiş \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 kütüphanesindeki tüm dosyaları \bin\Debug\netcoreapp3.1 projemize kopyalayın ve yerine koyun.Tarayıcınızı yenileyin。
APM kayıtlarına bakarak, consul'daki yapılandırma bilgilerinin başarıyla okunduğunu ve Skywalking ile iletişimin başarıyla kurulduğunu görebilirsiniz; aşağıdaki şekilde gösterilmiştir:
(Son)
|