У меня есть несколько приложений Spring Boot, одно из которых использует Spring Boot 3, а другие используют Spring Boot 2. Мне нужно реализовать трассировку запросов между ними и между ними и Kafka. Однако я не нашел ничего о том, как интегрировать трассировку через Spring Cloud Sleuth в одно приложение и трассировку Micrometer в другое приложение. Есть ли способ получить идентификатор трассировки, сгенерированный Sleuth, в приложении, использующем трассировку микрометра и наоборот?
Я попытался подключить сыщика и микрометрическую трассировку в приложениях и отправить http-запросы в приложение spring boot 2, которое отправило сообщение в kafka, которое прочитало приложение spring boot 3, но traceId появился только в приложении spring boot 2.
И Sleuth, и Micrometer Tracing поддерживают форматы распространения B3 и W3C. Sleuth использует B3 по умолчанию, Boot 3 настраивает Micrometer Tracing для использования W3C. Изменение этого поведения:
# Boot 2.x/Sleuth
spring.sleuth.propagation.type
или
# Boot 3.x/Micrometer Tracing
management.tracing.propagation.type
Привет, мы описываем на вики-странице, как перейти с Boot 2.7 на Boot 3.0 (https://github.com/micrometer-metrics/tracing/wiki/Spring-Cloud-Sleuth-3.1-Migration-Guide). Вы должны указать 2 типа распространения на стороне Boot 2.7 (W3C, B3), и Boot 3.0 автоматически подберет вариант W3C.
Поскольку Boot 3.0 запрещает объединение диапазонов и устанавливает идентификатор трассировки равным 128 битам, установите ту же конфигурацию на стороне Sleuth.
spring.sleuth.traceId128=true
spring.sleuth.supportsJoin=false
Установка этих параметров ничего не изменила, в том числе не изменила длину traceId в приложениях, приложения spring boot 3 печатают traceId длиной 32 символа и spring boot 2 длиной 16 символов, но спасибо за информацию для исследования