package opentracing
import "github.com/go-kit/kit/tracing/opentracing"
Package opentracing provides Go kit integration to the OpenTracing project. OpenTracing implements a general purpose interface that microservices can program against, and which adapts to all major distributed tracing systems.
Index ¶
- func ContextToGRPC(tracer opentracing.Tracer, logger log.Logger) func(ctx context.Context, md *metadata.MD) context.Context
- func ContextToHTTP(tracer opentracing.Tracer, logger log.Logger) kithttp.RequestFunc
- func GRPCToContext(tracer opentracing.Tracer, operationName string, logger log.Logger) func(ctx context.Context, md metadata.MD) context.Context
- func HTTPToContext(tracer opentracing.Tracer, operationName string, logger log.Logger) kithttp.RequestFunc
- func TraceClient(tracer opentracing.Tracer, operationName string, opts ...EndpointOption) endpoint.Middleware
- func TraceEndpoint(tracer opentracing.Tracer, operationName string, opts ...EndpointOption) endpoint.Middleware
- func TraceServer(tracer opentracing.Tracer, operationName string, opts ...EndpointOption) endpoint.Middleware
- type EndpointOption
- func WithIgnoreBusinessError(ignoreBusinessError bool) EndpointOption
- func WithOperationNameFunc(getOperationName func(ctx context.Context, name string) string) EndpointOption
- func WithOptions(options EndpointOptions) EndpointOption
- func WithTags(tags opentracing.Tags) EndpointOption
- func WithTagsFunc(getTags func(ctx context.Context) opentracing.Tags) EndpointOption
- type EndpointOptions
Functions ¶
func ContextToGRPC ¶
func ContextToGRPC(tracer opentracing.Tracer, logger log.Logger) func(ctx context.Context, md *metadata.MD) context.Context
ContextToGRPC returns a grpc RequestFunc that injects an OpenTracing Span found in `ctx` into the grpc Metadata. If no such Span can be found, the RequestFunc is a noop.
func ContextToHTTP ¶
func ContextToHTTP(tracer opentracing.Tracer, logger log.Logger) kithttp.RequestFunc
ContextToHTTP returns an http RequestFunc that injects an OpenTracing Span found in `ctx` into the http headers. If no such Span can be found, the RequestFunc is a noop.
func GRPCToContext ¶
func GRPCToContext(tracer opentracing.Tracer, operationName string, logger log.Logger) func(ctx context.Context, md metadata.MD) context.Context
GRPCToContext returns a grpc RequestFunc that tries to join with an OpenTracing trace found in `req` and starts a new Span called `operationName` accordingly. If no trace could be found in `req`, the Span will be a trace root. The Span is incorporated in the returned Context and can be retrieved with opentracing.SpanFromContext(ctx).
func HTTPToContext ¶
func HTTPToContext(tracer opentracing.Tracer, operationName string, logger log.Logger) kithttp.RequestFunc
HTTPToContext returns an http RequestFunc that tries to join with an OpenTracing trace found in `req` and starts a new Span called `operationName` accordingly. If no trace could be found in `req`, the Span will be a trace root. The Span is incorporated in the returned Context and can be retrieved with opentracing.SpanFromContext(ctx).
func TraceClient ¶
func TraceClient(tracer opentracing.Tracer, operationName string, opts ...EndpointOption) endpoint.Middleware
TraceClient returns a Middleware that wraps the `next` Endpoint in an OpenTracing Span called `operationName` with client span.kind tag.
func TraceEndpoint ¶
func TraceEndpoint(tracer opentracing.Tracer, operationName string, opts ...EndpointOption) endpoint.Middleware
TraceEndpoint returns a Middleware that wraps the `next` Endpoint in an OpenTracing Span called `operationName`.
If `ctx` already has a Span, child span is created from it. If `ctx` doesn't yet have a Span, the new one is created.
func TraceServer ¶
func TraceServer(tracer opentracing.Tracer, operationName string, opts ...EndpointOption) endpoint.Middleware
TraceServer returns a Middleware that wraps the `next` Endpoint in an OpenTracing Span called `operationName` with server span.kind tag..
Types ¶
type EndpointOption ¶
type EndpointOption func(*EndpointOptions)
EndpointOption allows for functional options to endpoint tracing middleware.
func WithIgnoreBusinessError ¶
func WithIgnoreBusinessError(ignoreBusinessError bool) EndpointOption
WithIgnoreBusinessError if set to true will not treat a business error identified through the endpoint.Failer interface as a span error.
func WithOperationNameFunc ¶
func WithOperationNameFunc(getOperationName func(ctx context.Context, name string) string) EndpointOption
WithOperationNameFunc allows to set function that can set the span operation name based on the existing one for the endpoint and information in the context.
func WithOptions ¶
func WithOptions(options EndpointOptions) EndpointOption
WithOptions sets all configuration options at once by use of the EndpointOptions struct.
func WithTags ¶
func WithTags(tags opentracing.Tags) EndpointOption
WithTags adds default tags for the spans created by the Endpoint tracer.
func WithTagsFunc ¶
func WithTagsFunc(getTags func(ctx context.Context) opentracing.Tags) EndpointOption
WithTagsFunc set the func to extracts additional tags from the context.
type EndpointOptions ¶
type EndpointOptions struct { // IgnoreBusinessError if set to true will not treat a business error // identified through the endpoint.Failer interface as a span error. IgnoreBusinessError bool // GetOperationName is an optional function that can set the span operation name based on the existing one // for the endpoint and information in the context. // // If the function is nil, or the returned name is empty, the existing name for the endpoint is used. GetOperationName func(ctx context.Context, name string) string // Tags holds the default tags which will be set on span // creation by our Endpoint middleware. Tags opentracing.Tags // GetTags is an optional function that can extract tags // from the context and add them to the span. GetTags func(ctx context.Context) opentracing.Tags }
EndpointOptions holds the options for tracing an endpoint
Source Files ¶
doc.go endpoint.go endpoint_options.go grpc.go http.go
- Version
- v0.13.0 (latest)
- Published
- May 29, 2023
- Platform
- linux/amd64
- Imports
- 14 packages
- Last checked
- 4 hours ago –
Tools for package owners.