🔍
Actuator & Observability

Distributed Tracing

Zipkin, Trace ID, Span ID
💡 Distributed tracing ek COURIER PACKAGE TRACKING SYSTEM hai — EK PACKAGE (request) MULTIPLE HUBS (microservices) se GUZARTA hai, aur EK SINGLE "TRACKING NUMBER" (trace ID) POORE JOURNEY mein SAME rehta hai, HAR HUB par (span) KITNA TIME LAGA, WO SAB VISIBLE hota hai.

Microservices architecture mein, EK USER REQUEST OFTEN MULTIPLE SERVICES se GUZARTI hai (jaise Order Service → Inventory Service → Payment Service). AGAR RESPONSE SLOW hai, KAHA BOTTLENECK hai, YE PATA KARNA MUSHKIL ho jaata hai BINA DISTRIBUTED TRACING ke.

Micrometer Tracing (Spring Boot 3.x), HAR REQUEST ko EK "TRACE ID" ASSIGN karta hai, JO POORI journey mein (SAB services ke BEECH, HTTP headers se PROPAGATE hokar) SAME rehta hai. HAR INDIVIDUAL service ke ANDAR, EK "SPAN ID" bhi TRACK hota hai — KITNA TIME us SPECIFIC service ne LIYA.

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<dependency>
    <groupId>io.zipkin.reporter2</groupId>
    <artifactId>zipkin-reporter-brave</artifactId>
</dependency>

# application.properties:
management.tracing.sampling.probability=1.0
management.zipkin.tracing.endpoint=http://localhost:9411/api/v2/spans

// Application code — KUCH BHI EXTRA LIKHNE ki zaroorat NAHI,
// Trace/Span IDs AUTOMATICALLY generate aur propagate hote hain:
@RestController
public class OrderController {
    @PostMapping("/orders")
    public Order create(@RequestBody OrderDto dto) {
        return orderService.create(dto);   // trace ID AUTOMATICALLY LOGS mein bhi ATTACH hota hai
    }
}
🔍
Distributed tracing ek COURIER PACKAGE TRACKING SYSTEM hai — EK PACKAGE (request) MULTIPLE HUBS (microservices) se GUZARTA hai, aur EK SINGLE "TRACKING NUMBER" (trace ID) POORE JOURNEY mein SAME rehta hai, HAR HUB par (span) KITNA TIME LAGA, WO SAB VISIBLE hota hai.
1 / 6
⚡ Quick Recap
  • Trace ID = POORI request journey mein SAME, Span ID = HAR service mein UNIQUE
  • Micrometer Tracing = AUTOMATIC propagation, EXTRA code LIKHNE ki zaroorat NAHI
  • Zipkin/Jaeger = visualization tools, "waterfall" view mein bottlenecks DIKHATE hain
On this page (2 subtopics)

DISTRIBUTED TRACING mein, EK REQUEST jo MULTIPLE microservices se GUZARTI hai, EK SINGLE "TRACE ID" CARRY karta hai (POORE journey mein SAME rehta hai). HAR SERVICE ke ANDAR, EK "SPAN ID" bhi hota hai (US SPECIFIC service mein REQUEST ne kitna TIME LIYA).

💡Tip: Ye IDs, HTTP HEADERS ke through, SERVICE SE SERVICE PROPAGATE hote hain — Spring Boot's Micrometer Tracing library, YE PROPAGATION AUTOMATICALLY HANDLE karti hai.

Zipkin EK TOOL hai jo DISTRIBUTED TRACES ko VISUALIZE karta hai — EK "WATERFALL" VIEW mein, DIKHATA hai ki EK REQUEST, KAUN SI SERVICES se GUZRA, HAR EK mein KITNA TIME LAGA, aur KAHA BOTTLENECK hai.

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<dependency>
    <groupId>io.zipkin.reporter2</groupId>
    <artifactId>zipkin-reporter-brave</artifactId>
</dependency>
# management.zipkin.tracing.endpoint=http://localhost:9411/api/v2/spans