Class: Jaeger::Samplers::RateLimiting

Inherits:
Object
  • Object
show all
Defined in:
lib/jaeger/samplers/rate_limiting.rb

Overview

Samples at most max_traces_per_second. The distribution of sampled traces follows burstiness of the service, i.e. a service with uniformly distributed requests will have those requests sampled uniformly as well, but if requests are bursty, especially sub-second, then a number of sequential requests can be sampled each second.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(max_traces_per_second: 10) ⇒ RateLimiting

Returns a new instance of RateLimiting.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/jaeger/samplers/rate_limiting.rb', line 13

def initialize(max_traces_per_second: 10)
  if max_traces_per_second < 0.0
    raise "max_traces_per_second must not be negative, got #{max_traces_per_second}"
  end

  @rate_limiter = RateLimiter.new(
    credits_per_second: max_traces_per_second,
    max_balance: [max_traces_per_second, 1.0].max
  )
  @tags = {
    'sampler.type' => 'ratelimiting',
    'sampler.param' => max_traces_per_second
  }
end

Instance Attribute Details

#tagsObject (readonly)

Returns the value of attribute tags.



11
12
13
# File 'lib/jaeger/samplers/rate_limiting.rb', line 11

def tags
  @tags
end

Instance Method Details

#sample?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/jaeger/samplers/rate_limiting.rb', line 28

def sample?(*)
  [@rate_limiter.check_credit(1.0), @tags]
end