distributed systems
play

Distributed Systems By Aaron Stannard, CEO, Petabridge What Were - PowerPoint PPT Presentation

Distributed Tracing: How the Pros Debug Concurrent and Distributed Systems By Aaron Stannard, CEO, Petabridge What Were Going to Cover Microservices and common people problems they cause How distributed tracing solves some of


  1. Distributed Tracing: How the Pros Debug Concurrent and Distributed Systems By Aaron Stannard, CEO, Petabridge

  2. What We’re Going to Cover • Microservices and common “people” problems they cause • How distributed tracing solves some of these problems • What distributed tracing is and how it works • The OpenTracing standard and its implementations • Distributed tracing best practices

  3. Monoliths and Microservices

  4. Microservices are for Scaling People

  5. Microservice People Problems

  6. Enter Distributed Tracing

  7. Distributed Tracing Features

  8. Collecting Distributed Traces

  9. Tracing Output

  10. Popular Tracing Implementations

  11. OpenTracing • Vendor-neutral standard for facilitating distributed tracing • Enforces a common lexicon across all tracing products • Helps library and framework maintainers implement tracing • Defines common carrier formats for propagating traces between services

  12. OpenTracing Terminology

  13. Collecting Trace Data (Code) var url = "http://localhost:9411"; ITracer tracer = new ZipkinTracer(new ZipkinTracerOptions(url, "DemoApp", debug: true)); ISpanBuilder sb = null; ISpan current = tracer.ActiveSpan; sb = tracer.BuildSpan("actual-op").WithTag("empty", false); if (current != null) { current.Finish(); sb = sb.AsChildOf(current); } current = sb.Start(); current.Finish();

  14. Trace Propagation

  15. Carrier Formats B3 HTTP Headers: X-B3-TraceId: EFFC1D X-B3-ParentSpanId: ACC1DD X-B3-SpanId: 100FFD X-B3-Sampled: 0

  16. Best Practices • Standardize on carrier formats inside your services – i.e. B3 HTTP headers, dictionary formats • Introduce tracing at the infrastructure level, if you can – i.e. inject into HTTP request processing pipeline • Use OpenTracing IScopeManager – Automatically resolves current active Span • Have logging infrastructure inject events into active span

  17. Further Reading • http://opentracing.io • https://zipkin.io/ • https://github.com/openzipkin/docker-zipkin

Recommend


More recommend