class Datadog::RateByServiceSampler

RateByServiceSampler samples different services at different rates

Constants

DEFAULT_KEY

Public Class Methods

new(default_rate = 1.0, options = {}) click to toggle source
Calls superclass method Datadog::RateByKeySampler::new
# File lib/ddtrace/sampler.rb, line 167
def initialize(default_rate = 1.0, options = {})
  super(DEFAULT_KEY, default_rate, &method(:key_for))
  @env = options[:env]
end

Public Instance Methods

update(rate_by_service) click to toggle source
# File lib/ddtrace/sampler.rb, line 172
def update(rate_by_service)
  # Remove any old services
  delete_if { |key, _| key != DEFAULT_KEY && !rate_by_service.key?(key) }

  # Update each service rate
  update_all(rate_by_service)

  # Emit metric for service cache size
  Datadog.health_metrics.sampling_service_cache_length(length)
end

Private Instance Methods

key_for(span) click to toggle source
# File lib/ddtrace/sampler.rb, line 185
def key_for(span)
  # Resolve env dynamically, if Proc is given.
  env = @env.is_a?(Proc) ? @env.call : @env

  "service:#{span.service},env:#{env}"
end