Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 24815|Respuesta: 1

[ASP.NET] ASP.NET Trazado de Enlace Principal (3) SkyAPM se basa en la configuración dinámica de Consul

[Copiar enlace]
Publicado el 11-11-2020 16:13:50 | | | |
Revisión:

ASP.NET Trazado de Enlaces Principales (1) Instala el tutorial de Skywalking
https://www.itsvse.com/thread-9456-1-1.html

ASP.NET Trazado de enlaces Core (2) utiliza integración SkyAPM
https://www.itsvse.com/thread-9458-1-1.html



proyecto, puedes usarloCónsuloApolloPara hacer el centro de configuración, un tutorial sobre Consul como centro de configuración ASP.NET Core:

Arquitectura: ASP.NET Core configura dinámicamente las actualizaciones en caliente basadas en Consul
https://www.itsvse.com/thread-9421-1-1.html
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:

Un servicio basado en .NET Core en Linux
https://www.itsvse.com/thread-9447-1-1.html
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)




Anterior:. Conflictos en el conector .NET MySQL DbProviderFactories (Conflictos en el conector .NET MySQL DbP...
Próximo:.NET Core muestra los servicios e implementaciones registrados y sus ciclos de vida
Publicado el 2-6-2023 14:24:31 |
Buena pegatina
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com