Documentation ¶
Overview ¶
Package apmot provides an Elastic APM implementation of the OpenTracing API.
Things not implemented by this tracer:
- binary propagation format
- baggage
- logging (generally; errors are reported)
Example ¶
tracer, apmtracer, recorder := newTestTracer() defer apmtracer.Close() opentracing.SetGlobalTracer(tracer) defer opentracing.SetGlobalTracer(nil) parent := opentracing.StartSpan("Parent") for i := 0; i < 5; i++ { id := fmt.Sprintf("span_%d", i) parent.LogEvent(fmt.Sprintf("Starting %s", id)) child := opentracing.StartSpan(id, opentracing.ChildOf(parent.Context())) time.Sleep(10 * time.Millisecond) child.Finish() } parent.LogEvent("A Log") parent.Finish() apmtracer.Flush(nil) payloads := recorder.Payloads() if len(payloads.Transactions) != 1 { panic(fmt.Errorf("expected 1 transaction, got %d", len(payloads.Transactions))) } for _, transaction := range payloads.Transactions { fmt.Printf("transaction: %s/%s\n", transaction.Name, transaction.Type) } for _, span := range payloads.Spans { fmt.Printf("span: %s/%s\n", span.Name, span.Type) }
Output: transaction: Parent/custom span: span_0/custom span: span_1/custom span: span_2/custom span: span_3/custom span: span_4/custom
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func New ¶
func New(opts ...Option) opentracing.Tracer
New returns a new opentracing.Tracer backed by the supplied Elastic APM tracer.
By default, the returned tracer will use apm.DefaultTracer(). This can be overridden by using a WithTracer option. The option WithSpanRefValidator allows one to override the set of spans that are recorded. By default only child-of spans are recorded.
Types ¶
type Option ¶
type Option func(*otTracer)
Option sets options for the OpenTracing Tracer implementation.
func WithSpanRefValidator ¶
func WithSpanRefValidator(validator SpanRefValidator) Option
WithSpanRefValidator returns an Option which sets the span validation function. By default only child-of span are considered valid.
func WithTracer ¶
func WithTracer(t *apm.Tracer) Option
WithTracer returns an Option which sets t as the underlying apm.Tracer for constructing an OpenTracing Tracer.
type SpanRefValidator ¶
type SpanRefValidator func(ref opentracing.SpanReference) bool
SpanRefValidator verifies if a span is valid and should be recorded.