Class: OpenTrace::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/opentrace/config.rb

Constant Summary collapse

REQUIRED_FIELDS =
%i[endpoint api_key service].freeze
LEVELS =
{ debug: 0, info: 1, warn: 2, error: 3, fatal: 4 }.freeze
LEVEL_TO_LOGGER_SEVERITY =

Maps OpenTrace min_level to Ruby Logger severity constant. Used by LogForwarder to set its level so BroadcastLogger doesn’t downgrade the effective log level for the entire app.

{
  debug: 0, # ::Logger::DEBUG
  info:  1, # ::Logger::INFO
  warn:  2, # ::Logger::WARN
  error: 3, # ::Logger::ERROR
  fatal: 4  # ::Logger::FATAL
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfig

Returns a new instance of Config.



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/opentrace/config.rb', line 27

def initialize
  @endpoint    = nil
  @api_key     = nil
  @service     = nil
  @environment = nil
  @timeout     = 1.0
  @enabled     = true
  @context     = nil    # nil | Hash | Proc
  @min_level   = :info
  @allowed_levels = nil  # nil = use min_level threshold (backward compatible)
  @hostname       = nil
  @pid            = nil
  @git_sha        = nil
  @batch_size     = 50
  @flush_interval = 5.0
  @max_retries    = 2
  @retry_base_delay = 0.1
  @retry_max_delay  = 2.0
  @circuit_breaker_threshold = 5
  @circuit_breaker_timeout   = 30
  @rate_limit_backoff = 5.0
  @on_drop        = nil # ->(count, reason) { ... }
  @compression    = true
  @compression_threshold = 1024 # only compress payloads > 1KB
  @sql_logging    = false
  @sql_duration_threshold_ms = 0.0
  @ignore_paths   = []
  @pool_monitoring = false
  @pool_monitoring_interval = 30
  @queue_monitoring = false
  @queue_monitoring_interval = 60
  @request_summary = true
  @timeline = false
  @timeline_max_events = 200
  @memory_tracking = false
  @http_tracking = false
  @max_payload_bytes = 262_144 # 256 KB
  @trace_propagation = true
  @log_forwarding = false
  @view_tracking = false
  @cache_tracking = false
  @deprecation_tracking = false
  @detailed_request_log = false
end

Instance Attribute Details

#allowed_levelsObject

Returns the value of attribute allowed_levels.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def allowed_levels
  @allowed_levels
end

#api_keyObject

Returns the value of attribute api_key.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def api_key
  @api_key
end

#batch_sizeObject

Returns the value of attribute batch_size.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def batch_size
  @batch_size
end

#cache_trackingObject

Returns the value of attribute cache_tracking.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def cache_tracking
  @cache_tracking
end

#circuit_breaker_thresholdObject

Returns the value of attribute circuit_breaker_threshold.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def circuit_breaker_threshold
  @circuit_breaker_threshold
end

#circuit_breaker_timeoutObject

Returns the value of attribute circuit_breaker_timeout.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def circuit_breaker_timeout
  @circuit_breaker_timeout
end

#compressionObject

Returns the value of attribute compression.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def compression
  @compression
end

#compression_thresholdObject

Returns the value of attribute compression_threshold.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def compression_threshold
  @compression_threshold
end

#contextObject

Returns the value of attribute context.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def context
  @context
end

#deprecation_trackingObject

Returns the value of attribute deprecation_tracking.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def deprecation_tracking
  @deprecation_tracking
end

#detailed_request_logObject

Returns the value of attribute detailed_request_log.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def detailed_request_log
  @detailed_request_log
end

#enabledObject

Returns the value of attribute enabled.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def enabled
  @enabled
end

#endpointObject

Returns the value of attribute endpoint.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def endpoint
  @endpoint
end

#environmentObject

Returns the value of attribute environment.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def environment
  @environment
end

#flush_intervalObject

Returns the value of attribute flush_interval.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def flush_interval
  @flush_interval
end

#git_shaObject

Returns the value of attribute git_sha.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def git_sha
  @git_sha
end

#hostnameObject

Returns the value of attribute hostname.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def hostname
  @hostname
end

#http_trackingObject

Returns the value of attribute http_tracking.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def http_tracking
  @http_tracking
end

#ignore_pathsObject

Returns the value of attribute ignore_paths.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def ignore_paths
  @ignore_paths
end

#log_forwardingObject

Returns the value of attribute log_forwarding.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def log_forwarding
  @log_forwarding
end

#max_payload_bytesObject

Returns the value of attribute max_payload_bytes.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def max_payload_bytes
  @max_payload_bytes
end

#max_retriesObject

Returns the value of attribute max_retries.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def max_retries
  @max_retries
end

#memory_trackingObject

Returns the value of attribute memory_tracking.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def memory_tracking
  @memory_tracking
end

#min_levelObject

Returns the value of attribute min_level.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def min_level
  @min_level
end

#on_dropObject

Returns the value of attribute on_drop.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def on_drop
  @on_drop
end

#pidObject

Returns the value of attribute pid.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def pid
  @pid
end

#pool_monitoringObject

Returns the value of attribute pool_monitoring.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def pool_monitoring
  @pool_monitoring
end

#pool_monitoring_intervalObject

Returns the value of attribute pool_monitoring_interval.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def pool_monitoring_interval
  @pool_monitoring_interval
end

#queue_monitoringObject

Returns the value of attribute queue_monitoring.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def queue_monitoring
  @queue_monitoring
end

#queue_monitoring_intervalObject

Returns the value of attribute queue_monitoring_interval.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def queue_monitoring_interval
  @queue_monitoring_interval
end

#rate_limit_backoffObject

Returns the value of attribute rate_limit_backoff.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def rate_limit_backoff
  @rate_limit_backoff
end

#request_summaryObject

Returns the value of attribute request_summary.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def request_summary
  @request_summary
end

#retry_base_delayObject

Returns the value of attribute retry_base_delay.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def retry_base_delay
  @retry_base_delay
end

#retry_max_delayObject

Returns the value of attribute retry_max_delay.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def retry_max_delay
  @retry_max_delay
end

#serviceObject

Returns the value of attribute service.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def service
  @service
end

#sql_duration_threshold_msObject

Returns the value of attribute sql_duration_threshold_ms.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def sql_duration_threshold_ms
  @sql_duration_threshold_ms
end

#sql_loggingObject

Returns the value of attribute sql_logging.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def sql_logging
  @sql_logging
end

#timelineObject

Returns the value of attribute timeline.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def timeline
  @timeline
end

#timeline_max_eventsObject

Returns the value of attribute timeline_max_events.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def timeline_max_events
  @timeline_max_events
end

#timeoutObject

Returns the value of attribute timeout.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def timeout
  @timeout
end

#trace_propagationObject

Returns the value of attribute trace_propagation.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def trace_propagation
  @trace_propagation
end

#view_trackingObject

Returns the value of attribute view_tracking.



8
9
10
# File 'lib/opentrace/config.rb', line 8

def view_tracking
  @view_tracking
end

Instance Method Details

#enabled?Boolean

Returns:

  • (Boolean)


76
77
78
# File 'lib/opentrace/config.rb', line 76

def enabled?
  @enabled && valid?
end

#level_allowed?(level) ⇒ Boolean

Returns:

  • (Boolean)


84
85
86
87
88
89
90
# File 'lib/opentrace/config.rb', line 84

def level_allowed?(level)
  if allowed_levels
    allowed_levels.map { |l| l.to_s.upcase }.include?(level.to_s.upcase)
  else
    (LEVELS[level.to_s.downcase.to_sym] || 0) >= min_level_value
  end
end

#logger_severityObject



103
104
105
# File 'lib/opentrace/config.rb', line 103

def logger_severity
  LEVEL_TO_LOGGER_SEVERITY[min_level.to_s.downcase.to_sym] || 0
end

#min_level_valueObject



80
81
82
# File 'lib/opentrace/config.rb', line 80

def min_level_value
  LEVELS[min_level.to_s.downcase.to_sym] || 0
end

#valid?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/opentrace/config.rb', line 72

def valid?
  REQUIRED_FIELDS.all? { |f| value = send(f); value.is_a?(String) && !value.empty? }
end