This project is an attempt of using Micrometer Tracing combined with the following technologies:
- Spring Boot 3
- Spring Security
- Spring Webflux
- Kotlin coroutines
- Reactor Netty
- Zipkin Brave
- Zalando Logbook
This might also be useful for those migrating Spring Boot 2 & Spring Sleuth to Spring Boot 3 which has breaking changes about tracing.
The aim is to manage to have standard baggage (traceId and spanId) and custom baggage (myBaggageFilter and myBaggageController) logged in every single log of the application.
Below are a list of issues related to this mechanism not working properly:
Run ./gradlew bootRun
then call the local server depending on the behavior you want to test:
This will test the following behavior:
- Write a log in the controller
- Make a
webClient
call
curl --location 'http://localhost:8080/simple' --header 'Authorization: Basic dXNlcjp1c2Vy'
This will test the following behavior:
- Simulate some delay inside the coroutine so that kotlin suspends the function then resume it
- Write a log in the controller
- Make a
webClient
call
curl --location 'http://localhost:8080/suspend' --header 'Authorization: Basic dXNlcjp1c2Vy'
This will test the following behavior:
- Start a new coroutine
- Write a log in the controller
- Make a
webClient
call
curl --location 'http://localhost:8080/coroutine --header 'Authorization: Basic dXNlcjp1c2Vy'
This will test the following behavior:
- Start a new coroutine
- Write a log in the controller
- Make a
webClient
call through a proxied service
curl --location 'http://localhost:8080/aop' --header 'Authorization: Basic dXNlcjp1c2Vy'