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