transport/zipkin/example_test.go
を参考に、以下のようにZipkinへのReporterをTracerに設定する。
transport, err := zipkin.NewHTTPTransport(
"http://169.254.123.123:9411/api/v1/spans",
zipkin.HTTPBatchSize(10),
zipkin.HTTPLogger(jlog.StdLogger),
)
if err != nil {
log.Fatalf("Cannot initialize Zipkin HTTP transport: %v", err)
}
tracer, closer := jaeger.NewTracer(
"my-service-name",
jaeger.NewConstSampler(true),
jaeger.NewRemoteReporter(transport, nil),
)
defer closer.Close()
opentracing.SetGlobalTracer(tracer)
ポイントは、
- jaeger.NewTracerにはReporter(Spanを送るコンポーネント)を設定できる
-
jaeger.NewRemoteReporter(transport, nil)
でtransport
経由でネットワーク越しにSpanを送るReporterをつくれる -
zipkin.NewHTTPTransport
でZipkin HTTP Endpoint宛のTransportをつくれる -
zipkin.NewHTTPTransport
の第一引数にZipkin HTTP EndpointのURLを指定する
Zipkin HTTP EndpointのURLは基本的に、http://$ZIPKIN_HOST:9411/api/v1/spans
という形式になるはず。
応用
-
Kubernetesにdd-agent + dd-zipkin-proxyをデプロイする場合、Zipkin HTTP Endpoint URLは
http://$MAGIC_IP:9411/api/v1/spans
のようにする- Zipkin HTTP Endpointを各ノードに起き、$MAGIC_IPへアクセスすると各ノードのZipkin HTTP EndpointにDNATされるようにしておく