zipkin-go-opentracing

by openzipkin-contrib

openzipkin-contrib / zipkin-go-opentracing

OpenTracing Bridge for Zipkin Go

456 Stars 94 Forks Last release: 11 months ago (v0.4.5) Apache License 2.0 232 Commits 18 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

zipkin-go-opentracing

Travis CI GoDoc Go Report Card Sourcegraph

OpenTracing bridge for the native Zipkin tracing implementation Zipkin Go.

Notes

This package is a simple bridge to allow OpenTracing API consumers to use Zipkin as their tracing backend. For details on how to work with spans and traces we suggest looking at the documentation and README from the OpenTracing API.

For developers interested in adding Zipkin tracing to their Go services we suggest looking at Go kit which is an excellent toolkit to instrument your distributed system with Zipkin and much more with clean separation of domains like transport, middleware / instrumentation and business logic.

Examples

Please check the zipkin-go package for information how to set-up the Zipkin Go native tracer. Once set-up you can simple call the

Wrap
function to create the OpenTracing compatible bridge.
import (
    "github.com/opentracing/opentracing-go"
    "github.com/openzipkin/zipkin-go"
    zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http"
    zipkinot "github.com/openzipkin-contrib/zipkin-go-opentracing"
)

func main() { // bootstrap your app...

// zipkin / opentracing specific stuff
{
    // set up a span reporter
    reporter := zipkinhttp.NewReporter("http://zipkinhost:9411/api/v2/spans")
    defer reporter.Close()

    // create our local service endpoint
    endpoint, err := zipkin.NewEndpoint("myService", "myservice.mydomain.com:80")
    if err != nil {
        log.Fatalf("unable to create local endpoint: %+v\n", err)
    }

    // initialize our tracer
    nativeTracer, err := zipkin.NewTracer(reporter, zipkin.WithLocalEndpoint(endpoint))
    if err != nil {
        log.Fatalf("unable to create tracer: %+v\n", err)
    }

    // use zipkin-go-opentracing to wrap our tracer
    tracer := zipkinot.Wrap(nativeTracer)

    // optionally set as Global OpenTracing tracer instance
    opentracing.SetGlobalTracer(tracer)
}

// do other bootstrapping stuff...

}

For more information on zipkin-go-opentracing, please see the documentation at go doc.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.