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
@@ -6,17 +6,17 @@ module OneApm
6
6
  class AgentThread
7
7
 
8
8
  def self.create(label, &blk)
9
- ::OneApm::Agent.logger.debug("Creating OneApm thread: #{label}")
9
+ OneApm::Manager.logger.debug("Creating OneApm thread: #{label}")
10
10
  wrapped_blk = Proc.new do
11
11
  begin
12
12
  blk.call
13
13
  rescue => e
14
- ::OneApm::Agent.logger.error("Thread #{label} exited with error", e)
14
+ OneApm::Manager.logger.error("Thread #{label} exited with error", e)
15
15
  rescue Exception => e
16
- ::OneApm::Agent.logger.error("Thread #{label} exited with exception. Re-raising in case of interupt.", e)
16
+ OneApm::Manager.logger.error("Thread #{label} exited with exception. Re-raising in case of interupt.", e)
17
17
  raise
18
18
  ensure
19
- ::OneApm::Agent.logger.debug("Exiting OneApm thread: #{label}")
19
+ OneApm::Manager.logger.debug("Exiting OneApm thread: #{label}")
20
20
  end
21
21
  end
22
22
 
@@ -31,7 +31,7 @@ module OneApm
31
31
  backing_thread_class.list
32
32
  end
33
33
 
34
- def self.bucket_thread(thread, profile_agent_code) #THREAD_LOCAL_ACCESS
34
+ def self.bucket_thread(thread, profile_agent_code)
35
35
  if thread.key?(:oneapm_label)
36
36
  profile_agent_code ? :agent : :ignore
37
37
  else
@@ -50,7 +50,7 @@ module OneApm
50
50
  begin
51
51
  bt = thread.backtrace
52
52
  rescue Exception => e
53
- ::OneApm::Agent.logger.debug("Failed to backtrace #{thread.inspect}: #{e.class.name}: #{e.to_s}")
53
+ OneApm::Manager.logger.debug("Failed to backtrace #{thread.inspect}: #{e.class.name}: #{e.to_s}")
54
54
  end
55
55
  return nil unless bt
56
56
  bt.reject! { |t| t.include?('one_apm') } unless profile_agent_code
@@ -24,11 +24,11 @@ module OneApm
24
24
 
25
25
  @running = false
26
26
  @profile_agent_code = false
27
- @worker_loop = OneApm::Agent::WorkerLoop.new
27
+ @worker_loop = OneApm::Support::WorkerLoop.new
28
28
 
29
29
  # Memoize overhead % to avoid getting stale OR looked up every poll
30
- @overhead_percent_threshold = OneApm::Agent.config[:'xray_session.max_profile_overhead']
31
- OneApm::Agent.config.register_callback(:'xray_session.max_profile_overhead') do |new_value|
30
+ @overhead_percent_threshold = OneApm::Manager.config[:'xray_session.max_profile_overhead']
31
+ OneApm::Manager.config.register_callback(:'xray_session.max_profile_overhead') do |new_value|
32
32
  @overhead_percent_threshold = new_value
33
33
  end
34
34
 
@@ -45,11 +45,11 @@ module OneApm
45
45
 
46
46
  def subscribe(transaction_name, command_arguments={})
47
47
  if !self.class.is_supported?
48
- OneApm::Agent.logger.debug("Backtracing not supported, so not subscribing transaction '#{transaction_name}'")
48
+ OneApm::Manager.logger.debug("Backtracing not supported, so not subscribing transaction '#{transaction_name}'")
49
49
  return
50
50
  end
51
51
 
52
- OneApm::Agent.logger.debug("Backtrace Service subscribing transaction '#{transaction_name}'")
52
+ OneApm::Manager.logger.debug("Backtrace Service subscribing transaction '#{transaction_name}'")
53
53
 
54
54
  profile = ThreadProfile.new(command_arguments)
55
55
 
@@ -65,7 +65,7 @@ module OneApm
65
65
  def unsubscribe(transaction_name)
66
66
  return unless self.class.is_supported?
67
67
 
68
- OneApm::Agent.logger.debug("Backtrace Service unsubscribing transaction '#{transaction_name}'")
68
+ OneApm::Manager.logger.debug("Backtrace Service unsubscribing transaction '#{transaction_name}'")
69
69
  @lock.synchronize do
70
70
  @profiles.delete(transaction_name)
71
71
  if @profiles.empty?
@@ -188,7 +188,7 @@ module OneApm
188
188
  if @buffer[thread].length < MAX_BUFFER_LENGTH
189
189
  @buffer[thread] << [timestamp, backtrace]
190
190
  else
191
- OneApm::Agent.increment_metric('Supportability/XraySessions/DroppedBacktraces')
191
+ OneApm::Manager.increment_metric('Supportability/XraySessions/DroppedBacktraces')
192
192
  end
193
193
  end
194
194
  end
@@ -242,13 +242,13 @@ module OneApm
242
242
  end
243
243
 
244
244
  def record_polling_time(now, poll_start)
245
- OneApm::Agent.record_metric('Supportability/ThreadProfiler/PollingTime', now - poll_start)
245
+ OneApm::Manager.record_metric('Supportability/ThreadProfiler/PollingTime', now - poll_start)
246
246
  end
247
247
 
248
248
  def record_skew(poll_start)
249
249
  if @last_poll
250
250
  skew = poll_start - @last_poll - worker_loop.period
251
- OneApm::Agent.record_metric('Supportability/ThreadProfiler/Skew', skew)
251
+ OneApm::Manager.record_metric('Supportability/ThreadProfiler/Skew', skew)
252
252
  end
253
253
  @last_poll = poll_start
254
254
  end
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'set'
4
- require 'one_apm/agent/event/worker_loop'
4
+ require 'one_apm/support/event/worker_loop'
5
5
  require 'one_apm/agent/threading/backtrace_node'
6
6
 
7
7
  # Data structure for representing a thread profile
@@ -84,10 +84,10 @@ module OneApm
84
84
  end
85
85
  end
86
86
 
87
- def convert_N_trace_nodes_to_arrays(count_to_keep) #THREAD_LOCAL_ACCESS
87
+ def convert_N_trace_nodes_to_arrays(count_to_keep)
88
88
  all_nodes = @traces.values.map { |n| n.flattened }.flatten
89
89
 
90
- OneApm::Agent.instance.stats_engine.
90
+ OneApm::Manager.agent.stats_engine.
91
91
  tl_record_supportability_metric_count("ThreadProfiler/NodeCount", all_nodes.size)
92
92
 
93
93
  all_nodes.sort! do |a, b|
@@ -4,8 +4,8 @@ module OneApm
4
4
  module Helper
5
5
 
6
6
  def handle_serialization_error(method, e)
7
- OneApm::Agent.increment_metric("Supportability/serialization_failure")
8
- OneApm::Agent.increment_metric("Supportability/serialization_failure/#{method}")
7
+ OneApm::Manager.increment_metric("Supportability/serialization_failure")
8
+ OneApm::Manager.increment_metric("Supportability/serialization_failure/#{method}")
9
9
  msg = "Failed to serialize #{method} data using #{@marshaller.class.to_s}: #{e.inspect}"
10
10
  error = SerializationError.new(msg)
11
11
  error.set_backtrace(e.backtrace)
@@ -15,11 +15,11 @@ module OneApm
15
15
  def record_timing_supportability_metrics(method, start_ts, serialize_finish_ts)
16
16
  serialize_time = serialize_finish_ts && (serialize_finish_ts - start_ts)
17
17
  duration = (Time.now - start_ts).to_f
18
- OneApm::Agent.record_metric("Supportability/invoke_remote", duration)
19
- OneApm::Agent.record_metric("Supportability/invoke_remote/#{method.to_s}", duration)
18
+ OneApm::Manager.record_metric("Supportability/invoke_remote", duration)
19
+ OneApm::Manager.record_metric("Supportability/invoke_remote/#{method.to_s}", duration)
20
20
  if serialize_time
21
- OneApm::Agent.record_metric("Supportability/invoke_remote_serialize", serialize_time)
22
- OneApm::Agent.record_metric("Supportability/invoke_remote_serialize/#{method.to_s}", serialize_time)
21
+ OneApm::Manager.record_metric("Supportability/invoke_remote_serialize", serialize_time)
22
+ OneApm::Manager.record_metric("Supportability/invoke_remote_serialize/#{method.to_s}", serialize_time)
23
23
  end
24
24
  end
25
25
 
@@ -38,11 +38,11 @@ module OneApm
38
38
  ]
39
39
  # we may not have an item count, in which case, just record 0 for the exclusive time
40
40
  item_count ||= 0
41
- OneApm::Agent.instance.stats_engine.tl_record_unscoped_metrics(metrics, size_bytes, item_count)
41
+ OneApm::Manager.agent.stats_engine.tl_record_unscoped_metrics(metrics, size_bytes, item_count)
42
42
  end
43
43
 
44
44
  def log_and_return_response(response)
45
- ::OneApm::Agent.logger.debug "Received response, status: #{response.code}, encoding: '#{response['content-encoding']}'"
45
+ OneApm::Manager.logger.debug "Received response, status: #{response.code}, encoding: '#{response['content-encoding']}'"
46
46
 
47
47
  case response
48
48
  when Net::HTTPSuccess
@@ -82,7 +82,7 @@ module OneApm
82
82
  # If we've gotten this far, we don't want this error to propagate and
83
83
  # make this post appear to have been non-successful, which would trigger
84
84
  # re-aggregation of the same metric data into the next post, so just log
85
- OneApm::Agent.logger.error("Failed to fill metric ID cache from response, error details follow ", e)
85
+ OneApm::Manager.logger.error("Failed to fill metric ID cache from response, error details follow ", e)
86
86
  end
87
87
 
88
88
  # The collector wants to recieve metric data in a format that's different
@@ -109,7 +109,7 @@ module OneApm
109
109
  @marshaller.dump(data)
110
110
  true
111
111
  rescue StandardError, SystemStackError => e
112
- OneApm::Agent.logger.warn("Unable to marshal environment report on connect.", e)
112
+ OneApm::Manager.logger.warn("Unable to marshal environment report on connect.", e)
113
113
  false
114
114
  end
115
115
 
@@ -74,14 +74,14 @@ module OneApm
74
74
  begin
75
75
  attempts += 1
76
76
  conn = http_connection
77
- ::OneApm::Agent.logger.debug "Sending request to #{opts[:collector]}#{opts[:uri]}"
77
+ OneApm::Manager.logger.debug "Sending request to #{opts[:collector]}#{opts[:uri]}"
78
78
  OneApm::TimerLib.timeout(@request_timeout) do
79
79
  response = conn.request(request)
80
80
  end
81
81
  rescue *CONNECTION_ERRORS => e
82
82
  close_shared_connection
83
83
  if attempts < max_attempts
84
- ::OneApm::Agent.logger.debug("Retrying request to #{opts[:collector]}#{opts[:uri]} after #{e}")
84
+ OneApm::Manager.logger.debug("Retrying request to #{opts[:collector]}#{opts[:uri]} after #{e}")
85
85
  retry
86
86
  else
87
87
  raise ServerConnectionException, "Recoverable error talking to #{@collector} after #{attempts} attempts: #{e}"
@@ -97,7 +97,7 @@ module OneApm
97
97
  begin
98
98
  t0 = Time.now
99
99
  @in_session = true
100
- if OneApm::Agent.config[:aggressive_keepalive]
100
+ if OneApm::Manager.config[:aggressive_keepalive]
101
101
  session_with_keepalive(&block)
102
102
  else
103
103
  session_without_keepalive(&block)
@@ -141,7 +141,7 @@ module OneApm
141
141
 
142
142
  def close_shared_connection
143
143
  if @shared_tcp_connection
144
- ::OneApm::Agent.logger.debug("Closing shared TCP connection to #{@shared_tcp_connection.address}:#{@shared_tcp_connection.port}")
144
+ OneApm::Manager.logger.debug("Closing shared TCP connection to #{@shared_tcp_connection.address}:#{@shared_tcp_connection.port}")
145
145
  @shared_tcp_connection.finish if @shared_tcp_connection.started?
146
146
  @shared_tcp_connection = nil
147
147
  end
@@ -151,8 +151,8 @@ module OneApm
151
151
  # We use Timeout explicitly instead of this
152
152
  conn.read_timeout = nil
153
153
 
154
- if conn.respond_to?(:keep_alive_timeout) && OneApm::Agent.config[:aggressive_keepalive]
155
- conn.keep_alive_timeout = OneApm::Agent.config[:keep_alive_timeout]
154
+ if conn.respond_to?(:keep_alive_timeout) && OneApm::Manager.config[:aggressive_keepalive]
155
+ conn.keep_alive_timeout = OneApm::Manager.config[:keep_alive_timeout]
156
156
  end
157
157
  end
158
158
 
@@ -163,7 +163,7 @@ module OneApm
163
163
  end
164
164
 
165
165
  def start_connection(conn)
166
- OneApm::Agent.logger.debug("Opening TCP connection to #{conn.address}:#{conn.port}")
166
+ OneApm::Manager.logger.debug("Opening TCP connection to #{conn.address}:#{conn.port}")
167
167
  OneApm::TimerLib.timeout(@request_timeout) { conn.start }
168
168
  conn
169
169
  end
@@ -175,10 +175,10 @@ module OneApm
175
175
  proxy_server.user, proxy_server.password)
176
176
 
177
177
  conn = http_class.new((@collector.ip || @collector.name), @collector.port)
178
- setup_connection_for_ssl(conn) if Agent.config[:ssl]
178
+ setup_connection_for_ssl(conn) if OneApm::Manager.config[:ssl]
179
179
  setup_connection_timeouts(conn)
180
180
 
181
- ::OneApm::Agent.logger.debug("Created net/http handle to #{conn.address}:#{conn.port}")
181
+ OneApm::Manager.logger.debug("Created net/http handle to #{conn.address}:#{conn.port}")
182
182
  conn
183
183
  end
184
184
 
@@ -198,7 +198,7 @@ module OneApm
198
198
  def ssl_cert_store
199
199
  path = cert_file_path
200
200
  if !@ssl_cert_store || path != @cached_cert_store_path
201
- ::OneApm::Agent.logger.debug("Creating SSL certificate store from file at #{path}")
201
+ OneApm::Manager.logger.debug("Creating SSL certificate store from file at #{path}")
202
202
  @ssl_cert_store = OpenSSL::X509::Store.new
203
203
  @ssl_cert_store.add_file(path)
204
204
  @cached_cert_store_path = path
@@ -209,8 +209,8 @@ module OneApm
209
209
  # The path to the certificate file used to verify the SSL
210
210
  # connection if verify_peer is enabled
211
211
  def cert_file_path
212
- if path_override = OneApm::Agent.config[:ca_bundle_path]
213
- OneApm::Agent.logger.warn("Couldn't find CA bundle from configured ca_bundle_path: #{path_override}") unless File.exists? path_override
212
+ if path_override = OneApm::Manager.config[:ca_bundle_path]
213
+ OneApm::Manager.logger.warn("Couldn't find CA bundle from configured ca_bundle_path: #{path_override}") unless File.exists? path_override
214
214
  path_override
215
215
  else
216
216
  File.expand_path(File.join(probe.oneapm_root, 'config', 'cert', 'cacert.pem'))
@@ -243,8 +243,8 @@ module OneApm
243
243
  # Raises an UnrecoverableServerException if the post_string is longer
244
244
  # than the limit configured in the probe object
245
245
  def check_post_size(post_string)
246
- return if post_string.size < Agent.config[:post_size_limit]
247
- ::OneApm::Agent.logger.debug "Tried to send too much data: #{post_string.size} bytes"
246
+ return if post_string.size < OneApm::Manager.config[:post_size_limit]
247
+ OneApm::Manager.logger.debug "Tried to send too much data: #{post_string.size} bytes"
248
248
  raise UnrecoverableServerException.new('413 Request Entity Too Large')
249
249
  end
250
250
 
@@ -16,19 +16,19 @@ module OneApm
16
16
  # there is no proxy, otherwise it has proxy configuration
17
17
  # information pulled from the config file
18
18
  def proxy_server
19
- @proxy_server ||= OneApm::Support::ProxyServer.new(Agent.config[:proxy_host],
20
- Agent.config[:proxy_port],
21
- Agent.config[:proxy_user],
22
- Agent.config[:proxy_pass])
19
+ @proxy_server ||= OneApm::Support::ProxyServer.new(Manager.config[:proxy_host],
20
+ OneApm::Manager.config[:proxy_port],
21
+ OneApm::Manager.config[:proxy_user],
22
+ OneApm::Manager.config[:proxy_pass])
23
23
  end
24
24
 
25
25
  # turns a hostname into an ip address and returns a
26
26
  # OneApm::Support::Server that contains the configuration info
27
27
  def server_from_host(hostname=nil)
28
- host = hostname || Agent.config[:host]
28
+ host = hostname || OneApm::Manager.config[:host]
29
29
 
30
30
  # if the host is not an IP address, turn it into one
31
- OneApm::Support::Server.new(host, Agent.config[:port], convert_to_ip_address(host))
31
+ OneApm::Support::Server.new(host, OneApm::Manager.config[:port], convert_to_ip_address(host))
32
32
  end
33
33
 
34
34
  # Check to see if we need to look up the IP address
@@ -38,13 +38,13 @@ module OneApm
38
38
  def convert_to_ip_address(host)
39
39
  # here we leave it as a host name since the cert verification
40
40
  # needs it in host form
41
- return host if Agent.config[:ssl]
41
+ return host if OneApm::Manager.config[:ssl]
42
42
  # We won't talk directly to the host, so no need to resolve if proxy configured
43
- return host if Agent.config[:proxy_host]
43
+ return host if OneApm::Manager.config[:proxy_host]
44
44
  return nil if host.nil? || host.downcase == "localhost"
45
45
  ip = resolve_ip_address(host)
46
46
 
47
- OneApm::Agent.logger.debug "Resolved #{host} to #{ip}"
47
+ OneApm::Manager.logger.debug "Resolved #{host} to #{ip}"
48
48
  ip
49
49
  end
50
50
 
@@ -55,12 +55,12 @@ module OneApm
55
55
  def resolve_ip_address(host)
56
56
  Resolv.getaddress(host)
57
57
  rescue => e
58
- OneApm::Agent.logger.warn("DNS Error caching IP address:", e)
58
+ OneApm::Manager.logger.warn("DNS Error caching IP address:", e)
59
59
  begin
60
- OneApm::Agent.logger.debug("Trying native DNS lookup since Resolv failed")
60
+ OneApm::Manager.logger.debug("Trying native DNS lookup since Resolv failed")
61
61
  IPSocket.getaddress(host)
62
62
  rescue => e
63
- OneApm::Agent.logger.error("Could not look up server address: #{e}")
63
+ OneApm::Manager.logger.error("Could not look up server address: #{e}")
64
64
  nil
65
65
  end
66
66
  end
@@ -22,25 +22,25 @@ module OneApm
22
22
  attr_reader :collector,:marshaller, :metric_id_cache
23
23
 
24
24
  def initialize(license_key = nil, collector = nil)
25
- @license_key = license_key || Agent.config[:license_key]
25
+ @license_key = license_key || OneApm::Manager.config[:license_key]
26
26
  @collector = collector || server
27
- @request_timeout = Agent.config[:timeout]
27
+ @request_timeout = OneApm::Manager.config[:timeout]
28
28
  @metric_id_cache = {}
29
- @audit_logger = ::OneApm::Agent::AuditLogger.new
29
+ @audit_logger = ::OneApm::Logger::AuditLogger.new
30
30
 
31
- Agent.config.register_callback(:'audit_log.enabled') do |enabled|
31
+ OneApm::Manager.config.register_callback(:'audit_log.enabled') do |enabled|
32
32
  @audit_logger.enabled = enabled
33
33
  end
34
34
 
35
- Agent.config.register_callback(:ssl) do |ssl|
35
+ OneApm::Manager.config.register_callback(:ssl) do |ssl|
36
36
  if !ssl
37
- OneApm::Agent.logger.warn("Agent is configured not to use SSL when communicating with OneApm's servers")
37
+ OneApm::Manager.logger.warn("Agent is configured not to use SSL when communicating with OneApm's servers")
38
38
  else
39
- OneApm::Agent.logger.debug("Agent is configured to use SSL")
39
+ OneApm::Manager.logger.debug("Agent is configured to use SSL")
40
40
  end
41
41
  end
42
42
 
43
- Agent.config.register_callback(:marshaller) do |marshaller|
43
+ OneApm::Manager.config.register_callback(:marshaller) do |marshaller|
44
44
  @marshaller = OneApm::Support::JsonMarshaller.new
45
45
  end
46
46
  end
@@ -27,7 +27,7 @@ module OneApm
27
27
  end
28
28
 
29
29
  def start(agent_command)
30
- OneApm::Agent.logger.debug("Starting Thread Profiler.")
30
+ OneApm::Manager.logger.debug("Starting Thread Profiler.")
31
31
  profile = @backtrace_service.subscribe(
32
32
  OneApm::Agent::Threading::BacktraceService::ALL_TRANSACTIONS,
33
33
  agent_command.arguments
@@ -39,14 +39,14 @@ module OneApm
39
39
 
40
40
  def stop(report_data)
41
41
  return unless running?
42
- OneApm::Agent.logger.debug("Stopping Thread Profiler.")
42
+ OneApm::Manager.logger.debug("Stopping Thread Profiler.")
43
43
  @finished_profile = @backtrace_service.harvest(OneApm::Agent::Threading::BacktraceService::ALL_TRANSACTIONS)
44
44
  @backtrace_service.unsubscribe(OneApm::Agent::Threading::BacktraceService::ALL_TRANSACTIONS)
45
45
  @finished_profile = nil if !report_data
46
46
  end
47
47
 
48
48
  def harvest
49
- OneApm::Agent.logger.debug("Harvesting from Thread Profiler #{@finished_profile.to_log_description unless @finished_profile.nil?}")
49
+ OneApm::Manager.logger.debug("Harvesting from Thread Profiler #{@finished_profile.to_log_description unless @finished_profile.nil?}")
50
50
  profile = @finished_profile
51
51
  @backtrace_service.profile_agent_code = false
52
52
  @finished_profile = nil
@@ -55,7 +55,7 @@ module OneApm
55
55
  end
56
56
 
57
57
  def enabled?
58
- OneApm::Agent.config[:'thread_profiler.enabled']
58
+ OneApm::Manager.config[:'thread_profiler.enabled']
59
59
  end
60
60
 
61
61
  def running?
@@ -28,7 +28,7 @@ module OneApm
28
28
  end
29
29
 
30
30
  def run_profiler?
31
- @run_profiler && OneApm::Agent.config[:'xray_session.allow_profiles']
31
+ @run_profiler && OneApm::Manager.config[:'xray_session.allow_profiles']
32
32
  end
33
33
 
34
34
  def activate
@@ -29,8 +29,8 @@ module OneApm
29
29
  # If X-Rays are disabled, just be quiet about it and don't start the
30
30
  # command. Other hosts might be running the X-Ray, so we don't need
31
31
  # to bark on every get_agent_commands.
32
- if !OneApm::Agent.config[:'xray_session.enabled']
33
- OneApm::Agent.logger.debug("Not responding to X-Ray command because of config 'xray_session.enabled' = #{OneApm::Agent.config[:'xray_session.enabled']}")
32
+ if !OneApm::Manager.config[:'xray_session.enabled']
33
+ OneApm::Manager.logger.debug("Not responding to X-Ray command because of config 'xray_session.enabled' = #{OneApm::Manager.config[:'xray_session.enabled']}")
34
34
  return
35
35
  end
36
36
 
@@ -51,7 +51,7 @@ module OneApm
51
51
  return NO_PROFILES unless OneApm::Agent::Threading::BacktraceService.is_supported?
52
52
 
53
53
  profiles = active_thread_profiling_sessions.map do |session|
54
- OneApm::Agent.logger.debug("Harvesting profile for X-Ray session #{session.inspect}")
54
+ OneApm::Manager.logger.debug("Harvesting profile for X-Ray session #{session.inspect}")
55
55
  @backtrace_service.harvest(session.key_transaction_name)
56
56
  end
57
57
  profiles.reject! {|p| p.empty?}
@@ -64,7 +64,7 @@ module OneApm
64
64
 
65
65
  def cleanup_finished_sessions
66
66
  finished_session_ids.each do |id|
67
- OneApm::Agent.logger.debug("Finished X-Ray session #{id} by duration. Removing it from active sessions.")
67
+ OneApm::Manager.logger.debug("Finished X-Ray session #{id} by duration. Removing it from active sessions.")
68
68
  remove_session_by_id(id)
69
69
  end
70
70
  end
@@ -73,7 +73,7 @@ module OneApm
73
73
  ### Internals
74
74
 
75
75
  def one_apm_service
76
- OneApm::Agent.instance.service
76
+ OneApm::Manager.agent.service
77
77
  end
78
78
 
79
79
  # These are unsynchonized and should only be used for testing
@@ -102,13 +102,13 @@ module OneApm
102
102
  def lookup_metadata_for(ids_to_activate)
103
103
  return [] if ids_to_activate.empty?
104
104
 
105
- OneApm::Agent.logger.debug("Retrieving metadata for X-Ray sessions #{ids_to_activate.inspect}")
105
+ OneApm::Manager.logger.debug("Retrieving metadata for X-Ray sessions #{ids_to_activate.inspect}")
106
106
  one_apm_service.get_xray_metadata(ids_to_activate)
107
107
  end
108
108
 
109
109
  def add_session(session)
110
- OneApm::Agent.logger.debug("Adding X-Ray session #{session.inspect}")
111
- OneApm::Agent.increment_metric("Supportability/XraySessions/Starts")
110
+ OneApm::Manager.logger.debug("Adding X-Ray session #{session.inspect}")
111
+ OneApm::Manager.increment_metric("Supportability/XraySessions/Starts")
112
112
 
113
113
  @sessions_lock.synchronize { @sessions[session.id] = session }
114
114
 
@@ -134,8 +134,8 @@ module OneApm
134
134
  session = @sessions_lock.synchronize { @sessions.delete(id) }
135
135
 
136
136
  if session
137
- OneApm::Agent.logger.debug("Removing X-Ray session #{session.inspect}")
138
- OneApm::Agent.increment_metric("Supportability/XraySessions/Stops")
137
+ OneApm::Manager.logger.debug("Removing X-Ray session #{session.inspect}")
138
+ OneApm::Manager.increment_metric("Supportability/XraySessions/Stops")
139
139
 
140
140
  if session.run_profiler?
141
141
  @backtrace_service.unsubscribe(session.key_transaction_name)