Atualizando o Sleuth para o Spring Boot 3.0

08-01-2023 – Por Gustavo Aquino

Contexto

Recentemente, meu time e eu trabalhávamos em atualizações de bibliotecas de APIs que utilizam o Spring Boot. Essas atualizações ocorreram em projetos que utilizavam o framework na versão 2.7.X, e gostaríamos de aproveitar o ensejo e subir para a versão 3.0.1, disponibilizado em Generally Available no final de novembro de 2022.

O guia de atualização disponibilizado no repositório oficial do framework transcorreu bem, com o build e os testes automatizados executando sem problemas.

Porém, ao executar o projeto e observar os logs, verificamos a ausência do Trace Id e Span Id nos registros, esses que são enriquecidos através do uso da biblioteca Spring Cloud Sleuth.

2023-01-06T20:06:46.830-03:00  INFO [my-test-app,<TRACE_ID_HERE_BUT_EMPTY>,<SPAN_ID_HERE_BUT_EMPTY>] 29324 --- [nio-8080-exec-6] c.a.Loren : Loren ipsun

Problema

Uma rápida leitura na documentação do Sleuth nos informa que esse projeto foi absorvido pelo Micrometer Tracing a partir da versão 3.0 do Spring Boot, portanto aparentemente sendo descontinuado a partir da versão 3.1. Isso também é confirmado pelo GitHub oficial do Micrometer, onde é apresentado um guia de migração.

Porém, o guia para a migração não parece completo, já que seguindo-o não resultou na correta impressão dos dados de rastreabilidade.

Portanto, o objetivo do passo a passo a seguir é ajudá-los com essa migração.

Solução

  1. Verifique se o projeto está fazendo uso da versão 3.0 do Spring Boot;
plugins {
    id("org.springframework.boot") version "3.0.1"
}
  1. Remova a dependência do Sleuth;
implementation("org.springframework.cloud:spring-cloud-starter-sleuth")
  1. Adicione a dependência do Micrometer Tracing com a bridge para o Brave, responsável pela criação dos tracers;
implementation("io.micrometer:micrometer-tracing-bridge-brave")
  1. Caso não possua, adicione a dependência para o Spring Actuator. Ele é necessário para fazer a autoconfiguração do Micrometer;
implementation("org.springframework.boot:spring-boot-starter-actuator")
  1. Finalmente, seguindo o guia de migração do Micromter, adicione a propriedade de log pattern no arquivo .properties ou .yml para que o Trace Id e Span Id sejam impressos;
logging.pattern.level=%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]

Ao executar novamente o projeto, os Ids de Trace e Span voltarão a funcionar corretamente.

2023-01-06T20:16:46.830-03:00  INFO [my-test-app,63b8a986c713b025bfcb74bfc7c64a77,bfcb74bfc7c64a77] 29324 --- [nio-8080-exec-6] c.a.Loren : Loren ipsun

Para quaisquer dúvidas, estou disponível pelos meus contatos.

Bons códigos a todos. 😎

Lista de referências

  1. Lançamento do Spring Boot 3.0 em GA
  2. Guia de migração para o Spring Boot 3.0
  3. Spring Cloud Sleuth
  4. Documentação do Micrometer Tracing
  5. Guia de migração do Sleuth 3.1 para o Micrometer

Profile picture

Escrito por Gustavo Aquino, Mestre em Ciências, Engenheiro de Software e fundador da Decodifique.com. Você pode me encontrar no LinkedIn.

© 2025, Construído com Gatsby