Class: Datadog::Tracing::Sampling::RateSampler
- Defined in:
- lib/datadog/tracing/sampling/rate_sampler.rb
Overview
RateSampler is based on a sample rate.
Constant Summary collapse
- KNUTH_FACTOR =
1111111111111111111
Instance Method Summary collapse
-
#initialize(sample_rate = 1.0, decision: nil) ⇒ RateSampler
constructor
Initialize a RateSampler.
- #sample!(trace) ⇒ Object
- #sample?(trace) ⇒ Boolean
- #sample_rate(*_) ⇒ Object
- #sample_rate=(sample_rate) ⇒ Object
Constructor Details
#initialize(sample_rate = 1.0, decision: nil) ⇒ RateSampler
Initialize a Datadog::Tracing::Sampling::RateSampler. This sampler keeps a random subset of the traces. Its main purpose is to reduce the instrumentation footprint.
19 20 21 22 23 |
# File 'lib/datadog/tracing/sampling/rate_sampler.rb', line 19 def initialize(sample_rate = 1.0, decision: nil) super() @sampler = Core::KnuthSampler.new(sample_rate, knuth_factor: KNUTH_FACTOR) @decision = decision end |
Instance Method Details
#sample!(trace) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/datadog/tracing/sampling/rate_sampler.rb', line 37 def sample!(trace) return false unless sample?(trace) trace.sample_rate = sample_rate trace.set_tag(Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER, @decision) if @decision true end |
#sample?(trace) ⇒ Boolean
33 34 35 |
# File 'lib/datadog/tracing/sampling/rate_sampler.rb', line 33 def sample?(trace) @sampler.sample?(trace.id) end |
#sample_rate(*_) ⇒ Object
25 26 27 |
# File 'lib/datadog/tracing/sampling/rate_sampler.rb', line 25 def sample_rate(*_) @sampler.rate end |
#sample_rate=(sample_rate) ⇒ Object
29 30 31 |
# File 'lib/datadog/tracing/sampling/rate_sampler.rb', line 29 def sample_rate=(sample_rate) @sampler = Core::KnuthSampler.new(sample_rate, knuth_factor: KNUTH_FACTOR) end |