Trazabilidad distribuida con Sleuth/Zipkin
Implemente trazabilidad distribuida con Spring Cloud Sleuth y Zipkin para seguir el flujo de eventos entre varios microservicios.
Trazabilidad distribuida con Sleuth/Zipkin es una lección gratuita de Advanced Spring Boot 4: Event-Driven Architecture (Kafka) en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Advanced Spring Boot 4: Event-Driven Architecture (Kafka), y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Advanced Spring Boot 4: Event-Driven Architecture (Kafka) incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
Why Trace Distributed Systems?
In a microservices architecture, a single user request often travels through many different services. This distributed nature makes it incredibly hard to track the flow of requests and pinpoint where issues occur.
Distributed tracing helps you visualize the full journey of a request across all services involved, making debugging and performance monitoring much easier.
Trace and Span: Your Navigation Tools
Distributed tracing relies on two core concepts:
- Trace: Represents the complete journey of a request through a system, from start to finish. It's like a story of one operation.
- Span: A single, logical unit of work within a trace. Each operation (e.g., an HTTP request, a database call, sending a Kafka message) gets its own span. Spans have parent-child relationships, showing cause and effect.
Meet Spring Cloud Sleuth
Spring Cloud Sleuth is a powerful library for Spring Boot applications that automatically adds distributed tracing capabilities. It instruments your application to generate, collect, and propagate trace information.
- It automatically adds trace and span IDs to your logs.
- It propagates these IDs across service boundaries (HTTP, messaging, etc.).
This means you don't have to manually manage trace IDs in most cases!
Getting Started: Add Sleuth & Zipkin
To integrate Spring Cloud Sleuth into your Spring Boot project, add the following dependencies to your pom.xml:
spring-cloud-starter-sleuth: The core tracing library.spring-cloud-sleuth-zipkin: Integrates with Zipkin for trace visualization.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>Minimal Sleuth Configuration
After adding the dependencies, a minimal configuration in your application.properties is usually enough to get started. Sleuth will automatically detect and configure itself.
To send traces to a Zipkin server, specify its URL:
spring.application.name=my-kafka-producer-app
spring.zipkin.base-url=http://localhost:9411
spring.sleuth.sampler.probability=1.0Tracing Across Kafka Messages
One of Sleuth's key features is its ability to propagate trace context across messaging systems like Kafka. When you use Spring's KafkaTemplate to send messages:
- Sleuth automatically injects trace and span IDs into the Kafka message headers.
- When a
@KafkaListenerreceives the message, Sleuth extracts these headers and continues the trace, linking the producer's span to the consumer's span.
This creates a continuous trace, even across asynchronous Kafka message flows.
Zipkin: See Your Traces
While Sleuth generates and propagates trace data, Zipkin is the distributed tracing system that collects, stores, and visualizes this data. It provides a user interface where you can:
- Search for traces by service name, timestamp, or trace ID.
- View a Gantt chart representation of a trace, showing the sequence and duration of spans.
- Identify performance bottlenecks and errors across your microservices.
Spin Up Zipkin Locally
For local development and testing, you can easily run a Zipkin server using Docker. This provides a quick way to see your traces without complex setup.
docker run -d -p 9411:9411 openzipkin/zipkinProducer with Sleuth Instrumentation
Here's a simple Spring Boot Kafka producer. With Sleuth and Zipkin configured (as shown in earlier scenes), when you run this, Sleuth will automatically add tracing headers to the Kafka message. You would see the traceId and spanId in your application logs and in the Zipkin UI.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class SleuthKafkaProducerApplication {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
private static final String TOPIC = "my-traceable-topic";
public static void main(String[] args) {
SpringApplication.run(SleuthKafkaProducerApplication.class, args);
}
@GetMapping("/send")
public String sendMessage(@RequestParam("message") String message) {
kafkaTemplate.send(TOPIC, message);
return "Message sent with trace context: " + message;
}
}Quick Check: Tracing Concepts
When a Spring Boot application with Spring Cloud Sleuth sends a message to Kafka, which of the following statements are true about trace information?
Lesson Summary: Tracing Your Flow
You've learned about distributed tracing, a critical technique for understanding complex microservice interactions. We covered:
- The concepts of Trace (full request journey) and Span (individual operation).
- How Spring Cloud Sleuth automatically instruments Spring Boot applications, including Kafka producers and consumers, to propagate tracing context.
- The role of Zipkin in collecting and visualizing these traces, providing invaluable insights into your system's behavior.
With these tools, you can effectively monitor and debug your event-driven microservices!
Preguntas frecuentes
¿La lección «Trazabilidad distribuida con Sleuth/Zipkin» es gratis?
Sí — el texto completo de «Trazabilidad distribuida con Sleuth/Zipkin» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Advanced Spring Boot 4: Event-Driven Architecture (Kafka), actualiza a CoddyKit PRO. El curso de Advanced Spring Boot 4: Event-Driven Architecture (Kafka) incluye 4 lecciones en total.
¿Qué aprenderé en «Trazabilidad distribuida con Sleuth/Zipkin»?
Implemente trazabilidad distribuida con Spring Cloud Sleuth y Zipkin para seguir el flujo de eventos entre varios microservicios. Practicas Advanced Spring Boot 4: Event-Driven Architecture (Kafka) con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Advanced Spring Boot 4: Event-Driven Architecture (Kafka)?
No se requiere experiencia previa. Advanced Spring Boot 4: Event-Driven Architecture (Kafka) en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Trazabilidad distribuida con Sleuth/Zipkin»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Advanced Spring Boot 4: Event-Driven Architecture (Kafka)?
Sí. Cada lección de Advanced Spring Boot 4: Event-Driven Architecture (Kafka) incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Métricas de Kafka (JMX) y comprobaciones de estado
- Integración con Prometheus y Grafana
- Trazabilidad distribuida con Sleuth/Zipkin
- Supervisión del consumer lag y configuración de alertas