Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AppendTracingContext ¶
func AppendTracingContext(goCtx context.Context, tracingContext TracingContext) context.Context
func RegisterTracer ¶
RegisterTracer registers the configured tracer
Types ¶
type CarrierFormat ¶
type CarrierFormat byte
CarrierFormat defines the format of the propogation that needs to injected or extracted
const ( // Binary represents trace context as opaque binary data. Binary CarrierFormat = iota // TextMap represents trace context as key:value string pairs. // // Unlike HTTPHeaders, the TextMap format does not restrict the key or // value character sets in any way. TextMap // HTTPHeaders represents trace context as HTTP header string pairs. // // Unlike TextMap, the HTTPHeaders format requires that the keys and values // be valid as HTTP headers as-is (i.e., character casing may be unstable // and special characters are disallowed in keys, values should be // URL-escaped, etc). HTTPHeaders // Lambda represents trace context as a special header which can be only used // with flogo xray tracing Lambda )
type Tracer ¶
type Tracer interface { // Implement Start() and Stop() methods to manage tracer lifecycle. These methods will be called during engine startup and engine shutdown. managed.Managed // Name() returns the name of the registered tracer Name() string // Extract() returns a TracingContext given `format` and `carrier`. // // FlogoTracer defines a common set of `format` values, and each has an expected `carrier` type. // // After extracting the trace context from the incoming request, the trace context must be appended // to the go context to propogate it to the action handler. // See trace.AppendTracingContext() and trace.ExtractTracingContext(). // // Example usage: // // tr := trace.GetTracer() // tctx, err := tr.Extract(trace.HTTPHeaders, httpReq) // if err != nil { // log.Errorf("failed to extract tracing context due to error: %s", err.Error()) // } // ctx := trace.AppendTracingContext(context.Background(), tctx) // .. // results, err := handler.Handle(ctx, outputData) Extract(format CarrierFormat, carrier interface{}) (TracingContext, error) // Inject() takes the tracing context `tctx` and injects the current trace context for // propagation within `carrier`. The actual type of `carrier` depends on the value of `format`. // // trace.Tracer defines a common set of `format` values, and each has an expected `carrier` type. // // Example usage: // // tracer := trace.GetTracer() // err = tracer.Inject(ctx.TracingContext(), trace.HTTPHeaders, req) Inject(tCtx TracingContext, format CarrierFormat, carrier interface{}) error // StartTrace() returns a wrapped implementation specific trace created by the underlying tracing implementation. // Non nil parent can be used to establish parent-child relationship between trace object. StartTrace(config Config, parent TracingContext) (TracingContext, error) // FinishTrace() finishes a wrapped implementation specific trace // Non nil error indicates failure FinishTrace(tContext TracingContext, err error) error }
Tracer interface to configure individual tracers
type TracingContext ¶
type TracingContext interface { // TraceObject() returns underlying tracing implementation TraceObject() interface{} // SetTags() allows you to set one or more tags to tracing object SetTags(tags map[string]interface{}) bool // SetTags() allows you to add tag to tracing object SetTag(tagKey string, tagValue interface{}) bool // LogKV() allows you to log additional details about the entity being traced LogKV(kvs map[string]interface{}) bool }
func ExtractTracingContext ¶
func ExtractTracingContext(goCtx context.Context) TracingContext
Click to show internal directories.
Click to hide internal directories.