Back to godoc.org

Package tracing

v0.11.129
Latest Go to latest
Published: Jul 10, 2020 | Licenses: Apache-2.0 , MIT | Module: github.com/zalando/skipper

Overview

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

func CreateSpan

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

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

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

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

func LogKV

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

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

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier