Making Open Work
May 8–9, 2017: Training & Tutorials
May 10–11, 2017: Conference
Austin, TX

From zero to distributed traces: An OpenTracing tutorial

Ben Sigelman (LightStep), Yuri Shkuro (Uber), Priyanka Sharma (LightStep )
1:30pm5:00pm Tuesday, May 9, 2017
Infrastructure
Location: Ballroom E
Level: Intermediate
Average rating: **...
(2.50, 4 ratings)

Who is this presentation for?

  • Developers and DevOps engineers with some programming experience building and maintaining production systems

Prerequisite knowledge

  • Experience working on a live system in production
  • Familiarity with making changes to both sides of an internal HTTP request or RPC call (e.g., a web client and the service it communicates or a client and server pair in a microservice-to-microservice RPC)

Materials or downloads needed in advance

  • A laptop with Docker installed for the localhost Zipkin integration and a development environment for at least one of the following languages: Go, Java, Python, Browser JavaScript, or Node.js.
  • Please review this document with more details about the workshop and how we’ll segment the time. Please pay special attention to the prerequisites section.

What you'll learn

  • Understand the role and importance of distributed tracing
  • Go from zero to useful traces in under an hour with OpenTracing, walking you through visualizing the critical path for transactions with microservices, enabling debugging, latency monitoring, and overall performance gains

Description

Those building microservices understand the role and importance of distributed tracing. After all, it’s the most direct way to understand how and why complex systems misbehave. Indeed, every organization that’s adopted microservices at scale has had to deploy a distributed tracing solution—first with Dapper at Google, then with Zipkin at Twitter, and now with various open source and commercial tracing solutions at other early-adopter technology companies. As our industry migrates toward microservice architectures, distributed tracing will become the table stakes for visibility into production systems; thus, developers must learn how to integrate and deploy tracing technology effectively.

Ben Sigelman, Yuri Shkuro, and Priyanka Sharma help you go from zero to useful traces in under an hour with OpenTracing, walking you through visualizing the critical path for transactions with microservices, enabling debugging, latency monitoring, and overall performance gains. The goal throughout is to demystify distributed tracing and convey the best practices through interactive lessons, placing a special focus on source-code instrumentation and integration strategies, as historically those have been the most daunting aspect of distributed tracing for newcomers.

Outline

Part I

  • The basics: Discuss the concepts behind distributed tracing with examples of use cases from companies using it successfully
  • See a trace: Walk through a tutorial with a sample app that you’ll be able to download and instrument with OpenTracing, using Docker and Zipkin to see traces on localhost

Part II

  • Start instrumenting your own system “the right way”: Instrument your own codebase using your new-found knowledge (We will go over best practices around which components to start with, which transactions are most important and, which traces will tell the most compelling stories. For those who do not have their own codebase, an example will be provided.)
Photo of Ben Sigelman

Ben Sigelman

LightStep

Ben Sigelman is the cofounder and CEO of LightStep, where he’s building reliability management for modern systems. An expert in distributed tracing, Ben is the coauthor of the OpenTracing standard, a project within the Linux Foundation’s Cloud Native Computing Foundation (CNCF). Previously, he built Dapper, Google’s production distributed systems tracing infrastructure, and Monarch, Google’s fleet-wide time series collection, storage, analysis, and alerting system. Ben holds a BSc in mathematics and computer science from Brown University.

Photo of Yuri Shkuro

Yuri Shkuro

Uber

Yuri Shkuro is a staff engineer at Uber Technologies, working on distributed tracing, reliability, and performance. Yuri is the coauthor of the OpenTracing standard (a CNCF project) and a tech lead for Jaeger, Uber’s open source distributed tracing system.

Photo of Priyanka Sharma

Priyanka Sharma

LightStep

Priyanka Sharma is an entrepreneur with a passion for building developer products and growing them through open source communities. Priyanka heads marketing and partnerships at LightStep and also works on the OpenTracing project, an instrumentation standard for distributed tracing. In her copious spare time, she advises startups at HeavyBit industries, an accelerator for developer products. Priyanka cofounded WakaTime, an open source time tracker for developers. She holds a BA in political science from Stanford University.

Comments on this page are now closed.

Comments

Picture of Ben Sigelman
Ben Sigelman | COFOUNDER AND CEO
05/07/2017 12:00pm CDT

@Michelle / @Ryan: we’ve added a link to a simple JVM-based thing here:

https://docs.google.com/document/d/1aH3oC92iaITEP6tHMr7hYDsA74lLl_eB9GpkmSDcyIE/edit#heading=h.l5w5e8dlw1yn

Feel free to reach out via https://gitter.im/opentracing/public if you want to get started early and run into any trouble.

Thanks, and looking forward to meeting everyone!

Picture of Yuri Shkuro
Yuri Shkuro | STAFF ENGINEER
05/07/2017 8:11am CDT

@Michael this comment section is probably not the best forum to troubleshoot installation issues, I suggest you open a ticket on GitHub and provide as much details as you can, in particular the output from `make install_examples` (which should’ve installed all the packages)

Michelle Hempel | SOFTWARE ENGINEER
05/07/2017 6:17am CDT

I’m having trouble running the Go Hotrod example, I seem to be missing a bunch of packages, eg:

services/driver/thrift-gen/driver/constants.go:9:2: cannot find package “github.com/apache/thrift/lib/go/thrift” in any of:
/usr/local/go/src/github.com/apache/thrift/lib/go/thrift (from $GOROOT)
/Users/hempelm/go/src/github.com/apache/thrift/lib/go/thrift (from $GOPATH)
pkg/tracing/http.go:30:2: cannot find package “github.com/opentracing-contrib/go-stdlib/nethttp” in any of:
/usr/local/go/src/github.com/opentracing-contrib/go-stdlib/nethttp (from $GOROOT)
/Users/hempelm/go/src/github.com/opentracing-contrib/go-stdlib/nethttp (from $GOPATH)

If the Java sample will be available I’ll quit messing with this.

Ryan Michela | PRINCIPAL MEMBER OF TECHNICAL STAFF
05/05/2017 10:22am CDT

Is the Java sample app available yet?

Picture of Ben Sigelman
Ben Sigelman | COFOUNDER AND CEO
05/02/2017 10:28am CDT

Hello Attendees!

We the organizers/facilitators have put together a document with more details about the workshop and how we’ll segment the time. Please take a look, esp the prereqs section.

OSCON Distributed Tracing Workshop

Looking forward to seeing you in Austin!

Ben (and Yuri and Priyanka)

Adam Patt | SR. DEVOPS ENGINEER
05/01/2017 6:40pm CDT

The command did the trick. Thanks.

Picture of Ben Sigelman
Ben Sigelman | COFOUNDER AND CEO
04/29/2017 11:08am CDT

Adam, you can install the zipkin image like so:

docker run -d -p 9411:9411 openzipkin/zipkin

Jaeger is also OpenTracing compatible (OpenTracing-native, in fact) and has a nice getting-started guide:

http://jaeger.readthedocs.io/en/latest/getting_started/

If you get through ^, you should be all set!

Adam Patt | SR. DEVOPS ENGINEER
04/29/2017 12:26am CDT

I’m afraid I don’t know docker and can’t see where to get this image from. Can you please provide specific directions on where to get this image and how to install it for Docker to use. I have docker installed no problem.
Thanks.

Picture of Ben Sigelman
Ben Sigelman | COFOUNDER AND CEO
04/26/2017 6:33pm CDT

Adam: “localhost Zipkin” means installing docker and downloading the Zipkin-in-a-single-image image.

Adam Patt | SR. DEVOPS ENGINEER
04/26/2017 11:02am CDT

What exactly is needed for the “localhost Zipkin integration” other than just having docker installed?