https://github.com/opentracing-contrib/go-grpc
Package otgrpc provides OpenTracing support for any gRPC client or server.
https://github.com/opentracing-contrib/go-grpc
go grpc opentracing
Last synced: about 1 year ago
JSON representation
Package otgrpc provides OpenTracing support for any gRPC client or server.
- Host: GitHub
- URL: https://github.com/opentracing-contrib/go-grpc
- Owner: opentracing-contrib
- License: apache-2.0
- Created: 2018-05-07T21:27:58.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2025-05-14T19:39:17.000Z (about 1 year ago)
- Last Synced: 2025-05-14T20:43:41.172Z (about 1 year ago)
- Topics: go, grpc, opentracing
- Language: Go
- Homepage:
- Size: 68.4 KB
- Stars: 75
- Watchers: 3
- Forks: 11
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# OpenTracing support for gRPC in Go
[](https://github.com/opentracing-contrib/go-grpc/actions/workflows/ci.yml)
[](https://goreportcard.com/report/github.com/opentracing-contrib/go-grpc)

[](https://github.com/opentracing-contrib/go-grpc/releases/latest)
The `otgrpc` package makes it easy to add OpenTracing support to gRPC-based
systems in Go.
## Installation
```shell
go get github.com/opentracing-contrib/go-grpc
```
## Documentation
See the basic usage examples below and the [package documentation on
godoc.org](https://godoc.org/github.com/opentracing-contrib/go-grpc).
## Client-side usage example
Wherever you call `grpc.Dial`:
```go
// 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`:
```go
// 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.
```