Transparent proxy to forward Zipkin-compatible data to Honeycomb.
Branch: master
Clone or download
emfree Convert zero parentIDs to nils in thrift decoder
The Jaeger Java client (and possibly others?) set `parentID: 0` instead
of `parentID: nil` when serializing root spans.[1] Convert this to
`parentID: nil`, which works better with the trace UI / starter queries

Latest commit 79ea74f Jun 21, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
app Convert zero parentIDs to nils in thrift decoder Jun 22, 2018
docs Improve readme Mar 14, 2018
sinks Add libhoney user-agent addition Jun 11, 2018
tools Vendor deps Oct 1, 2017
types Convert zero parentIDs to nils in thrift decoder Jun 22, 2018
vendor Bump libhoney dependency to 1.5.0 Jan 6, 2018
.gitignore Rename project Feb 9, 2018
.travis.yml Fix Docker build in travis May 3, 2018
Dockerfile Rename project Feb 9, 2018
LICENSE Lawyer up Oct 1, 2017
glide.lock Bump libhoney dependency to 1.5.0 Jan 6, 2018
glide.yaml Rename project Feb 9, 2018
main.go Clean up logging Jun 5, 2018

honeycomb-opentracing-proxy is a drop-in compatible replacement for Zipkin. If your services are instrumented with OpenTracing and emit span data using Zipkin's wire format, then honeycomb-opentracing-proxy can receive that data and forward it to the Honeycomb API. Using Honeycomb, you can explore single traces, and run queries over aggregated trace data.

flow diagram

Getting Started

First, sign up for a free Honeycomb trial account, and grab your write key from your account page.


If you have Go installed, you can clone this repository and build the proxy using the commands below. Alternatively, a Docker image is available. Binary, deb and RPM package downloads will be available soon!

git clone \
go install


# Forward spans to a Honeycomb dataset named `traces`, using writekey $WRITEKEY
honeycomb-opentracing-proxy -d traces -k $WRITEKEY

# Forward spans to a downstream "real" Zipkin collector as well
honeycomb-opentracing-proxy --downstream

# Write spans to stdout for debugging or local development
honeycomb-opentracing-proxy --debug

If you're using Kubernetes, you can find a sample deployment manifest in the kubernetes/ directory.

Advanced usage

If you're instrumenting a complex codebase, and you'd like to send different types of traces to different Honeycomb datasets, add a honeycomb.dataset tag to your spans. E.g.

span, ctx := opentracing.StartSpan("myNewSpan")
span.SetTag("honeycomb.dataset", "My Shiny Tracing Dataset")