Resensi:
proyek, Anda dapat menggunakannyaKonsulatauApolloUntuk melakukan pusat konfigurasi, tutorial tentang Consul sebagai pusat konfigurasi ASP.NET Core:
Persyaratan: Kami menyimpan informasi konfigurasi APM di middleware Consul, jadi kami tidak perlu masuk ke server untuk mengubah informasi konfigurasi secara manual dalam file appsettings.json.
Mulai Konsul
Mulai middleware konsul dengan terlebih dahulu menggunakan perintah berikut:
Instal plugin terkait Consul ASP.NET Core
Dalam proyek sky-apm-demo kami, gunakan nuget untuk menginstal middleware Consul sebagai plugin untuk membaca pusat konfigurasi dengan perintah berikut:
Ubah metode CreateHostBuilder di objek Program untuk menambahkan pembacaan informasi konfigurasi Konsul jarak jauh, kodenya adalah sebagai berikut:
Sementara itu, dalam file appsettings.json, Anda perlu mengkonfigurasi alamat consul_url, sebagai berikut:
Tambahkan informasi konfigurasi kami ke konsul untuk membuka platform manajemen web:Login hyperlink terlihat.untuk membuat sky-apm-demo/appsettings. Development.json kunci, nilainya adalah sebagai berikut:
Buat metode pengontrol test3 baru untuk membaca informasi konfigurasi layanan konsul kami untuk pengujian yang mudah, sebagai berikut:
AksesLogin hyperlink terlihat.Anda bisa mendapatkan konfigurasi yang kami tetapkan secara normal, sebagai berikut:
Melihat log skyapm-20201111.log, Anda akan menemukan bahwa alamat tempat SkyApm mengakses Skywalking bukanlah yang kami konfigurasikan, tetapiDefault: localhost:11800, seperti yang ditunjukkan pada gambar di bawah ini:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Informasi] SkyApm.Transport.Grpc.ConnectionManager : Shutdown connection [localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Kesalahan] SkyApm.Transport.Grpc.ConnectionManager : Menghubungkan batas waktu server.
System.Threading.Tasks.TaskCanceledException: Reached deadline. di Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 tenggat waktu) di Grpc.Core.Channel.ConnectAsync(Batas waktu Nullable'1) di SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Kami memeriksa kode sumber SkyAPM.Agent.AspNetCore di GitHub dan menemukan bahwa jika program kami menetapkan pengaturan default terlebih dahulu, dan kemudian membaca file konfigurasi appsettings.json skywalking.json skyapm.json untuk mengganti nilai default sebelumnya, seperti yang ditunjukkan pada gambar di bawah ini:
Mengenai konfigurasi, proses pemuatannya adalah sebagai berikut:
Jadi kapan SkyAPM menjalin komunikasi dengan Skywalking?
Kode sumber SkyAPM memiliki tugas latar belakang InstrumentationHostedService, saat mendaftarkan IHostedService,.NET Core memanggil metode StartAsync() dan StopAsync() dari jenis IHostedService, masing-masing, selama aplikasi memulai dan berhenti。
Anda dapat merujuk kepada:
Masalahnya sekarang adalah informasi konfigurasi yang ditetapkan oleh konsul kami ditimpa oleh nilai default SkyAPM, dan untuk mengatasi masalah ini, kami perlu memodifikasi kode sumber, kami mengunduh kode sumber SkyAPM di GitHub.
Ubah file ConfigurationFactory sebagai berikut:
Ubah file ConfigurationBuilderExtensions sebagai berikut:
Untuk kode sumber yang dimodifikasi, Anda dapat merujuk ke cabang saya:Login hyperlink terlihat.
Menambahkan penilaian logis, ketika konfigurasi SkyAPM sudah ada, tidak menggunakan nilai default,Beregenerasisky-apm-demo dan SkyApm.Agent.AspNetCore, salin semua file di bawah folder library \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 yang dimodifikasi ke proyek kami \bin\Debug\netcoreapp3.1 dan ganti.Segarkan browser Anda。
Dengan melihat log apm, Anda dapat menemukan bahwa informasi konfigurasi di konsul telah berhasil dibaca dan komunikasi dengan Skywalking telah berhasil dibuat, seperti yang ditunjukkan pada gambar di bawah ini:
(Akhir)
|