Zipkin is a distributed tracing system that helps us gather timing data for all the disparate services at Twitter.
See http://twitter.github.com/zipkin
To install Zipkin on a single machine, see the Ubuntu Quickstart and Mac Quickstart guides. For more in-depth installation instructions with an explanation of the dependencies and related services, see install.md.
Zipkin itself provides three services:
- To collect data:
bin/collector
- To extract data:
bin/query
- To display data:
bin/web
If all three of these daemons are running, you should be able to visit http://localhost:8080 to view the Zipkin UI. There is also a browser extension which shows visualizations of traces of each page as you browse your website.
The next step is to collect trace data to view in Zipkin. To do this, interface with the collector (e.g. by using Scribe) to record trace data. There are several libraries to make this easier to do in different environments. Twitter uses Finagle; external libraries (currently for Python, REST, node, and Java) are listed in the wiki; and there is also a Ruby gem and Ruby Thrift client.
See the in-depth installation guide for more information.
Check out the #zipkin IRC channel on chat.freenode.com to see if any developers are there for questions or live debugging tips. Otherwise, there are two mailing lists you can use to get in touch with other users and developers.
Users: https://groups.google.com/group/zipkin-user
Developers: https://groups.google.com/group/zipkin-dev
Noticed a bug? https://github.com/twitter/zipkin/issues
See CONTRIBUTING.md for guidelines.
Areas where we'd love to see contributions:
- adding tracing to more libraries and protocols
- interesting reports generated with Hadoop from the trace data
- extending collector to support more transports and storage systems
- trace data visualizations in the web UI
We use SemVer style versioning.
Copyright 2012 Twitter, Inc.
Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0