...
| Info |
|---|
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.
...
| Advertencia |
|---|
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:
...
| Bloque de código | ||
|---|---|---|
| ||
<properties>...
<spring.cloud.version>2021.0.3</spring.cloud.version> <!-- Para versiones de spring-boot-starter-parent a partir de 2.6.X ->
<spring.cloud.version>2020.0.6</spring.cloud.version> <!-- Para versiones de spring-boot-starter-parent 2.4.X y 2.5.X ->
<spring.cloud.version>Hoxton.SR12</spring.cloud.version> <!-- Para versiones de spring-boot-starter-parent 2.2.X y 2.3.X ->
...
</properties> |
| Advertencia |
|---|
SOLO DEBE HABER UNA PROPERTY spring.cloud.version, la que corresponda con el parent spring-boot-starter-parent que tengamos configurado en nuestro pom.xml. |
...
2021.0.x aka Jubilee
...
2.6.x, 2.7.x (Starting with 2021.0.3)
...
2020.0.x aka Ilford
...
2.4.x, 2.5.x (Starting with 2020.0.3)
...
...
2.2.x, 2.3.x (Starting with SR5)
...
...
2.1.x
...
...
2.0.x
...
...
1.5.x
...
1
...
Ejemplo de Tabla de compatibilidades Spring-Cloud - Spring-Boot agosto'22.
...
| language | xml |
|---|
...
.
...
| Bloque de código | ||
|---|---|---|
| ||
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency> |
...
Fichero application.properties:
Añadir las siguientes propiedades en el fichero application.properties de Helm Chart:
Bloque de código language text spring.application.name=${app.author}/${app.apiname} ##SOLO SI NO ESTÁ DEFINIDA ANTES Y TENEMOS app.author y app.apiname spring.zipkin.enabled=false ##Deshabilita el envío a Zipkin, aunque no debe hacerse si la dependencia de Zipkin no está en el pom.xml. spring.sleuth.baggage.remote-fields=UMU-User-SessionID #Define el campo para recibir y propagar a otros servicios spring.sleuth.baggage.correlation-fields=UMU-User-SessionID #Añade el campo al MDC spring.sleuth.baggage.tag-fields=UMU-User-SessionID #Define el campo para enviarlo como tag y poder filtrar en zipkin/jaeger en el futuro
En las referencias hay un enlace a la documentación de Sleuth (#appendix) con la tabla con todas las propiedades de configuración.
...
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).
| Info |
|---|
Para integrar correctamente Sleuth con clientes REST RestTemplate (a extinguir) y WebClient (ver confluence WebClient) es imprescindible registrar |
...
tanto RestTemplate como WebClient con @Bean. |
Si aún así, tenemos , a pesar de tener WebClient registrado y Spring-Boot actualizado, seguimos teniendo una excepción al lanzar el clienteWebClient, 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.
...