Verteiltes Tracing mit Sleuth und Zipkin
Implementieren Sie verteiltes Tracing mit Spring Cloud Sleuth und Zipkin, um Event-Flows über mehrere Microservices hinweg nachzuverfolgen.
Verteiltes Tracing mit Sleuth und Zipkin ist eine kostenlose Advanced Spring Boot 4: Event-Driven Architecture (Kafka)-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Advanced Spring Boot 4: Event-Driven Architecture (Kafka)-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Advanced Spring Boot 4: Event-Driven Architecture (Kafka)-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
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!
Häufig gestellte Fragen
Ist die Lektion „Verteiltes Tracing mit Sleuth und Zipkin“ kostenlos?
Ja — der vollständige Text von „Verteiltes Tracing mit Sleuth und Zipkin“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Advanced Spring Boot 4: Event-Driven Architecture (Kafka)-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Advanced Spring Boot 4: Event-Driven Architecture (Kafka)-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Verteiltes Tracing mit Sleuth und Zipkin“?
Implementieren Sie verteiltes Tracing mit Spring Cloud Sleuth und Zipkin, um Event-Flows über mehrere Microservices hinweg nachzuverfolgen. Du übst Advanced Spring Boot 4: Event-Driven Architecture (Kafka) mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Advanced Spring Boot 4: Event-Driven Architecture (Kafka) zu starten?
Keine Vorkenntnisse erforderlich. Advanced Spring Boot 4: Event-Driven Architecture (Kafka) auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Verteiltes Tracing mit Sleuth und Zipkin“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Advanced Spring Boot 4: Event-Driven Architecture (Kafka)-Lektion Code schreiben und ausführen?
Ja. Jede Advanced Spring Boot 4: Event-Driven Architecture (Kafka)-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Kafka-Metriken (JMX) und Health-Checks
- Integration mit Prometheus und Grafana
- Verteiltes Tracing mit Sleuth und Zipkin
- Consumer-Lag überwachen und Alarme einrichten