skipper: github.com/zalando/skipper/tracing Index | Files | Directories

package tracing

import "github.com/zalando/skipper/tracing"

Package tracing handles opentracing support for skipper

Implementations of Opentracing API can be found in the https://github.com/skipper-plugins. It follows how to implement a new tracer plugin for this interface.

The tracers, except for "noop", are built as Go Plugins. Note the warning from Go's plugin.go:

// The plugin support is currently incomplete, only supports Linux,
// and has known bugs. Please report any issues.

All plugins must have a function named "InitTracer" with the following signature

func([]string) (opentracing.Tracer, error)

The parameters passed are all arguments for the plugin, i.e. everything after the first word from skipper's -opentracing parameter. E.g. when the -opentracing parameter is "mytracer foo=bar token=xxx somename=bla:3" the "mytracer" plugin will receive

[]string{"foo=bar", "token=xxx", "somename=bla:3"}

as arguments.

The tracer plugin implementation is responsible to parse the received arguments.

An example plugin looks like

package main

import (
     basic "github.com/opentracing/basictracer-go"
     opentracing "github.com/opentracing/opentracing-go"
)

func InitTracer(opts []string) (opentracing.Tracer, error) {
     return basic.NewTracerWithOptions(basic.Options{
         Recorder:       basic.NewInMemoryRecorder(),
         ShouldSample:   func(traceID uint64) bool { return traceID%64 == 0 },
         MaxLogsPerSpan: 25,
     }), nil
}

This should be built with

go build -buildmode=plugin -o basic.so ./basic/basic.go

and copied to the given as -plugindir (by default, "./plugins").

Then it can be loaded with -opentracing basic as parameter to skipper.

Index

Package Files

tracing.go

func CreateSpan Uses

func CreateSpan(name string, ctx context.Context, openTracer ot.Tracer) ot.Span

CreateSpan creates a started span from an optional given parent from context

func InitTracer Uses

func InitTracer(opts []string) (tracer ot.Tracer, err error)

InitTracer initializes an opentracing tracer. The first option item is the tracer implementation name.

func LoadPlugin Uses

func LoadPlugin(pluginDir string, opts []string) (ot.Tracer, error)

LoadPlugin loads the given opentracing plugin and returns an opentracing.Tracer DEPRECATED, use LoadTracingPlugin

func LoadTracingPlugin Uses

func LoadTracingPlugin(pluginDirs []string, opts []string) (tracer ot.Tracer, err error)

func LogKV Uses

func LogKV(k, v string, ctx context.Context)

LogKV will add a log to the span from the given context

Directories

PathSynopsis
tracers/basic
tracers/instana
tracers/jaeger
tracers/lightstep
tracingtestPackage tracingtest provides an OpenTracing implementation for testing purposes.

Package tracing imports 10 packages (graph) and is imported by 5 packages. Updated 2019-08-28. Refresh now. Tools for package owners.