The grpc_opentracing package makes it easy to add OpenTracing support to gRPC-based
systems in Go.
Work in progress
go get github.com/lygo/go-grpc-opentracing
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(
grpc_opentracing.OpenTracingClientUnaryInterceptor(),
),
grpc.WithStreamInterceptor(
grpc_opentracing.OpenTracingClientStreamInterceptor(),
),
)
// 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(
grpc_opentracing.OpenTracingServerUnaryInterceptor(),
),
grpc.StreamInterceptor(
grpc_opentracing.OpenTracingServerStreamInterceptor(),
),
)
// All future RPC activity involving `s` will be automatically traced.- tests
- settle tracing format