class XRay::Configuration

This class stores all configurations for X-Ray recorder and should be initialized only once.

Constants

CONFIG_KEY
SEGMENT_NAME_KEY

Attributes

context[RW]
emitter[RW]
logger[R]

The global logger used across the X-Ray SDK. @return [Logger]

name[R]

@return [String] The default segment name.

plugins[RW]
sampler[RW]
sampling[RW]
segment_naming[RW]
streamer[RW]

Public Class Methods

new() click to toggle source
# File lib/aws-xray-sdk/configuration.rb, line 25
def initialize
  @name = ENV[SEGMENT_NAME_KEY]
  @sampling = true
  @emitter = DefaultEmitter.new
  @context = DefaultContext.new
  @sampler = DefaultSampler.new
  @streamer = DefaultStreamer.new
  @segment_naming = DynamicNaming.new fallback: @name
  @plugins = []
end

Public Instance Methods

configure(user_config) click to toggle source

@param [Hash] user_config The user configuration overrides.

# File lib/aws-xray-sdk/configuration.rb, line 77
def configure(user_config)
  raise InvalidConfigurationError.new('User config must be a Hash.') unless user_config.is_a?(Hash)
  return if user_config.empty?

  user_config.each_key do |key|
    case key
    when :logger
      XRay::Logging.logger = user_config[key]
    when :name
      self.name = user_config[key]
    when :context
      self.context = user_config[key]
    when :context_missing
      self.context_missing = user_config[key]
    when :sampler
      self.sampler = user_config[key]
    when :sampling_rules
      self.sampling_rules = user_config[key]
    when :sampling
      self.sampling = user_config[key]
    when :emitter
      self.emitter = user_config[key]
    when :daemon_address
      self.daemon_address = user_config[key]
    when :segment_naming
      self.segment_naming = user_config[key]
    when :naming_pattern
      self.naming_pattern = user_config[key]
    when :streamer
      self.streamer = user_config[key]
    when :stream_threshold
      self.stream_threshold = user_config[key]
    when :plugins
      self.plugins = load_plugins(user_config[key])
    when :patch
      patch(user_config[key])
    else
      raise InvalidConfigurationError.new(%(Invalid config key #{key}.))
    end
  end
end
context_missing=(v) click to toggle source

proxy method to the context's context_missing config.

# File lib/aws-xray-sdk/configuration.rb, line 51
def context_missing=(v)
  context.context_missing = v
end
daemon_address=(v) click to toggle source

setting daemon address for components communicate with X-Ray daemon.

# File lib/aws-xray-sdk/configuration.rb, line 43
def daemon_address=(v)
  v = ENV[DaemonConfig::DAEMON_ADDRESS_KEY] || v
  config = DaemonConfig.new(addr: v)
  emitter.daemon_config = config
  sampler.daemon_config = config if sampler.respond_to?(:daemon_config=)
end
name=(v) click to toggle source

@param [String] v The default segment name.

Environment vairable takes higher precedence.
# File lib/aws-xray-sdk/configuration.rb, line 38
def name=(v)
  @name = ENV[SEGMENT_NAME_KEY] || v
end
naming_pattern=(v) click to toggle source

proxy method to the dynamic naming's pattern config.

# File lib/aws-xray-sdk/configuration.rb, line 66
def naming_pattern=(v)
  segment_naming.pattern = v
end
sample?() click to toggle source

makes a sampling decision without incoming filters.

# File lib/aws-xray-sdk/configuration.rb, line 71
def sample?
  return true unless sampling
  sampler.sample?
end
sampling_rules=(v) click to toggle source

proxy method to the sampler's sampling rule config.

# File lib/aws-xray-sdk/configuration.rb, line 56
def sampling_rules=(v)
  sampler.sampling_rules = v
end
stream_threshold=(v) click to toggle source

proxy method to the streamer's stream threshold config.

# File lib/aws-xray-sdk/configuration.rb, line 61
def stream_threshold=(v)
  streamer.stream_threshold = v
end

Private Instance Methods

load_plugins(symbols) click to toggle source
# File lib/aws-xray-sdk/configuration.rb, line 142
def load_plugins(symbols)
  plugins = []
  symbols.each do |symbol|
    case symbol
    when :ec2
      plugins << XRay::Plugins::EC2
    when :ecs
      plugins << XRay::Plugins::ECS
    when :elastic_beanstalk
      plugins << XRay::Plugins::ElasticBeanstalk
    else
      raise InvalidConfigurationError.new(%(Unsupported plugin #{symbol}.))
    end
  end
  # eager loads aws metadata to eliminate impact on first incoming request
  plugins.each(&:aws)
  plugins
end