• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..08-Nov-2019-

README.mdH A D08-Nov-20192.5 KiB9270

doc.goH A D08-Nov-2019691 171

propagation.goH A D08-Nov-20193.6 KiB12288

propagation_test.goH A D08-Nov-20195.4 KiB193157

README.md

1# Zipkin compatibility features
2
3## `NewZipkinB3HTTPHeaderPropagator()`
4
5Adds support for injecting and extracting Zipkin B3 Propagation HTTP headers,
6for use with other Zipkin collectors.
7
8```go
9
10// ...
11import (
12	opentracing "github.com/opentracing/opentracing-go"
13	jaeger "github.com/uber/jaeger-client-go"
14	"github.com/uber/jaeger-client-go/zipkin"
15)
16
17func main() {
18	// ...
19
20	zipkinPropagator := zipkin.NewZipkinB3HTTPHeaderPropagator()
21	injector := jaeger.TracerOptions.Injector(opentracing.HTTPHeaders, zipkinPropagator)
22	extractor := jaeger.TracerOptions.Extractor(opentracing.HTTPHeaders, zipkinPropagator)
23
24	// Zipkin shares span ID between client and server spans; it must be enabled via the following option.
25	zipkinSharedRPCSpan := jaeger.TracerOptions.ZipkinSharedRPCSpan(true)
26
27	// create Jaeger tracer
28	tracer, closer := jaeger.NewTracer(
29		"myService",
30		mySampler, // as usual
31		myReporter // as usual
32		injector,
33		extractor,
34		zipkinSharedRPCSpan,
35	)
36
37	opentracing.SetGlobalTracer(tracer)
38
39    // continue main()
40}
41```
42
43If you'd like to follow the official guides from https://godoc.org/github.com/uber/jaeger-client-go/config#example-Configuration-InitGlobalTracer-Production, here is an example.
44
45```go
46import (
47	"time"
48
49	opentracing "github.com/opentracing/opentracing-go"
50	"github.com/uber/jaeger-client-go"
51	jaegerClientConfig "github.com/uber/jaeger-client-go/config"
52	"github.com/uber/jaeger-client-go/zipkin"
53	"github.com/uber/jaeger-client-go/log"
54	"github.com/uber/jaeger-lib/metrics"
55)
56
57func main(){
58	//...
59
60	// Recommended configuration for production.
61	cfg := jaegercfg.Configuration{}
62
63	// Example logger and metrics factory. Use github.com/uber/jaeger-client-go/log
64	// and github.com/uber/jaeger-lib/metrics respectively to bind to real logging and metrics
65	// frameworks.
66	jLogger := jaegerlog.StdLogger
67	jMetricsFactory := metrics.NullFactory
68
69	// Zipkin shares span ID between client and server spans; it must be enabled via the following option.
70	zipkinPropagator := zipkin.NewZipkinB3HTTPHeaderPropagator()
71
72	// Create tracer and then initialize global tracer
73	closer, err := cfg.InitGlobalTracer(
74	  serviceName,
75	  jaegercfg.Logger(jLogger),
76	  jaegercfg.Metrics(jMetricsFactory),
77	  jaegercfg.Injector(opentracing.HTTPHeaders, zipkinPropagator),
78	  jaegercfg.Extractor(opentracing.HTTPHeaders, zipkinPropagator),
79	  jaegercfg.ZipkinSharedRPCSpan(true),
80	)
81
82	if err != nil {
83	    log.Printf("Could not initialize jaeger tracer: %s", err.Error())
84	    return
85	}
86	defer closer.Close()
87
88	// continue main()
89}
90
91```
92