Documentation ¶
Index ¶
- func EmbedCorrelationID(ctx context.Context) context.Context
- func GetCorrelationID(ctx context.Context) string
- func HTTPServerMiddleware(next http.Handler) http.Handler
- func SQLMiddleware(ctx context.Context, queryName, query string, args ...interface{}) (context.Context, sql.MiddlewareEnd, error)
- func StreamClientInterceptor(parentCtx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, ...) (grpc.ClientStream, error)
- func StreamServerInterceptor(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, ...) error
- func TraceOutbound(r *http.Request, span opentracing.Span) error
- func UnaryClientInterceptor(parentCtx context.Context, method string, req, reply interface{}, ...) error
- func UnaryServerInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, ...) (interface{}, error)
- type Config
- type CorrelationIDCtxKeyType
- type RoundTripper
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EmbedCorrelationID ¶ added in v0.21.0
EmbedCorrelationID embeds the current Trace ID as the correlation ID in the context logger
func GetCorrelationID ¶ added in v0.14.0
GetCorrelationID returns the correlation ID associated with the given Context. This function only produces meaningful results for Contexts associated with gRPC or HTTP Requests which have passed through their associated tracing middleware.
func HTTPServerMiddleware ¶ added in v0.22.0
HTTPServerMiddleware extracts the OpenTracing context on all incoming HTTP requests, if present. if no trace ID is present in the headers, a trace is initiated.
The following tags are placed on all incoming HTTP requests: * http.method * http.url
Outbound responses will be tagged with the following tags, if applicable: * http.status_code * error (if the status code is >= 500)
The returned HTTP Request includes the wrapped OpenTracing Span Context. Note that this middleware must be attached after writer.StatusRecorderMiddleware for HTTP response span tagging to function.
func SQLMiddleware ¶ added in v0.3.0
func SQLMiddleware(ctx context.Context, queryName, query string, args ...interface{}) (context.Context, sql.MiddlewareEnd, error)
SQLMiddleware traces requests made against SQL databases.
Span names always start with "db". If a queryName is provided (highly recommended), the span name will include the queryname in the format "db_<queryName>"
The following tags are placed on all SQL traces: * component - Always set to "tracing" * db.type - Always set to "sql" * db.statement - Always set to the query statement * error - Set to true only if an error was encountered with the query
func StreamClientInterceptor ¶ added in v0.21.0
func StreamClientInterceptor( parentCtx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption, ) (grpc.ClientStream, error)
StreamClientInterceptor returns a new unary client interceptor that adds the correlation_id to the logger context. Note that this interceptor should *always* be placed after the opentracing interceptor to ensure that an opentracing context is present on the context. Additionally, this interceptor should always appear *before* the logging interceptor to ensure that the correlation_id is properly logged.
func StreamServerInterceptor ¶ added in v0.16.1
func StreamServerInterceptor(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error
StreamServerInterceptor returns a new unary server interceptor that adds the correlation_id to the logger context. Note that this interceptor should *always* be placed after the opentracing interceptor to ensure that an opentracing context is present on the context. Additionally, this interceptor should always appear *before* the logging interceptor to ensure that the correlation_id is properly logged.
func TraceOutbound ¶
TraceOutbound injects outbound HTTP requests with OpenTracing headers
func UnaryClientInterceptor ¶ added in v0.21.0
func UnaryClientInterceptor( parentCtx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption, ) error
UnaryClientInterceptor returns a new unary client interceptor that adds the correlation_id to the logger context. Note that this interceptor should *always* be placed after the opentracing interceptor to ensure that an opentracing context is present on the context. Additionally, this interceptor should always appear *before* the logging interceptor to ensure that the correlation_id is properly logged.
func UnaryServerInterceptor ¶ added in v0.16.1
func UnaryServerInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error)
UnaryServerInterceptor returns a new unary server interceptor that adds the correlation_id to the logger context. Note that this interceptor should *always* be placed after the opentracing interceptor to ensure that an opentracing context is present on the context. Additionally, this interceptor should always appear *before* the logging interceptor to ensure that the correlation_id is properly logged.
Types ¶
type Config ¶
type Config struct { Enabled bool SamplerType string SamplerParam float64 ReporterLogSpans bool ReporterMaxQueueSize int ReporterFlushInterval time.Duration AgentHost string AgentPort int ServiceName string }
Config defines the necessary configuration for instantiating a Tracer
func (Config) ConfigureTracer ¶
ConfigureTracer instantiates and configures the OpenTracer and returns the tracer closer
func (*Config) RegisterFlags ¶
RegisterFlags registers Tracer flags with pflags
type CorrelationIDCtxKeyType ¶ added in v0.33.1
type CorrelationIDCtxKeyType int
CorrelationIDCtxKeyType is the type used to uniquely place the trace header in contexts
const CorrelationIDCtxKey CorrelationIDCtxKeyType = iota
CorrelationIDCtxKey is the key into any context.Context which maps to the correlation id of the given context. This correlation ID can be conveyed to external clients in order to correlate external systems with SpotHero tracing and logging.
type RoundTripper ¶ added in v0.24.0
type RoundTripper struct {
RoundTripper http.RoundTripper
}
RoundTripper provides a proxied HTTP RoundTripper which traces client HTTP request details