Package otgrpc provides OpenTracing support for any gRPC client or server.
Go
76
71 commits
updated Sep 26, 2026
The otgrpc package makes it easy to add OpenTracing support to gRPC-based
systems in Go.
go get github.com/opentracing-contrib/go-grpc
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.
Overall
Maintained
Code review
Latest release
Releases this year
107 followers · starred Nov 2024
Package otgrpc provides OpenTracing support for any gRPC client or server.
Go
76
71 commits
updated Sep 26, 2026
The otgrpc package makes it easy to add OpenTracing support to gRPC-based
systems in Go.
go get github.com/opentracing-contrib/go-grpc
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.
Overall
Maintained
Code review
Latest release
Releases this year
107 followers · starred Nov 2024