Documentation ¶
Overview ¶
Package sampling contains the interfaces and data types used to implement the various sampling policies.
Index ¶
- type Decision
- type PolicyEvaluator
- func NewAlwaysSample(logger *zap.Logger) PolicyEvaluator
- func NewLatency(logger *zap.Logger, thresholdMs int64) PolicyEvaluator
- func NewNumericAttributeFilter(logger *zap.Logger, key string, minValue, maxValue int64) PolicyEvaluator
- func NewProbabilisticSampler(logger *zap.Logger, hashSalt string, samplingPercentage float64) PolicyEvaluator
- func NewRateLimiting(logger *zap.Logger, spansPerSecond int64) PolicyEvaluator
- func NewStatusCodeFilter(logger *zap.Logger, statusCodeString []string) (PolicyEvaluator, error)
- func NewStringAttributeFilter(logger *zap.Logger, key string, values []string, regexMatchEnabled bool, ...) PolicyEvaluator
- type TraceData
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Decision ¶
type Decision int32
Decision gives the status of sampling decision.
const ( // Unspecified indicates that the status of the decision was not set yet. Unspecified Decision = iota // Pending indicates that the policy was not evaluated yet. Pending // Sampled is used to indicate that the decision was already taken // to sample the data. Sampled // NotSampled is used to indicate that the decision was already taken // to not sample the data. NotSampled // Dropped is used when data needs to be purged before the sampling policy // had a chance to evaluate it. Dropped // Error is used to indicate that policy evaluation was not succeeded. Error // InvertSampled is used on the invert match flow and indicates to sample // the data. InvertSampled // InvertNotSampled is used on the invert match flow and indicates to not // sample the data. InvertNotSampled )
type PolicyEvaluator ¶
type PolicyEvaluator interface { // OnLateArrivingSpans notifies the evaluator that the given list of spans arrived // after the sampling decision was already taken for the trace. // This gives the evaluator a chance to log any message/metrics and/or update any // related internal state. OnLateArrivingSpans(earlyDecision Decision, spans []*pdata.Span) error // Evaluate looks at the trace data and returns a corresponding SamplingDecision. Evaluate(traceID pdata.TraceID, trace *TraceData) (Decision, error) }
PolicyEvaluator implements a tail-based sampling policy evaluator, which makes a sampling decision for a given trace when requested.
func NewAlwaysSample ¶
func NewAlwaysSample(logger *zap.Logger) PolicyEvaluator
NewAlwaysSample creates a policy evaluator the samples all traces.
func NewLatency ¶
func NewLatency(logger *zap.Logger, thresholdMs int64) PolicyEvaluator
NewLatency creates a policy evaluator sampling traces with a duration higher than a configured threshold
func NewNumericAttributeFilter ¶
func NewNumericAttributeFilter(logger *zap.Logger, key string, minValue, maxValue int64) PolicyEvaluator
NewNumericAttributeFilter creates a policy evaluator that samples all traces with the given attribute in the given numeric range.
func NewProbabilisticSampler ¶ added in v0.34.0
func NewProbabilisticSampler(logger *zap.Logger, hashSalt string, samplingPercentage float64) PolicyEvaluator
NewProbabilisticSampler creates a policy evaluator that samples a percentage of traces.
func NewRateLimiting ¶
func NewRateLimiting(logger *zap.Logger, spansPerSecond int64) PolicyEvaluator
NewRateLimiting creates a policy evaluator the samples all traces.
func NewStatusCodeFilter ¶
func NewStatusCodeFilter(logger *zap.Logger, statusCodeString []string) (PolicyEvaluator, error)
NewStatusCodeFilter creates a policy evaluator that samples all traces with a given status code.
func NewStringAttributeFilter ¶
func NewStringAttributeFilter(logger *zap.Logger, key string, values []string, regexMatchEnabled bool, evictSize int, invertMatch bool) PolicyEvaluator
NewStringAttributeFilter creates a policy evaluator that samples all traces with the given attribute in the given numeric range.
type TraceData ¶
type TraceData struct { sync.Mutex // Decisions gives the current status of the sampling decision for each policy. Decisions []Decision // Arrival time the first span for the trace was received. ArrivalTime time.Time // Decisiontime time when sampling decision was taken. DecisionTime time.Time // SpanCount track the number of spans on the trace. SpanCount int64 // ReceivedBatches stores all the batches received for the trace. ReceivedBatches []pdata.Traces }
TraceData stores the sampling related trace data.