The otgrpc
package makes it easy to add OpenTracing support to gRPC-based systems in Go.
go get github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc
See the basic usage examples below and the package documentation on godoc.org.
Wherever you call grpc.Dial
:
// You must have some sort of OpenTracing Tracer instance on hand. var tracer opentracing.Tracer = ... ... // Set up a connection to the server peer. conn, err := grpc.Dial( address, ... // other options grpc.WithUnaryInterceptor( otgrpc.OpenTracingClientInterceptor(tracer)), grpc.WithStreamInterceptor( otgrpc.OpenTracingStreamClientInterceptor(tracer))) // All future RPC activity involving `conn` will be automatically traced.
Wherever you call grpc.NewServer
:
// You must have some sort of OpenTracing Tracer instance on hand. var tracer opentracing.Tracer = ... ... // Initialize the gRPC server. s := grpc.NewServer( ... // other options grpc.UnaryInterceptor( otgrpc.OpenTracingServerInterceptor(tracer)), grpc.StreamInterceptor( otgrpc.OpenTracingStreamServerInterceptor(tracer))) // All future RPC activity involving `s` will be automatically traced.