apm-agent-go: github.com/elastic/apm-agent-go/module/apmot Index | Examples | Files

package apmot

import "github.com/elastic/apm-agent-go/module/apmot"

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)

Code:

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

Package Files

context.go doc.go log.go span.go tracer.go wrapper.go

func New Uses

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.

type Option Uses

type Option func(*otTracer)

Option sets options for the OpenTracing Tracer implementation.

func WithTracer Uses

func WithTracer(t *apm.Tracer) Option

WithTracer returns an Option which sets t as the underlying apm.Tracer for constructing an OpenTracing Tracer.

Package apmot imports 13 packages (graph). Updated 2020-07-19. Refresh now. Tools for package owners.