go-grpc
go-grpc copied to clipboard
Package otgrpc provides OpenTracing support for any gRPC client or server.
OpenTracing support for gRPC in Go
The otgrpc package makes it easy to add OpenTracing support to gRPC-based
systems in Go.
Installation
go get github.com/opentracing-contrib/go-grpc
Documentation
See the basic usage examples below and the package documentation on godoc.org.
Client-side usage example
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.
Server-side usage example
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.