https://github.com/zevst/pbot
The wrapper for the distributed trace
https://github.com/zevst/pbot
golang jaeger kafka nats nats-streaming opentracing proto protobuf tracing
Last synced: 6 months ago
JSON representation
The wrapper for the distributed trace
- Host: GitHub
- URL: https://github.com/zevst/pbot
- Owner: zevst
- License: mit
- Archived: true
- Created: 2020-03-25T22:40:42.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-03-29T00:48:25.000Z (over 6 years ago)
- Last Synced: 2025-08-15T14:23:48.642Z (11 months ago)
- Topics: golang, jaeger, kafka, nats, nats-streaming, opentracing, proto, protobuf, tracing
- Language: Go
- Homepage:
- Size: 17.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Protobuf Span for Jaeger
###### Example. Add injector/extractor format
```go
package main
import (
ot "github.com/opentracing/opentracing-go"
jcc "github.com/uber/jaeger-client-go/config"
"github.com/zevst/pbot"
)
func main() {
cfg := jcc.Configuration{
// ...
}
propagator := pbot.NewPropagator() // You can add BaggagePrefix as an option.
// Create Jaeger tracer from Configuration
// be sure to handle the error
tracer, closer, _ := cfg.NewTracer(pbot.Injector(propagator), pbot.Extractor(propagator))
ot.SetGlobalTracer(tracer)
defer func() {
// be sure to handle the error
_ = closer.Close()
}()
// continue main()
}
```
###### Example. Inject
```go
// do not forget to handle errors.
span := opentracing.SpanFromContext(ctx)
if span == nil {
span = opentracing.GlobalTracer().StartSpan("Operation", ext.SpanKindProducer)
}
ctx = opentracing.ContextWithSpan(ctx, span)
wrapper := pbot.NewWrapper()
_ = opentracing.GlobalTracer().Inject(span.Context(), pbot.Format, wrapper)
_ = wrapper.AddPayload(req.GetData())
value, _ := wrapper.Marshal()
// send value
```
###### Example. Extract
```go
// do not forget to handle errors.
wrapper := pbot.NewWrapper()
_ = wrapper.Unmarshal(msg.Data)
sc, _ := tracer.Extract(pbot.Format, wrapper)
opts := []opentracing.StartSpanOption{
ext.SpanKindConsumer,
opentracing.ChildOf(sc),
}
span := tracer.StartSpan("Operation", opts...)
defer span.Finish()
ctx = opentracing.ContextWithSpan(ctx, span)
// read wrapper.GetPayload()
```