apmot

package module
v2.6.2 Latest Latest
Warning

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

Go to latest
Published: Aug 30, 2024 License: Apache-2.0 Imports: 12 Imported by: 1

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.

Jump to

Keyboard shortcuts

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