Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DevOps Fest 2020. Андрій Шабалін. Distributed Tracing for microservices with Jaeger

26 views

Published on

Зараз, в 2020 році, певно немає таких людей, які не використовують чи не чули про мікросервіси. Складність таких системам полягає не лише в правильному проектуванні на етапі створення і розробки, але і самій експлуатації. У роботі в таких розподілених системах команді неодмінно доведеться зіткнутися з челенджами пошуку “bottlenecks” і відсутністю повної картини комунікації сервісів.
У розподілених системах метрики та логи не завжди дають достатньо інформації для пошуку проблем, оскільки вони продукують дані що відносяться до конкретних компонент системи та не покриває їх взаємодії в цілому. Ця доповідь буде присвячена вирішенню проблем з “observability” та “application performance monitoring” за допомогою підходу “distributed tracing” з Jaeger.

Published in: Education
  • Be the first to comment

  • Be the first to like this

DevOps Fest 2020. Андрій Шабалін. Distributed Tracing for microservices with Jaeger

  1. 1. About speaker Name: Andrii Shabalin Role: Site Reliability Engineer Company:
  2. 2. Distributed tracing for microservices with Jaeger
  3. 3. What is Jaeger?
  4. 4. Jaeger, inspired by Dapper and OpenZipkin, is a distributed tracing system released as open source by Uber Technologies. It is used for monitoring and troubleshooting microservices-based distributed systems https://www.jaegertracing.io/docs/1.17/
  5. 5. What is Jaeger for?
  6. 6. Distributed transaction monitoring Performance and latency optimization Root cause analysis Service dependency analysis Distributed context propagation https://www.jaegertracing.io/
  7. 7. Do we really need all this things?
  8. 8. Definitely, if your application’s architecture like in Uber ↓
  9. 9. Tracing types
  10. 10. 1. Cross-process tracing 2. Database tracing 3. In-process tracing
  11. 11. How to deploy, operate & monitor Jaeger?
  12. 12. https://hub.docker.com/u/jaegertracing Jaeger provides Kubernetes operator: https://github.com/jaegertracing/jaeger-operator Jaeger components are released as Docker images: https://www.jaegertracing.io/docs/1.17/deployment/
  13. 13. https://github.com/jaegertracing/jaeger/blob/master/m onitoring/jaeger-mixin/dashboard-for-grafana.json https://www.jaegertracing.io/docs/1.17/monitoring/
  14. 14. How Jaeger works?
  15. 15. https://www.jaegertracing.io/docs/1.17/architecture/
  16. 16. https://www.jaegertracing.io/docs/1.17/architecture/
  17. 17. What is “traces”?
  18. 18. ● TRACE ● SPAN ● SPAN CONTEXT The description of a transaction as it moves through a distributed system. A named, timed operation representing a piece of the workflow. contains data that the tracing system needs to propagate to the downstream service
  19. 19. https://www.jaegertracing.io/docs/1.17/architecture/
  20. 20. How to get traces?
  21. 21. 1. Hand-made Instrumentation of your application 2. Configuration of already instrumented software
  22. 22. How to made instrumentation?
  23. 23. OpenTracing - is set of APIs, libraries and specifications https://op entracing.io/docs/overview/what-is- tracing/
  24. 24. https://github.com/opentracing/opentracing-go https://github.com/jaegertracing/jaeger-client-go
  25. 25. Distributed tracing, OpenTracing, Jaeger. What the difference?
  26. 26. 1. Distributed Tracing - is method/approach 1. OpenTracing - is set of APIs, libraries and specifications 1. Jaeger - is a infrastructure layer which store and process data which corresponding OpenTracing specification
  27. 27. What software already support tracing out of the box?
  28. 28. Service Proxy API Gateway Service Mesh
  29. 29. So why I should do applications instrumentation if service mesh could care about tracing?
  30. 30. 1. If you want to know about performance inside application 2. If you services communication is not just response/replay over http
  31. 31. req.Header.Add("x-request-id", r.Header.Get("x-request-id")) req.Header.Add("x-b3-traceid", r.Header.Get("x-b3-traceid")) req.Header.Add("x-b3-spanid", r.Header.Get("x-b3-spanid")) req.Header.Add("x-b3-parentspanid", r.Header.Get("x-b3-parentspanid")) req.Header.Add("x-b3-sampled", r.Header.Get("x-b3-sampled")) req.Header.Add("x-b3-flags", r.Header.Get("x-b3-flags")) req.Header.Add("x-ot-span-context", r.Header.Get("x-ot-span-context"))
  32. 32. Tears and disper of microservice observability...
  33. 33. 1. TCP 2. Message Buss
  34. 34. Demo time!
  35. 35. THANKS! https://www.linkedin.com/in/andrii-shabalin/

×