oneapm_rpm 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/lib/one_apm/agent.rb +185 -192
  3. data/lib/one_apm/agent/agent/connect.rb +17 -17
  4. data/lib/one_apm/agent/agent/container_data_manager.rb +14 -14
  5. data/lib/one_apm/agent/agent/forkable_dispatcher_functions.rb +6 -35
  6. data/lib/one_apm/agent/agent/helpers.rb +6 -17
  7. data/lib/one_apm/agent/agent/start.rb +27 -27
  8. data/lib/one_apm/agent/agent/start_worker_thread.rb +19 -51
  9. data/lib/one_apm/agent/busy_calculator.rb +8 -34
  10. data/lib/one_apm/agent/cross_app/cross_app_monitor.rb +10 -10
  11. data/lib/one_apm/agent/cross_app/cross_app_tracing.rb +14 -14
  12. data/lib/one_apm/agent/database.rb +8 -35
  13. data/lib/one_apm/agent/database/active_record_helper.rb +1 -1
  14. data/lib/one_apm/agent/datastores.rb +2 -109
  15. data/lib/one_apm/agent/datastores/metric_helper.rb +1 -1
  16. data/lib/one_apm/agent/datastores/mongo/metric_translator.rb +3 -3
  17. data/lib/one_apm/agent/datastores/mongo/statement_formatter.rb +2 -2
  18. data/lib/one_apm/agent/harvester.rb +3 -6
  19. data/lib/one_apm/agent/inbound_request_monitor.rb +2 -2
  20. data/lib/one_apm/agent/javascript_instrumentor.rb +28 -28
  21. data/lib/one_apm/agent/sampler.rb +1 -1
  22. data/lib/one_apm/agent/sampler_collection.rb +6 -9
  23. data/lib/one_apm/agent/samplers/cpu_sampler.rb +4 -4
  24. data/lib/one_apm/agent/samplers/delayed_job_sampler.rb +5 -5
  25. data/lib/one_apm/agent/samplers/memory_sampler.rb +5 -5
  26. data/lib/one_apm/agent/samplers/object_sampler.rb +1 -1
  27. data/lib/one_apm/agent/samplers/vm_sampler.rb +6 -6
  28. data/lib/one_apm/agent/synthetics_monitor.rb +2 -2
  29. data/lib/one_apm/agent/threading/agent_thread.rb +6 -6
  30. data/lib/one_apm/agent/threading/backtrace_service.rb +9 -9
  31. data/lib/one_apm/agent/threading/thread_profile.rb +3 -3
  32. data/lib/one_apm/collector/collector/helper.rb +10 -10
  33. data/lib/one_apm/collector/collector/http_connection.rb +14 -14
  34. data/lib/one_apm/collector/collector/server_methods.rb +12 -12
  35. data/lib/one_apm/collector/collector_service.rb +8 -8
  36. data/lib/one_apm/collector/commands/thread_profiler_session.rb +4 -4
  37. data/lib/one_apm/collector/commands/xray_session.rb +1 -1
  38. data/lib/one_apm/collector/commands/xray_session_collection.rb +10 -10
  39. data/lib/one_apm/collector/containers/agent_command_router.rb +7 -7
  40. data/lib/one_apm/collector/containers/custom_event_aggregator.rb +6 -6
  41. data/lib/one_apm/collector/containers/error_collector.rb +16 -16
  42. data/lib/one_apm/collector/containers/sql_sampler.rb +8 -11
  43. data/lib/one_apm/collector/containers/transaction_event_aggregator.rb +15 -15
  44. data/lib/one_apm/collector/containers/transaction_sampler.rb +14 -16
  45. data/lib/one_apm/{agent/pipe/pipe_service.rb → collector/forked_process_service.rb} +3 -3
  46. data/lib/one_apm/collector/stats_engine/gc_profiler.rb +3 -3
  47. data/lib/one_apm/collector/stats_engine/metric_stats.rb +4 -4
  48. data/lib/one_apm/collector/stats_engine/stats_hash.rb +2 -2
  49. data/lib/one_apm/configuration.rb +16 -16
  50. data/lib/one_apm/configuration/autostart.rb +4 -4
  51. data/lib/one_apm/configuration/default_source.rb +9 -9
  52. data/lib/one_apm/configuration/environment_source.rb +1 -1
  53. data/lib/one_apm/configuration/high_security_source.rb +1 -1
  54. data/lib/one_apm/configuration/yaml_source.rb +7 -7
  55. data/lib/one_apm/errors/noticed_error.rb +2 -2
  56. data/lib/one_apm/frameworks/external.rb +2 -0
  57. data/lib/one_apm/frameworks/rails.rb +8 -18
  58. data/lib/one_apm/frameworks/rails3.rb +1 -0
  59. data/lib/one_apm/frameworks/rails4.rb +2 -6
  60. data/lib/one_apm/frameworks/ruby.rb +7 -2
  61. data/lib/one_apm/frameworks/sinatra.rb +1 -2
  62. data/lib/one_apm/inst/3rd/active_merchant.rb +1 -1
  63. data/lib/one_apm/inst/3rd/acts_as_solr.rb +2 -2
  64. data/lib/one_apm/inst/3rd/authlogic.rb +1 -1
  65. data/lib/one_apm/inst/3rd/sunspot.rb +1 -1
  66. data/lib/one_apm/inst/background_job/active_job.rb +1 -1
  67. data/lib/one_apm/inst/background_job/delayed_job.rb +4 -4
  68. data/lib/one_apm/inst/background_job/event_machine_standalone.rb +2 -2
  69. data/lib/one_apm/inst/background_job/resque.rb +11 -11
  70. data/lib/one_apm/inst/background_job/sidekiq.rb +5 -5
  71. data/lib/one_apm/inst/dispatcher/passenger.rb +4 -4
  72. data/lib/one_apm/inst/dispatcher/puma.rb +23 -0
  73. data/lib/one_apm/inst/dispatcher/rainbows.rb +2 -2
  74. data/lib/one_apm/inst/framework/grape.rb +4 -4
  75. data/lib/one_apm/inst/framework/padrino.rb +2 -2
  76. data/lib/one_apm/inst/framework/sinatra.rb +9 -9
  77. data/lib/one_apm/inst/framework/sinatra/transaction_namer.rb +1 -1
  78. data/lib/one_apm/inst/http_clients/curb.rb +6 -6
  79. data/lib/one_apm/inst/http_clients/excon.rb +4 -4
  80. data/lib/one_apm/inst/http_clients/excon/middleware.rb +3 -3
  81. data/lib/one_apm/inst/http_clients/httpclient.rb +1 -1
  82. data/lib/one_apm/inst/http_clients/net.rb +2 -2
  83. data/lib/one_apm/inst/http_clients/typhoeus.rb +2 -2
  84. data/lib/one_apm/inst/nosql/memcache.rb +7 -7
  85. data/lib/one_apm/inst/nosql/mongo.rb +6 -6
  86. data/lib/one_apm/inst/nosql/mongo_moped.rb +2 -2
  87. data/lib/one_apm/inst/nosql/redis.rb +3 -3
  88. data/lib/one_apm/inst/orm/active_record.rb +4 -4
  89. data/lib/one_apm/inst/orm/active_record_4.rb +2 -2
  90. data/lib/one_apm/inst/orm/sequel.rb +4 -4
  91. data/lib/one_apm/inst/rack.rb +3 -3
  92. data/lib/one_apm/inst/rack/rack_builder.rb +4 -4
  93. data/lib/one_apm/inst/rails/action_controller.rb +7 -7
  94. data/lib/one_apm/inst/rails/action_web_service.rb +1 -1
  95. data/lib/one_apm/inst/rails/errors.rb +1 -1
  96. data/lib/one_apm/inst/rails3/action_controller.rb +6 -6
  97. data/lib/one_apm/inst/rails3/errors.rb +1 -1
  98. data/lib/one_apm/inst/rails4/action_controller.rb +1 -1
  99. data/lib/one_apm/inst/rails4/action_controller_subscriber.rb +4 -4
  100. data/lib/one_apm/inst/rails4/action_view.rb +2 -2
  101. data/lib/one_apm/inst/rails4/action_view_subscriber.rb +4 -4
  102. data/lib/one_apm/inst/rails4/active_record_subscriber.rb +7 -7
  103. data/lib/one_apm/inst/rails4/errors.rb +1 -1
  104. data/lib/one_apm/inst/rails_middleware.rb +2 -2
  105. data/lib/one_apm/inst/support/evented_subscriber.rb +2 -2
  106. data/lib/one_apm/inst/support/queue_time.rb +1 -1
  107. data/lib/one_apm/inst/transaction_base.rb +6 -6
  108. data/lib/one_apm/logger/agent_logger.rb +8 -8
  109. data/lib/one_apm/logger/audit_logger.rb +8 -8
  110. data/lib/one_apm/logger/memory_logger.rb +1 -1
  111. data/lib/one_apm/logger/null_logger.rb +1 -3
  112. data/lib/one_apm/manager.rb +249 -0
  113. data/lib/one_apm/metrics/metric_spec.rb +1 -1
  114. data/lib/one_apm/metrics/stats.rb +1 -1
  115. data/lib/one_apm/probe.rb +1 -1
  116. data/lib/one_apm/probe/framework_loader.rb +2 -2
  117. data/lib/one_apm/probe/instance_methods.rb +19 -19
  118. data/lib/one_apm/probe/instrumentation.rb +5 -5
  119. data/lib/one_apm/rack/browser_monitoring.rb +6 -6
  120. data/lib/one_apm/rack/middleware_hooks.rb +1 -1
  121. data/lib/one_apm/rack/middleware_tracing.rb +2 -2
  122. data/lib/one_apm/support/chained_call.rb +1 -1
  123. data/lib/one_apm/support/coerce.rb +1 -1
  124. data/lib/one_apm/support/collection_helper.rb +1 -1
  125. data/lib/one_apm/support/encoders.rb +1 -1
  126. data/lib/one_apm/support/environment_report.rb +10 -10
  127. data/lib/one_apm/{agent → support}/event/event_listener.rb +3 -3
  128. data/lib/one_apm/{agent → support}/event/event_loop.rb +8 -8
  129. data/lib/one_apm/{agent → support}/event/timer.rb +1 -1
  130. data/lib/one_apm/{agent → support}/event/worker_loop.rb +5 -19
  131. data/lib/one_apm/{agent/pipe/pipe_channel_manager.rb → support/forked_process_channel.rb} +13 -51
  132. data/lib/one_apm/support/json_marshaller.rb +6 -6
  133. data/lib/one_apm/support/json_wrapper.rb +2 -2
  134. data/lib/one_apm/support/language_support.rb +1 -1
  135. data/lib/one_apm/support/library_detection.rb +5 -5
  136. data/lib/one_apm/support/marshaller.rb +1 -1
  137. data/lib/one_apm/support/method_tracer.rb +12 -12
  138. data/lib/one_apm/support/method_tracer/helpers.rb +6 -6
  139. data/lib/one_apm/support/system_info.rb +2 -2
  140. data/lib/one_apm/support/traced_method_stack.rb +4 -4
  141. data/lib/one_apm/support/vm/monotonic_gc_profiler.rb +1 -1
  142. data/lib/one_apm/support/vm/mri_vm.rb +1 -1
  143. data/lib/one_apm/transaction.rb +3 -3
  144. data/lib/one_apm/transaction/class_methods.rb +3 -3
  145. data/lib/one_apm/transaction/instance_helpers.rb +3 -3
  146. data/lib/one_apm/transaction/sample_buffer/synthetics_sample_buffer.rb +1 -1
  147. data/lib/one_apm/transaction/sample_buffer/xray_sample_buffer.rb +5 -5
  148. data/lib/one_apm/transaction/thread_local_access.rb +2 -2
  149. data/lib/one_apm/transaction/transaction_apdex.rb +2 -2
  150. data/lib/one_apm/transaction/transaction_finish_append.rb +1 -1
  151. data/lib/one_apm/transaction/transaction_jruby_functions.rb +2 -2
  152. data/lib/one_apm/transaction/transaction_name.rb +2 -2
  153. data/lib/one_apm/transaction/transaction_sample.rb +1 -1
  154. data/lib/one_apm/transaction/transaction_sample_builder.rb +7 -7
  155. data/lib/one_apm/transaction/transaction_state.rb +1 -1
  156. data/lib/one_apm/version.rb +1 -1
  157. data/lib/sequel/extensions/oneapm_instrumentation.rb +7 -7
  158. data/oneapm.yml +6 -7
  159. metadata +10 -9
  160. data/lib/one_apm/agent/agent.rb +0 -283
@@ -22,7 +22,7 @@ module OneApm
22
22
  @thread_profiler_session = OneApm::Collector::Commands::ThreadProfilerSession.new(@backtrace_service)
23
23
  @xray_session_collection = OneApm::Collector::Commands::XraySessionCollection.new(@backtrace_service, event_listener)
24
24
 
25
- @handlers['restart'] = Proc.new { OneApm::Agent.restart }
25
+ @handlers['restart'] = Proc.new { OneApm::Manager.restart }
26
26
  @handlers['start_profiler'] = Proc.new { |cmd| thread_profiler_session.handle_start_command(cmd) }
27
27
  @handlers['stop_profiler'] = Proc.new { |cmd| thread_profiler_session.handle_stop_command(cmd) }
28
28
  @handlers['active_xray_sessions'] = Proc.new { |cmd| xray_session_collection.handle_active_xray_sessions(cmd) }
@@ -33,7 +33,7 @@ module OneApm
33
33
  end
34
34
 
35
35
  def one_apm_service
36
- OneApm::Agent.instance.service
36
+ OneApm::Manager.agent.service
37
37
  end
38
38
 
39
39
  def check_for_and_handle_agent_commands
@@ -89,16 +89,16 @@ module OneApm
89
89
 
90
90
  def log_profiles(profiles)
91
91
  if profiles.empty?
92
- ::OneApm::Agent.logger.debug "No thread profiles with data found to send."
92
+ OneApm::Manager.logger.debug "No thread profiles with data found to send."
93
93
  else
94
94
  profile_descriptions = profiles.map { |p| p.to_log_description }
95
- ::OneApm::Agent.logger.debug "Sending thread profiles [#{profile_descriptions.join(", ")}]"
95
+ OneApm::Manager.logger.debug "Sending thread profiles [#{profile_descriptions.join(", ")}]"
96
96
  end
97
97
  end
98
98
 
99
99
  def get_agent_commands
100
100
  commands = one_apm_service.get_agent_commands
101
- OneApm::Agent.logger.info "Received get_agent_commands = #{commands.inspect}" if commands.any?
101
+ OneApm::Manager.logger.info "Received get_agent_commands = #{commands.inspect}" if commands.any?
102
102
  commands.map {|collector_command| OneApm::Collector::Commands::AgentCommand.new(collector_command)}
103
103
  end
104
104
 
@@ -120,7 +120,7 @@ module OneApm
120
120
  call_handler_for(agent_command)
121
121
  return success
122
122
  rescue AgentCommandError => e
123
- OneApm::Agent.logger.debug(e)
123
+ OneApm::Manager.logger.debug(e)
124
124
  error(e)
125
125
  end
126
126
  end
@@ -146,7 +146,7 @@ module OneApm
146
146
  end
147
147
 
148
148
  def unrecognized_agent_command(agent_command)
149
- OneApm::Agent.logger.debug("Unrecognized agent command #{agent_command.inspect}")
149
+ OneApm::Manager.logger.debug("Unrecognized agent command #{agent_command.inspect}")
150
150
  end
151
151
  end
152
152
  end
@@ -16,14 +16,14 @@ module OneApm
16
16
 
17
17
  def initialize
18
18
  @lock = Mutex.new
19
- @buffer = OneApm::Agent::SampledBuffer.new(OneApm::Agent.config[DEFAULT_CAPACITY_KEY])
19
+ @buffer = OneApm::Agent::SampledBuffer.new(OneApm::Manager.config[DEFAULT_CAPACITY_KEY])
20
20
  @type_strings = Hash.new { |hash, key| hash[key] = key.to_s.freeze }
21
21
  register_config_callbacks
22
22
  end
23
23
 
24
24
  def register_config_callbacks
25
- OneApm::Agent.config.register_callback(DEFAULT_CAPACITY_KEY) do |max_samples|
26
- OneApm::Agent.logger.debug "CustomEventAggregator max_samples set to #{max_samples}"
25
+ OneApm::Manager.config.register_callback(DEFAULT_CAPACITY_KEY) do |max_samples|
26
+ OneApm::Manager.logger.debug "CustomEventAggregator max_samples set to #{max_samples}"
27
27
  @lock.synchronize do
28
28
  @buffer.capacity = max_samples
29
29
  end
@@ -63,9 +63,9 @@ module OneApm
63
63
  def note_dropped_events(captured_count, dropped_count)
64
64
  total_count = captured_count + dropped_count
65
65
  if dropped_count > 0
66
- OneApm::Agent.logger.warn("Dropped #{dropped_count} custom events out of #{total_count}.")
66
+ OneApm::Manager.logger.warn("Dropped #{dropped_count} custom events out of #{total_count}.")
67
67
  end
68
- engine = OneApm::Agent.instance.stats_engine
68
+ engine = OneApm::Manager.agent.stats_engine
69
69
  engine.tl_record_supportability_metric_count("Events/Customer/Seen" , total_count)
70
70
  engine.tl_record_supportability_metric_count("Events/Customer/Sent" , captured_count)
71
71
  engine.tl_record_supportability_metric_count("Events/Customer/Dropped", dropped_count)
@@ -84,7 +84,7 @@ module OneApm
84
84
  end
85
85
 
86
86
  def note_dropped_event(type)
87
- ::OneApm::Agent.logger.log_once(:warn, "dropping_event_of_type:#{type}",
87
+ OneApm::Manager.logger.log_once(:warn, "dropping_event_of_type:#{type}",
88
88
  "Invalid event type name '#{type}', not recording.")
89
89
  @buffer.note_dropped
90
90
  end
@@ -24,13 +24,13 @@ module OneApm
24
24
  # lookup of exception class names to ignore. Hash for fast access
25
25
  @ignore = {}
26
26
 
27
- initialize_ignored_errors(Agent.config[:'error_collector.ignore_errors'])
27
+ initialize_ignored_errors(Manager.config[:'error_collector.ignore_errors'])
28
28
  @lock = Mutex.new
29
29
 
30
- Agent.config.register_callback(:'error_collector.enabled') do |config_enabled|
31
- ::OneApm::Agent.logger.debug "Errors will #{config_enabled ? '' : 'not '}be sent to the OneApm service."
30
+ OneApm::Manager.config.register_callback(:'error_collector.enabled') do |config_enabled|
31
+ OneApm::Manager.logger.debug "Errors will #{config_enabled ? '' : 'not '}be sent to the OneApm service."
32
32
  end
33
- Agent.config.register_callback(:'error_collector.ignore_errors') do |ignore_errors|
33
+ OneApm::Manager.config.register_callback(:'error_collector.ignore_errors') do |ignore_errors|
34
34
  initialize_ignored_errors(ignore_errors)
35
35
  end
36
36
  end
@@ -43,7 +43,7 @@ module OneApm
43
43
  end
44
44
 
45
45
  def enabled?
46
- Agent.config[:'error_collector.enabled']
46
+ OneApm::Manager.config[:'error_collector.enabled']
47
47
  end
48
48
 
49
49
  def disabled?
@@ -83,7 +83,7 @@ module OneApm
83
83
  def ignore(errors)
84
84
  errors.each do |error|
85
85
  @ignore[error] = true
86
- ::OneApm::Agent.logger.debug("Ignoring errors of type '#{error}'")
86
+ OneApm::Manager.logger.debug("Ignoring errors of type '#{error}'")
87
87
  end
88
88
  end
89
89
 
@@ -106,7 +106,7 @@ module OneApm
106
106
  def error_is_ignored?(error)
107
107
  error && filtered_error?(error)
108
108
  rescue => e
109
- OneApm::Agent.logger.error("Error '#{error}' will NOT be ignored. Exception '#{e}' while determining whether to ignore or not.", e)
109
+ OneApm::Manager.logger.error("Error '#{error}' will NOT be ignored. Exception '#{e}' while determining whether to ignore or not.", e)
110
110
  false
111
111
  end
112
112
 
@@ -149,7 +149,7 @@ module OneApm
149
149
  blamed_metric = blamed_metric_name(txn, options)
150
150
  metric_names << blamed_metric if blamed_metric
151
151
 
152
- stats_engine = OneApm::Agent.instance.stats_engine
152
+ stats_engine = OneApm::Manager.agent.stats_engine
153
153
  stats_engine.record_unscoped_metrics(state, metric_names) do |stats|
154
154
  stats.increment_count
155
155
  end
@@ -180,7 +180,7 @@ module OneApm
180
180
  # If anything else is left over, we treat it like a custom param
181
181
  def custom_params_from_opts(options)
182
182
  # If anything else is left over, treat it like a custom param:
183
- if Agent.config[:'error_collector.capture_attributes']
183
+ if OneApm::Manager.config[:'error_collector.capture_attributes']
184
184
  fetch_from_options(options, :custom_params, {}).merge(options)
185
185
  else
186
186
  {}
@@ -192,7 +192,7 @@ module OneApm
192
192
  # returns nil
193
193
  def request_params_from_opts(options)
194
194
  value = options.delete(:request_params)
195
- if Agent.config[:capture_params]
195
+ if OneApm::Manager.config[:capture_params]
196
196
  value
197
197
  else
198
198
  nil
@@ -247,7 +247,7 @@ module OneApm
247
247
  # the maximum limit, and logs a warning if we are over the limit.
248
248
  def over_queue_limit?(message)
249
249
  over_limit = (@errors.reject{|err| err.is_internal}.length >= MAX_ERROR_QUEUE_LENGTH)
250
- ::OneApm::Agent.logger.warn("The error reporting queue has reached #{MAX_ERROR_QUEUE_LENGTH}. The error detail for this and subsequent errors will not be transmitted to OneApm until the queued errors have been sent: #{message}") if over_limit
250
+ OneApm::Manager.logger.warn("The error reporting queue has reached #{MAX_ERROR_QUEUE_LENGTH}. The error detail for this and subsequent errors will not be transmitted to OneApm until the queued errors have been sent: #{message}") if over_limit
251
251
  over_limit
252
252
  end
253
253
 
@@ -276,14 +276,14 @@ module OneApm
276
276
  #
277
277
  # If anything is left over, it's added to custom params
278
278
  # If exception is nil, the error count is bumped and no traced error is recorded
279
- def notice_error(exception, options={}) #THREAD_LOCAL_ACCESS
279
+ def notice_error(exception, options={})
280
280
  state = ::OneApm::TransactionState.tl_get
281
281
 
282
282
  return if skip_notice_error?(state, exception)
283
283
  tag_as_seen(state, exception)
284
284
 
285
285
  increment_error_count!(state, exception, options)
286
- OneApm::Agent.instance.events.notify(:notice_error, exception, options)
286
+ OneApm::Manager.agent.events.notify(:notice_error, exception, options)
287
287
 
288
288
  action_path = fetch_from_options(options, :metric, "")
289
289
  exception_options = error_params_from_options(options).merge(exception_info(exception))
@@ -291,7 +291,7 @@ module OneApm
291
291
 
292
292
  exception
293
293
  rescue => e
294
- ::OneApm::Agent.logger.warn("Failure when capturing error '#{exception}':", e)
294
+ OneApm::Manager.logger.warn("Failure when capturing error '#{exception}':", e)
295
295
  end
296
296
 
297
297
  # *Use sparingly for difficult to track bugs.*
@@ -307,7 +307,7 @@ module OneApm
307
307
  return unless exception.class < OneApm::Agent::InternalAgentError
308
308
 
309
309
  # Log 'em all!
310
- OneApm::Agent.logger.info(exception)
310
+ OneApm::Manager.logger.info(exception)
311
311
 
312
312
  @lock.synchronize do
313
313
  # Already seen this class once? Bail!
@@ -320,7 +320,7 @@ module OneApm
320
320
  @errors << noticed_error
321
321
  end
322
322
  rescue => e
323
- OneApm::Agent.logger.info("Unable to capture internal agent error due to an exception:", e)
323
+ OneApm::Manager.logger.info("Unable to capture internal agent error due to an exception:", e)
324
324
  end
325
325
 
326
326
  def merge!(errors)
@@ -4,9 +4,6 @@ require 'zlib'
4
4
  require 'base64'
5
5
  require 'digest/md5'
6
6
 
7
- require 'one_apm/agent'
8
- require 'one_apm/probe'
9
-
10
7
  module OneApm
11
8
  module Collector
12
9
  # This class contains the logic of recording slow SQL traces, which may
@@ -49,8 +46,8 @@ module OneApm
49
46
  end
50
47
 
51
48
  def enabled?
52
- Agent.config[:'slow_sql.enabled'] &&
53
- Agent.config[:'transaction_tracer.enabled'] &&
49
+ OneApm::Manager.config[:'slow_sql.enabled'] &&
50
+ OneApm::Manager.config[:'transaction_tracer.enabled'] &&
54
51
  OneApm::Agent::Database.should_record_sql?(:slow_sql)
55
52
  end
56
53
 
@@ -63,7 +60,7 @@ module OneApm
63
60
  guid = state.transaction_sample_builder.sample.guid
64
61
  end
65
62
 
66
- if Agent.config[:'slow_sql.enabled'] && state.sql_sampler_transaction_data
63
+ if OneApm::Manager.config[:'slow_sql.enabled'] && state.sql_sampler_transaction_data
67
64
  state.sql_sampler_transaction_data.set_transaction_info(uri, guid)
68
65
  end
69
66
  end
@@ -82,7 +79,7 @@ module OneApm
82
79
  data.set_transaction_name(name)
83
80
  if data.sql_data.size > 0
84
81
  @samples_lock.synchronize do
85
- ::OneApm::Agent.logger.debug "Examining #{data.sql_data.size} slow transaction sql statement(s)"
82
+ OneApm::Manager.logger.debug "Examining #{data.sql_data.size} slow transaction sql statement(s)"
86
83
  save_slow_sql data
87
84
  end
88
85
  end
@@ -147,13 +144,13 @@ module OneApm
147
144
  #
148
145
  # @api public
149
146
  #
150
- def notice_sql(sql, metric_name, config, duration, state=nil, &explainer) #THREAD_LOCAL_ACCESS sometimes
147
+ def notice_sql(sql, metric_name, config, duration, state=nil, &explainer)
151
148
  state ||= OneApm::TransactionState.tl_get
152
149
  data = state.sql_sampler_transaction_data
153
150
  return unless data
154
151
 
155
152
  if state.is_sql_recorded?
156
- if duration > Agent.config[:'slow_sql.explain_threshold']
153
+ if duration > OneApm::Manager.config[:'slow_sql.explain_threshold']
157
154
  backtrace = caller
158
155
  backtrace.reject! { |t| t.include?('one_apm') }
159
156
  data.sql_data << SlowSql.new(OneApm::Agent::Database.capture_query(sql),
@@ -297,11 +294,11 @@ module OneApm
297
294
  end
298
295
 
299
296
  def need_to_obfuscate?
300
- Agent.config[:'slow_sql.record_sql'].to_s == 'obfuscated'
297
+ OneApm::Manager.config[:'slow_sql.record_sql'].to_s == 'obfuscated'
301
298
  end
302
299
 
303
300
  def need_to_explain?
304
- Agent.config[:'slow_sql.explain_enabled']
301
+ OneApm::Manager.config[:'slow_sql.explain_enabled']
305
302
  end
306
303
 
307
304
  include OneApm::Coerce
@@ -31,8 +31,8 @@ class OneApm::Collector::TransactionEventAggregator
31
31
  @enabled = false
32
32
  @notified_full = false
33
33
 
34
- @samples = ::OneApm::Agent::SampledBuffer.new(OneApm::Agent.config[:'analytics_events.max_samples_stored'])
35
- @synthetics_samples = ::OneApm::Agent::SyntheticsEventBuffer.new(OneApm::Agent.config[:'synthetics.events_limit'])
34
+ @samples = ::OneApm::Agent::SampledBuffer.new(OneApm::Manager.config[:'analytics_events.max_samples_stored'])
35
+ @synthetics_samples = ::OneApm::Agent::SyntheticsEventBuffer.new(OneApm::Manager.config[:'synthetics.events_limit'])
36
36
 
37
37
  event_listener.subscribe(:transaction_finished, &method(:on_transaction_finished))
38
38
  self.register_config_callbacks
@@ -80,10 +80,10 @@ class OneApm::Collector::TransactionEventAggregator
80
80
  end
81
81
  end
82
82
 
83
- def record_sampling_rate(request_count, sample_count) #THREAD_LOCAL_ACCESS
83
+ def record_sampling_rate(request_count, sample_count)
84
84
  request_count_lifetime = @samples.seen_lifetime
85
85
  sample_count_lifetime = @samples.captured_lifetime
86
- OneApm::Agent.logger.debug("Sampled %d / %d (%.1f %%) requests this cycle, %d / %d (%.1f %%) since startup" % [
86
+ OneApm::Manager.logger.debug("Sampled %d / %d (%.1f %%) requests this cycle, %d / %d (%.1f %%) since startup" % [
87
87
  sample_count,
88
88
  request_count,
89
89
  (sample_count.to_f / request_count * 100.0),
@@ -92,7 +92,7 @@ class OneApm::Collector::TransactionEventAggregator
92
92
  (sample_count_lifetime.to_f / request_count_lifetime * 100.0)
93
93
  ])
94
94
 
95
- engine = OneApm::Agent.instance.stats_engine
95
+ engine = OneApm::Manager.agent.stats_engine
96
96
  engine.tl_record_supportability_metric_count("TransactionEventAggregator/requests", request_count)
97
97
  engine.tl_record_supportability_metric_count("TransactionEventAggregator/samples", sample_count)
98
98
  end
@@ -100,30 +100,30 @@ class OneApm::Collector::TransactionEventAggregator
100
100
  def record_dropped_synthetics(synthetics_dropped)
101
101
  return unless synthetics_dropped > 0
102
102
 
103
- OneApm::Agent.logger.debug("Synthetics transaction event limit (#{@samples.capacity}) reached. Further synthetics events this harvest period dropped.")
103
+ OneApm::Manager.logger.debug("Synthetics transaction event limit (#{@samples.capacity}) reached. Further synthetics events this harvest period dropped.")
104
104
 
105
- engine = OneApm::Agent.instance.stats_engine
105
+ engine = OneApm::Manager.agent.stats_engine
106
106
  engine.tl_record_supportability_metric_count("TransactionEventAggregator/synthetics_events_dropped", synthetics_dropped)
107
107
  end
108
108
 
109
109
  def register_config_callbacks
110
- OneApm::Agent.config.register_callback(:'analytics_events.max_samples_stored') do |max_samples|
111
- OneApm::Agent.logger.debug "TransactionEventAggregator max_samples set to #{max_samples}"
110
+ OneApm::Manager.config.register_callback(:'analytics_events.max_samples_stored') do |max_samples|
111
+ OneApm::Manager.logger.debug "TransactionEventAggregator max_samples set to #{max_samples}"
112
112
  self.synchronize { @samples.capacity = max_samples }
113
113
  end
114
114
 
115
- OneApm::Agent.config.register_callback(:'synthetics.events_limit') do |max_samples|
116
- OneApm::Agent.logger.debug "TransactionEventAggregator limit for synthetics events set to #{max_samples}"
115
+ OneApm::Manager.config.register_callback(:'synthetics.events_limit') do |max_samples|
116
+ OneApm::Manager.logger.debug "TransactionEventAggregator limit for synthetics events set to #{max_samples}"
117
117
  self.synchronize { @synthetics_samples.capacity = max_samples }
118
118
  end
119
119
 
120
- OneApm::Agent.config.register_callback(:'analytics_events.enabled') do |enabled|
120
+ OneApm::Manager.config.register_callback(:'analytics_events.enabled') do |enabled|
121
121
  @enabled = enabled
122
122
  end
123
123
  end
124
124
 
125
125
  def notify_full
126
- OneApm::Agent.logger.debug "Transaction event capacity of #{@samples.capacity} reached, beginning sampling"
126
+ OneApm::Manager.logger.debug "Transaction event capacity of #{@samples.capacity} reached, beginning sampling"
127
127
  @notified_full = true
128
128
  end
129
129
 
@@ -221,7 +221,7 @@ class OneApm::Collector::TransactionEventAggregator
221
221
  end
222
222
 
223
223
  def append_http_response_code(sample, payload)
224
- unless OneApm::Agent.config[:disable_rack_middleware]
224
+ unless OneApm::Manager.config[:disable_rack_middleware]
225
225
  optionally_append(HTTP_RESPONSE_CODE_KEY, :http_response_code, sample, payload)
226
226
  end
227
227
  end
@@ -240,7 +240,7 @@ class OneApm::Collector::TransactionEventAggregator
240
240
 
241
241
  def create_custom_parameters(payload)
242
242
  custom_params = {}
243
- if ::OneApm::Agent.config[:'analytics_events.capture_attributes']
243
+ if OneApm::Manager.config[:'analytics_events.capture_attributes']
244
244
  custom_params.merge!(event_params(payload[:custom_params] || {}))
245
245
  end
246
246
  custom_params
@@ -1,7 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'one_apm/agent'
4
- require 'one_apm/probe'
5
3
  require 'one_apm/transaction/transaction_sample_builder'
6
4
  require 'one_apm/transaction/sample_buffer/force_persist_sample_buffer'
7
5
  require 'one_apm/transaction/sample_buffer/slowest_sample_buffer'
@@ -45,24 +43,24 @@ module OneApm
45
43
  # any 'honest-to-god'-multithreaded system
46
44
  @samples_lock = Mutex.new
47
45
 
48
- Agent.config.register_callback(:'transaction_tracer.enabled') do |enabled|
46
+ OneApm::Manager.config.register_callback(:'transaction_tracer.enabled') do |enabled|
49
47
  if enabled
50
- threshold = Agent.config[:'transaction_tracer.transaction_threshold']
51
- ::OneApm::Agent.logger.debug "Transaction tracing threshold is #{threshold} seconds."
48
+ threshold = OneApm::Manager.config[:'transaction_tracer.transaction_threshold']
49
+ OneApm::Manager.logger.debug "Transaction tracing threshold is #{threshold} seconds."
52
50
  else
53
- ::OneApm::Agent.logger.debug "Transaction traces will not be sent to the OneApm service."
51
+ OneApm::Manager.logger.debug "Transaction traces will not be sent to the OneApm service."
54
52
  end
55
53
  end
56
54
 
57
- Agent.config.register_callback(:'transaction_tracer.record_sql') do |config|
55
+ OneApm::Manager.config.register_callback(:'transaction_tracer.record_sql') do |config|
58
56
  if config == 'raw'
59
- ::OneApm::Agent.logger.warn("Agent is configured to send raw SQL to the service")
57
+ OneApm::Manager.logger.warn("Agent is configured to send raw SQL to the service")
60
58
  end
61
59
  end
62
60
  end
63
61
 
64
62
  def enabled?
65
- Agent.config[:'transaction_tracer.enabled']
63
+ OneApm::Manager.config[:'transaction_tracer.enabled']
66
64
  end
67
65
 
68
66
  def on_start_transaction(state, start_time, uri=nil)
@@ -95,7 +93,7 @@ module OneApm
95
93
  end
96
94
 
97
95
  def custom_parameters_from_transaction(txn)
98
- if Agent.config[:'transaction_tracer.capture_attributes']
96
+ if OneApm::Manager.config[:'transaction_tracer.capture_attributes']
99
97
  txn.custom_parameters
100
98
  else
101
99
  {}
@@ -200,7 +198,7 @@ module OneApm
200
198
  # Appends a backtrace to a segment if that segment took longer
201
199
  # than the specified duration
202
200
  def append_backtrace(segment, duration)
203
- if duration >= Agent.config[:'transaction_tracer.stack_trace_threshold']
201
+ if duration >= OneApm::Manager.config[:'transaction_tracer.stack_trace_threshold']
204
202
  segment[:backtrace] = caller.join("\n")
205
203
  end
206
204
  end
@@ -219,7 +217,7 @@ module OneApm
219
217
  #
220
218
  # @api public
221
219
  #
222
- def notice_sql(sql, config, duration, state=nil, &explainer) #THREAD_LOCAL_ACCESS sometimes
220
+ def notice_sql(sql, config, duration, state=nil, &explainer)
223
221
  # some statements (particularly INSERTS with large BLOBS
224
222
  # may be very large; we should trim them to a maximum usable length
225
223
  state ||= OneApm::TransactionState.tl_get
@@ -256,18 +254,18 @@ module OneApm
256
254
  #
257
255
  # @api public
258
256
  #
259
- def notice_nosql(key, duration) #THREAD_LOCAL_ACCESS
257
+ def notice_nosql(key, duration)
260
258
  builder = tl_builder
261
259
  notice_extra_data(builder, key, duration, :key)
262
260
  end
263
261
 
264
- def notice_nosql_statement(statement, duration) #THREAD_LOCAL_ACCESS
262
+ def notice_nosql_statement(statement, duration)
265
263
  builder = tl_builder
266
264
  notice_extra_data(builder, statement, duration, :statement)
267
265
  end
268
266
 
269
267
  # Set parameters on the current segment.
270
- def add_segment_parameters(params) #THREAD_LOCAL_ACCESS
268
+ def add_segment_parameters(params)
271
269
  builder = tl_builder
272
270
  return unless builder
273
271
  params.each { |k,v| builder.current_segment[k] = v }
@@ -289,7 +287,7 @@ module OneApm
289
287
  begin
290
288
  sample.prepare_to_send!
291
289
  rescue => e
292
- OneApm::Agent.logger.error("Failed to prepare transaction trace. Error: ", e)
290
+ OneApm::Manager.logger.error("Failed to prepare transaction trace. Error: ", e)
293
291
  false
294
292
  else
295
293
  true