Rastreo distribuido, en nuestro contexto de FundeWebJS, es el proceso por el que podemos rastrear una request a través de todas las APIs.
Al llegar una request a una API, se le asigna un ID de traza único, que se va propagando entre todas las APIs que se invoquen desde la primera.

Como resultado, tendremos un ID único y común (llamado traceId) que todas las APIs podrán usar para filtrar los logs en LAGAR y seguir el recorrido completo de la petición aunque haya saltado de aplicación.

Además del traceId común, se genera otro ID de segundo nivel (spanId), que permite enlazar todos los logs correspondientes a una petición dentro de una misma aplicación.

Se podrá ver un ejemplo práctico en la página Visualización de rastreo distribuido en LAGAR.


Sleuth (detective en inglés), es la librería de Spring-cloud que implementa el proceso de rastreo distribuido.

Esta página es una guía de introducción y configuración de Sleuth en nuestros proyectos FundeWebJS.

Todas las APIs FundeWebJS se han configurado para usar Sleuth. En principio, NO ES NECESARIO que los programadores realicen la configuración.

Esta página es una referencia, por si alguna aplicación se ha escapado del radar de MNCS.

Guía detallada

A continuación se detallan los pasos para configurar Sleuth.


1. Fichero pom.xml:


2. Fichero application.properties:


Integraciones

Sleuth se integra automáticamente con los RestController (para gestionar las trazas "entrantes" al llegar una petición a nuestro servicio) y con RestTemplate (para gestionar las trazas "salientes" cuando hacemos un cliente a otro servicio).

Para integrar correctamente Sleuth con WebClient (ver confluence WebClient) es imprescindible registrar el WebClient a usar como @Bean
Si aún así, tenemos una excepción al lanzar el cliente, añadir la property "spring.sleuth.reactor.enabled=false" en el application.properties. Si el problema persiste, hay que poner Jira a DJ-AT-MNCS.

Se pueden ver ejemplos de Sleuth con otras integraciones en la documentación de Sleuth en referencias, pero no se han usado en FundeWebJS hasta la fecha. 

Referencias




Incidencias similares