Revisión:
proyecto, puedes usarloCónsuloApolloPara hacer el centro de configuración, un tutorial sobre Consul como centro de configuración ASP.NET Core:
Requisitos: Almacenamos la información de configuración de APM en el middleware de Consul, para no tener que iniciar sesión en el servidor para modificar manualmente la información de configuración en el archivo appsettings.json.
Cónsul inicial
Inicia el middleware consul usando primero el siguiente comando:
Instalar plugins relacionados con Consul ASP.NET Core
En nuestro proyecto sky-apm-demo, usa Nuget para instalar el middleware Consul como un plugin para leer el centro de configuración con el siguiente comando:
Modifica el método CreateHostBuilder en el objeto Programa para añadir la lectura de la información de configuración remota de Consul, el código es el siguiente:
Mientras tanto, en el archivo appsettings.json, necesitas configurar la dirección consul_url, de la siguiente manera:
Añade nuestra información de configuración a consul para abrir la plataforma de gestión web:El inicio de sesión del hipervínculo es visible.Para crear sky-apm-demo/appsettings. Development.json clave, el valor es el siguiente:
Crea un nuevo método de controlador test3 para leer la información de nuestra configuración de servicio consul y facilitar las pruebas, de la siguiente manera:
AccesoEl inicio de sesión del hipervínculo es visible.Puedes obtener la configuración que establecimos normalmente, de la siguiente manera:
Al mirar los registros de skyapm-20201111.log, verás que la dirección donde SkyApm accede a Skywalking no es la que configuramos, sinoPor defecto: localhost:11800, como se muestra en la figura siguiente:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Información] SkyApm.Transport.Grpc.ConnectionManager: Apagado de conexión[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Error] SkyApm.Transport.Grpc.ConnectionManager: Tiempo de espera del servidor de conexión.
System.Threading.Tasks.TaskCanceledException: Reached deadline. en Grpc.Core.Channel.WaitForStateChangedAsync (ChannelState lastObservedState, fecha límite de Nullable'1) en Grpc.Core.Channel.ConnectAsync (fecha límite de Nullable'1) en SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Comprobamos el código fuente de SkyAPM.Agent.AspNetCore en GitHub y vemos que si nuestro programa asigna primero los ajustes por defecto y luego lee el archivo de configuración appsettings.json skywalking.json skyapm.json para sobrescribir los valores predeterminados anteriores, como se muestra en la figura de abajo:
En cuanto a la configuración, el proceso de carga es el siguiente:
¿Cuándo estableció SkyAPM comunicación con Skywalking?
El código fuente de SkyAPM tiene una tarea de segundo plano InstrumentationHostedService al registrar IHostedService,.NET Core llama respectivamente a los métodos StartAsync() y StopAsync() del tipo IHostedService, respectivamente, durante el inicio y el parar de la aplicación。
Puedes consultar a:
El problema ahora es que la información de configuración establecida por nuestro consul se sobrescribe por el valor por defecto de SkyAPM, y para solucionar este problema necesitamos modificar el código fuente, descargamos el código fuente de SkyAPM en GitHub.
Modifica el archivo ConfigurationFactory de la siguiente manera:
Modifica el archivo ConfigurationBuilderExtensions de la siguiente manera:
Para el código fuente modificado, puedes consultar mi rama:El inicio de sesión del hipervínculo es visible.
Un juicio lógico añadido, cuando la configuración SkyAPM ya existe, no utiliza el valor por defecto,Regenerasky-apm-demo y SkyApm.Agent.AspNetCore, copia todos los archivos bajo la carpeta modificada \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 a nuestro proyecto \bin\Debug\netcoreapp3.1 y reemplázalos.Actualiza tu navegador。
Al consultar los registros de APM, puedes ver que la información de configuración en consul ha sido leída con éxito y que la comunicación con Skywalking se ha establecido con éxito, como se muestra en la figura siguiente:
(Fin)
|