pbot

package module
v0.0.0-...-dd132ac Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 29, 2020 License: MIT Imports: 7 Imported by: 0

README

Protobuf Span for Jaeger

Example. Add injector/extractor format
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
// 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
// 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()

Documentation

Index

Constants

View Source
const Format = "pb-span-format"

ProtoBufSpanFormat is an OpenTracing carrier format constant

Variables

This section is empty.

Functions

func Extractor

func Extractor(p *propagator) jcc.Option

func Injector

func Injector(p *propagator) jcc.Option

func NewPropagator

func NewPropagator(opts ...Option) *propagator

Types

type Option

type Option func(p *propagator)

Option sets an option on Propagator

func BaggagePrefix

func BaggagePrefix(prefix string) Option

BaggagePrefix sets baggage prefix on Propagator

type SpanProtobufGetters

type SpanProtobufGetters interface {
	GetTraceID() jaeger.TraceID
	GetSpanID() jaeger.SpanID
	GetParentID() jaeger.SpanID
	GetFlags() bool
	GetBaggage() map[string]string
}

type SpanProtobufPayload

type SpanProtobufPayload interface {
	proto.Marshaler
	proto.Unmarshaler

	AddPayload(any *types.Any) error
	GetPayload() *types.Any
}

func NewWrapper

func NewWrapper() SpanProtobufPayload

type SpanProtobufSetters

type SpanProtobufSetters interface {
	SetTraceID(id jaeger.TraceID)
	SetSpanID(id jaeger.SpanID)
	SetParentID(id jaeger.SpanID)
	SetFlags(flags byte)
	SetBaggage(key, value string) bool
}

Directories

Path Synopsis
pb

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL