Distribuerad spårning med Sleuth/Zipkin
Implementera distribuerad spårning med Spring Cloud Sleuth och Zipkin för att följa händelseflöden genom flera mikrotjänster.
Distribuerad spårning med Sleuth/Zipkin är en gratis lektion i Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka), och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) innehåller totalt 4 lektioner.
Varför ska distribuerade system spåras?
I en mikrotjänstarkitektur går en enskild användarförfrågan ofta genom många olika tjänster. Denna distribuerade struktur gör det mycket svårt att följa förfrågningarnas flöde och fastställa var problem uppstår.
Distribuerad spårning hjälper dig att visualisera en förfrågnings hela väg genom alla berörda tjänster, vilket gör felsökning och prestandaövervakning mycket enklare.
Trace och span: dina navigeringsverktyg
Distribuerad spårning bygger på två centrala begrepp:
- Trace: Representerar en förfrågnings fullständiga väg genom ett system, från början till slut. Det är som berättelsen om en enskild operation.
- Span: En enskild, logisk arbetsenhet inom en trace. Varje operation (t.ex. en HTTP-förfrågan, ett databasanrop eller att skicka ett Kafka-meddelande) får en egen span. Span har relationer mellan förälder och barn som visar orsak och verkan.
Möt Spring Cloud Sleuth
Spring Cloud Sleuth är ett kraftfullt bibliotek för Spring Boot-applikationer som automatiskt lägger till funktioner för distribuerad spårning. Det instrumenterar applikationen för att generera, samla in och vidarebefordra spårningsinformation.
- Det lägger automatiskt till trace- och span-ID:n i dina loggar.
- Det vidarebefordrar dessa ID:n mellan tjänstegränser (HTTP, meddelanden och så vidare).
Det innebär att du i de flesta fall inte behöver hantera trace-ID:n manuellt!
Kom igång: lägg till Sleuth och Zipkin
Om du vill integrera Spring Cloud Sleuth i ditt Spring Boot-projekt lägger du till följande beroenden i din pom.xml:
spring-cloud-starter-sleuth: Det centrala biblioteket för spårning.spring-cloud-sleuth-zipkin: Integrerar med Zipkin för visualisering av traces.
<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-konfiguration
När du har lagt till beroendena räcker det vanligtvis med en minimal konfiguration i application.properties för att komma igång. Sleuth identifierar och konfigurerar sig automatiskt.
Om du vill skicka traces till en Zipkin-server anger du dess URL:
spring.application.name=my-kafka-producer-app
spring.zipkin.base-url=http://localhost:9411
spring.sleuth.sampler.probability=1.0Spårning över Kafka-meddelanden
En av Sleuths viktigaste funktioner är möjligheten att vidarebefordra spårningskontext via meddelandesystem som Kafka. När du använder Spring's KafkaTemplate för att skicka meddelanden:
- Sleuth lägger automatiskt in trace- och span-ID:n i Kafka-meddelandets headers.
- När en
@KafkaListenertar emot meddelandet extraherar Sleuth dessa headers och fortsätter tracen genom att koppla samman producentens span med konsumentens span.
Detta skapar en sammanhängande trace, även genom asynkrona Kafka-meddelandeflöden.
Zipkin: se dina traces
Medan Sleuth genererar och vidarebefordrar spårningsdata är Zipkin det distribuerade spårningssystem som samlar in, lagrar och visualiserar dessa data. Det tillhandahåller ett användargränssnitt där du kan:
- Söka efter traces utifrån tjänstenamn, tidsstämpel eller trace-ID.
- Visa en Gantt-diagramrepresentation av en trace med spanarnas ordningsföljd och varaktighet.
- Identifiera prestandaflaskhalsar och fel i dina mikrotjänster.
Starta Zipkin lokalt
För lokal utveckling och testning kan du enkelt köra en Zipkin-server med Docker. Det ger dig ett snabbt sätt att se dina traces utan någon komplicerad konfiguration.
docker run -d -p 9411:9411 openzipkin/zipkinProducent med Sleuth-instrumentering
Här är en enkel Spring Boot-Kafka-producent. När Sleuth och Zipkin är konfigurerade (som i tidigare avsnitt) lägger Sleuth automatiskt till spårningsheaders i Kafka-meddelandet när du kör detta. Du ser traceId och spanId i applikationsloggarna och i Zipkins användargränssnitt.
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;
}
}Snabbkontroll: spårningsbegrepp
När en Spring Boot-applikation med Spring Cloud Sleuth skickar ett meddelande till Kafka, vilka av följande påståenden om spårningsinformation stämmer?
Lektionssammanfattning: spåra ditt flöde
Du har lärt dig om distribuerad spårning, en viktig teknik för att förstå komplexa interaktioner mellan mikrotjänster. Vi har gått igenom:
- Begreppen Trace (hela förfrågningsvägen) och Span (en enskild operation).
- Hur Spring Cloud Sleuth automatiskt instrumenterar Spring Boot-applikationer, inklusive Kafka-producenter och -konsumenter, för att vidarebefordra spårningskontext.
- Vilken roll Zipkin har när det gäller att samla in och visualisera dessa traces, vilket ger ovärderliga insikter i systemets beteende.
Med dessa verktyg kan du effektivt övervaka och felsöka händelsestyrda mikrotjänster!
Lär dig Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Distribuerad spårning med Sleuth/Zipkin” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka), inklusive ”Distribuerad spårning med Sleuth/Zipkin”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) innehåller totalt 4 lektioner.
Vad lär jag mig i ”Distribuerad spårning med Sleuth/Zipkin”?
Implementera distribuerad spårning med Spring Cloud Sleuth och Zipkin för att följa händelseflöden genom flera mikrotjänster. Ni övar på Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka)?
Du behöver inga förkunskaper. Utbildningen i Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Distribuerad spårning med Sleuth/Zipkin”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka)-lektionen?
Ja. Varje Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka)-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Kafka-mätvärden (JMX) och hälsokontroller
- Integrera med Prometheus och Grafana
- Distribuerad spårning med Sleuth/Zipkin
- Övervaka consumer lag och konfigurera aviseringar