Spring Cloud Sleuth

Adrian Cole, Spencer Gibb, Marcin Grzejszczak, Dave Syer

Table of Contents

1. Introduction
1.1. Terminology
1.2. Purpose
1.2.1. Distributed tracing with Zipkin
1.2.2. Visualizing errors
1.2.3. Distributed tracing with Brave
1.2.4. Live examples
1.2.5. Log correlation
JSON Logback with Logstash
1.2.6. Propagating Span Context
Baggage vs. Span Tags
1.3. Adding to the project
1.3.1. Only Sleuth (log correlation)
1.3.2. Sleuth with Zipkin via HTTP
1.3.3. Sleuth with Zipkin via RabbitMQ or Kafka
2. Additional resources
3. Features
3.1. Introduction to Brave
3.1.1. Tracing
3.1.2. Tracing
3.1.3. Local Tracing
3.1.4. Customizing spans
3.1.5. Implicitly looking up the current span
3.1.6. RPC tracing
One-Way tracing
4. Sampling
4.1. Declarative sampling
4.2. Custom sampling
4.3. Sampling in Spring Cloud Sleuth
5. Propagation
5.1. Propagating extra fields
5.1.1. Prefixed fields
5.1.2. Extracting a propagated context
5.1.3. Sharing span IDs between client and server
5.1.4. Implementing Propagation
6. Current Tracing Component
7. Current Span
7.1. Setting a span in scope manually
8. Instrumentation
9. Span lifecycle
9.1. Creating and finishing spans
9.2. Continuing spans
9.3. Creating spans with an explicit parent
10. Naming spans
10.1. @SpanName annotation
10.2. toString() method
11. Managing spans with annotations
11.1. Rationale
11.2. Creating new spans
11.3. Continuing spans
11.4. More advanced tag setting
11.4.1. Custom extractor
11.4.2. Resolving expressions for value
11.4.3. Using toString method
12. Customizations
12.1. Spring Integration
12.2. HTTP
12.3. TraceFilter
12.4. Custom service name
12.5. Customization of reported spans
12.6. Host locator
13. Sending spans to Zipkin
14. Zipkin Stream Span Consumer
15. Integrations
15.1. OpenTracing
15.2. Runnable and Callable
15.3. Hystrix
15.3.1. Custom Concurrency Strategy
15.3.2. Manual Command setting
15.4. RxJava
15.5. HTTP integration
15.5.1. HTTP Filter
15.5.2. HandlerInterceptor
15.5.3. Async Servlet support
15.5.4. WebFlux support
15.6. HTTP client integration
15.6.1. Synchronous Rest Template
15.6.2. Asynchronous Rest Template
Multiple Asynchronous Rest Templates
15.6.3. WebClient
15.6.4. Traverson
15.7. Feign
15.8. Asynchronous communication
15.8.1. @Async annotated methods
15.8.2. @Scheduled annotated methods
15.8.3. Executor, ExecutorService and ScheduledExecutorService
Customization of Executors
15.9. Messaging
15.10. Zuul
16. Running examples