oneapm_rpm 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
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