Огляд:
проєкт, ви можете ним користуватися.КонсулабоАполлонЩоб зробити центр конфігурації, проведіть навчальний посібник з Consul як центру конфігурації ASP.NET Core:
Вимоги: Ми зберігаємо інформацію про конфігурацію APM у проміжному програмному забезпеченні Consul, тому не потрібно входити на сервер для ручної зміни конфігураційної інформації у файлі appsettings.json.
Початок консула
Запустіть проміжне програмне забезпечення consul, спочатку використавши таку команду:
Встановити плагіни, пов'язані з Consul, ASP.NET Core
У нашому проєкті sky-apm-demo використовуйте nuget для встановлення проміжного програмного забезпечення Consul як плагіна для читання центру конфігурації за допомогою наступної команди:
Модифікуйте метод CreateHostBuilder в об'єкті Program, щоб додати зчитування віддаленої конфігураційної інформації Consul, код виглядає так:
Тим часом у файлі appsettings.json потрібно налаштувати consul_url адресу наступним чином:
Додайте нашу інформацію про конфігурацію до Consul, щоб відкрити платформу управління вебом:Вхід за гіперпосиланням видно.Щоб створити sky-apm-demo/appsettings. Development.json ключі значення таке:
Створіть новий метод контролера test3 для зчитування інформації про конфігурацію сервісу консульства для зручного тестування, наступним чином:
ДоступВхід за гіперпосиланням видно.Ви можете отримати конфігурацію, яку ми встановлюємо нормально, наступним чином:
Дивлячись на skyapm-20201111.log журнали, ви побачите, що адреса, де SkyAPM отримує доступ до Skywalking, не відповідає нашій налаштовувані, алеЗа замовчуванням: localhost:11800, як показано на рисунку нижче:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Інформація] SkyApm.Transport.Grpc.Manager: Вимкнення з'єднання [localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Помилка] SkyApm.Transport.Grpc.ConnectionManager : Тайм-аут підключення сервера.
System.Threading.Tasks.TaskCanceledException: Reached deadline. на Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 deadline) на Grpc.Core.Channel.ConnectAsync(крайній термін Nullable'1) на SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Ми перевіряємо вихідний код SkyAPM.Agent.AspNetCore на GitHub і виявляємо, що якщо наша програма спочатку призначає налаштування за замовчуванням, а потім читає конфігураційний файл appsettings.json skywalking.json skyapm.json, щоб перевизначити попередні значення за замовчуванням, як показано на рисунку нижче:
Щодо конфігурації, процес завантаження виглядає так:
То коли ж SkyAPM встановила зв'язок зі Skywalking?
Вихідний код SkyAPM має фонове завдання InstrumentationHostedService при реєстрації IHostedService,.NET Core викликає методи StartAsync() та StopAsync() типу IHostedService відповідно під час запуску та зупинки додатків。
Ви можете звертатися до:
Проблема зараз у тому, що інформація конфігурації, встановлена нашим консулом, перезаписана на значення за замовчуванням SkyAPM, і щоб вирішити цю проблему, потрібно змінити вихідний код — завантажити вихідний код SkyAPM на GitHub.
Змініть файл ConfigurationFactory наступним чином:
Змініть файл ConfigurationBuilderExtensions наступним чином:
Для модифікованого вихідного коду ви можете звернутися до мого відділення:Вхід за гіперпосиланням видно.
Додатково логічне судження, коли конфігурація SkyAPM вже існує, не використовує значення за замовчуванням,Регенераціяsky-apm-demo та SkyApm.Agent.AspNetCore проєкти скопіюйте всі файли з модифікованої бібліотеки \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 у нашу папку \bin\Debug\netcoreapp3.1 і замініть їх.Оновіть браузер。
Переглянувши журнали APM, можна побачити, що інформація конфігурації в Consul була успішно прочитана і зв'язок із Skywalking успішно встановлено, як показано на рисунку нижче:
(Кінець)
|