class Jaeger::Samplers::Probabilistic

Probabilistic sampler

Sample a portion of traces using trace_id as the random decision

Attributes

rate[R]

Public Class Methods

new(rate: 0.001) click to toggle source
# File lib/jaeger/samplers/probabilistic.rb, line 11
def initialize(rate: 0.001)
  update(rate: rate)
end

Public Instance Methods

sample(trace_id:, **) click to toggle source
# File lib/jaeger/samplers/probabilistic.rb, line 33
def sample(trace_id:, **)
  [@boundary >= trace_id, @tags]
end
update(rate:) click to toggle source
# File lib/jaeger/samplers/probabilistic.rb, line 15
def update(rate:)
  if rate < 0.0 || rate > 1.0
    raise "Sampling rate must be between 0.0 and 1.0, got #{rate.inspect}"
  end

  new_boundary = TraceId::TRACE_ID_UPPER_BOUND * rate
  return false if @boundary == new_boundary

  @rate = rate
  @boundary = TraceId::TRACE_ID_UPPER_BOUND * rate
  @tags = {
    'sampler.type' => 'probabilistic',
    'sampler.param' => rate
  }

  true
end