Developer Guide¶
Tracing helper library The library creates a configured tracer instance.
Tracelibgo Repo¶
git clone "https://gerrit.o-ran-sc.org/r/ric-plt/tracelibgo"
Usage¶
Create a tracer instance and set it as a global tracer:
import (
"github.com/opentracing/opentracing-go"
"gerrit.o-ran-sc.org/ric-plt/tracelibgo/pkg/tracelibgo"
...
)
tracer, closer := tracelibgo.CreateTracer("my-service-name")
defer closer.Close()
opentracing.SetGlobalTracer(tracer)
Serialize span context to a byte array that can be sent to another component via some messaging. For example, using the RMR library. The serialization uses JSON format.
carrier := make(map[string]string)
opentracing.GlobalTracer().Inject(
span.Context(),
opentracing.TextMap,
opentracing.TextMapCarrier(carrier))
b, err := json.Marshal(carrier) // b is a []byte and contains serilized span context
Extract a span context from byte array and create a new child span from it.The serialized span context is got, for example, from the RMR library.
var carrier map[string]string
err = json.Unmarshal(data, &carrier) // data is []byte containing serialized span context
if err != nil {
...
}
context, err := opentracing.GlobalTracer().Extract(opentracing.TextMap, opentracing.TextMapCarrier(carrier))
if err != nil {
...
}
span := opentracing.GlobalTracer().StartSpan("go test span", opentracing.ChildOf(context))
Configuration¶
The trace library currently supports only [Jaeger](https://www.jaegertracing.io/) [golang client](https://github.com/jaegertracing/jaeger-client-go) tracer implementation. The configuration is done using environment variables:
environment variable |
values |
default |
TRACING_ENABLED |
1, true, 0, false |
false |
TRACING_JAEGER_SAMPLER_TYPE |
const, propabilistic, ratelimiting |
const |
TRACING_JAEGER_SAMPLER_PARAM |
float |
0.001 |
TRACING_JAEGER_AGENT_ADDR |
IP addr[:port] |
127.0.0.1:6831 |
TRACING_JAEGER_LOG_LEVEL |
all, error, none |
none |
Meaning of the configuration variables is described in Jaeger web pages. By default a no-op tracer is created.
Unit testing¶
GO111MODULE=on go mod download
go test ./pkg/tracelibgo