Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Importance of Observability for Kafka-based...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Jorge Quilcate Jorge Quilcate
September 10, 2018

The Importance of Observability for Kafka-based applications with Zipkin

Avatar for Jorge Quilcate

Jorge Quilcate

September 10, 2018
Tweet

More Decks by Jorge Quilcate

Other Decks in Programming

Transcript

  1. SYSCO AS Middleware department: Integration and Data Engineering We are

    hiring! Partners: github.com/sysco-middleware sysco.no/
  2. What is Observability? “In control theory, observability is a measure

    of how well internal states of a system can be inferred from knowledge of its external outputs.” - Wikipedia
  3. Span = execution of a task Trace = tree of

    spans Context Propagation = pass trace context between distributed components (e.g. HTTP Headers, Kafka-record Headers) Distributed Tracing Concepts
  4. Demo Lab 01: Hello world to Distributed Tracing • Tracing

    concepts • Brave instrumentation https://github.com/jeqo/talk-kafka-zipkin#lab-1-hello-world-distributed-tracing
  5. Adoption approaches Annotation-based - Part of your code - Instrument

    libraries first - Add custom spans on-demand - Check benchmarks Black-box
  6. How does it work? Svc 0 Svc 1 tracer tracer

    Collector Tracing System Tracing DB
  7. Demo Lab 02: Tracing Kafka-based applications • Kafka-clients and Kafka-streams

    instrumentation • Kafka Interceptors for Kafka Connectors https://github.com/jeqo/talk-kafka-zipkin#lab-02-twitter-kafka-based-application
  8. Adoption approaches Annotation-based - Part of your code - Instrument

    libraries first - Add custom spans on-demand - Check benchmarks Black-box - Agent-based model - Framework/Protocol support - Machine impact - Promising approach: Service Mesh/Sidecar Proxy
  9. ➔ Model your architecture ➔ Simulate interaction ➔ Generate Traces

    ➔ Visualize your system’s traffic with Vizceral “SimianViz/ Spigo” - Simulation Protocol Interaction in GO github.com/adrianco/spigo
  10. Demo Lab 03: Spigo and Vizceral • Spigo for Simulation

    of Architecture behavior • Zipkin for Tracing and Vizceral for Traffic Monitoring https://github.com/jeqo/talk-kafka-zipkin#lab-3-spigo-simulation
  11. Takeaways ➔ If are doing Distributed Systems — using Kafka

    or not — consider Distributed Tracing. ➔ Instrument libraries first, not your code. ➔ Experiment by simulating your deployment. ➔ How many models can you build from tracing data?!
  12. References Papers - Dapper: https://static.googleusercontent.com/media/research.google.com /en//pubs/archive/36356.pdf - Canopy: http://cs.brown.edu/~jcmace/papers/kaldor2017canopy.pdf -

    Automating Failure Testing Research at Internet Scale: https://people.ucsc.edu/~palvaro/socc16.pdf Posts: - Logging v. Instrumentation https://peter.bourgon.org/blog/2016/02/07/logging-v-instrument ation.html - Monitoring and Observability https://medium.com/@copyconstruct/monitoring-and-observability -8417d1952e1c - Monitoring in the Time of Cloud Native https://medium.com/@copyconstruct/monitoring-in-the-time-of-cl oud-native-c87c7a5bfa3e Tools: - Zipkin: https://zipkin.io/ - Brave: https://github.com/openzipkin/brave - Kafka Interceptors: https://github.com/sysco-middleware/kafka-interceptors - Spigo: https://github.com/adrianco/spigo - Vizceral: https://github.com/Netflix/vizceral