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
@@ -2,18 +2,18 @@
2
2
 
3
3
  module OneApm
4
4
  module Agent
5
- class PipeService
5
+ class ForkedProcessService
6
6
  attr_reader :channel_id, :buffer, :pipe
7
7
  attr_accessor :request_timeout, :agent_id, :collector
8
8
 
9
9
  def initialize(channel_id)
10
10
  @channel_id = channel_id
11
11
  @collector = OneApm::Support::Server.new(:name => 'parent', :port => 0)
12
- @pipe = OneApm::Agent::PipeChannelManager.channels[@channel_id]
12
+ @pipe = OneApm::Support::ForkedProcessChannel.channels[@channel_id]
13
13
  if @pipe && @pipe.parent_pid != $$
14
14
  @pipe.after_fork_in_child
15
15
  else
16
- OneApm::Agent.logger.error("No communication channel to parent process.")
16
+ OneApm::Manager.logger.error("No communication channel to parent process.")
17
17
  end
18
18
  end
19
19
 
@@ -42,8 +42,8 @@ module OneApm
42
42
  end
43
43
  end
44
44
 
45
- def self.record_gc_metric(call_count, elapsed) #THREAD_LOCAL_ACCESS
46
- OneApm::Agent.instance.stats_engine.tl_record_scoped_and_unscoped_metrics(gc_metric_name, GC_ROLLUP) do |stats|
45
+ def self.record_gc_metric(call_count, elapsed)
46
+ OneApm::Manager.agent.stats_engine.tl_record_scoped_and_unscoped_metrics(gc_metric_name, GC_ROLLUP) do |stats|
47
47
  stats.call_count += call_count
48
48
  stats.total_call_time += elapsed
49
49
  stats.total_exclusive_time += elapsed
@@ -86,7 +86,7 @@ module OneApm
86
86
  end
87
87
 
88
88
  def call_time_s
89
- OneApm::Agent.instance.monotonic_gc_profiler.total_time_s
89
+ OneApm::Manager.agent.monotonic_gc_profiler.total_time_s
90
90
  end
91
91
 
92
92
  def call_count
@@ -13,7 +13,7 @@ module OneApm
13
13
  # metric_names may be either a single name, or an array of names.
14
14
  #
15
15
  # This is an internal method, subject to change at any time. Client apps
16
- # and gems should use the public API (OneApm::Agent.record_metric)
16
+ # and gems should use the public API (OneApm::Manager.record_metric)
17
17
  # instead.
18
18
  #
19
19
  # There are four ways to use this method:
@@ -65,7 +65,7 @@ module OneApm
65
65
  # Like tl_record_unscoped_metrics, but records a scoped metric as well.
66
66
  #
67
67
  # This is an internal method, subject to change at any time. Client apps
68
- # and gems should use the public API (OneApm::Agent.record_metric)
68
+ # and gems should use the public API (OneApm::Manager.record_metric)
69
69
  # instead.
70
70
  #
71
71
  # The given scoped_metric will be recoded as both a scoped *and* an
@@ -106,7 +106,7 @@ module OneApm
106
106
  end
107
107
 
108
108
  # This method is deprecated and not thread safe, and should not be used
109
- # by any new client code. Use OneApm::Agent.record_metric instead.
109
+ # by any new client code. Use OneApm::Manager.record_metric instead.
110
110
  #
111
111
  # Lookup the Stats object for a given unscoped metric, returning a new
112
112
  # Stats object if one did not exist previously.
@@ -119,7 +119,7 @@ module OneApm
119
119
  end
120
120
 
121
121
  # This method is deprecated and not thread safe, and should not be used
122
- # by any new client code. Use OneApm::Agent.record_metric instead.
122
+ # by any new client code. Use OneApm::Manager.record_metric instead.
123
123
  #
124
124
  # If scoped_metric_only is true, only a scoped metric is created (used
125
125
  # by rendering metrics which by definition are per controller only)
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
- # A Hash-descended class for storing metric data in the OneApm Agent.
3
+ # A Hash-descended class for storing metric data in the OneApm OneApm::Manager.
4
4
  #
5
5
  # Keys are OneApm::MetricSpec objects.
6
6
  # Values are OneApm::Metrics::Stats objects.
@@ -56,7 +56,7 @@ module OneApm
56
56
  rescue NoMethodError => e
57
57
  # This only happen in the case of a corrupted default_proc
58
58
  # Side-step it manually, notice the issue, and carry on....
59
- OneApm::Agent.instance.error_collector. \
59
+ OneApm::Manager.agent.error_collector. \
60
60
  notice_agent_error(StatsHashLookupError.new(e, self, metric_spec))
61
61
 
62
62
  stats = OneApm::Metrics::Stats.new
@@ -99,7 +99,7 @@ module OneApm
99
99
  when YamlSource then @yaml_source = source
100
100
  when DefaultSource then @default_source = source
101
101
  else
102
- OneApm::Agent.logger.warn("Invalid config format; config will be ignored: #{source}")
102
+ OneApm::Manager.logger.warn("Invalid config format; config will be ignored: #{source}")
103
103
  end
104
104
 
105
105
  reset_cache
@@ -148,7 +148,7 @@ module OneApm
148
148
  begin
149
149
  transform.call(value)
150
150
  rescue => e
151
- ::OneApm::Agent.logger.error("Error applying transformation for #{key}, falling back to #{value}.", e)
151
+ OneApm::Manager.logger.error("Error applying transformation for #{key}, falling back to #{value}.", e)
152
152
  raise e
153
153
  end
154
154
  else
@@ -182,7 +182,7 @@ module OneApm
182
182
  end
183
183
 
184
184
  def notify_finished_configuring
185
- OneApm::Agent.instance.events.notify(:finished_configuring)
185
+ OneApm::Manager.agent.events.notify(:finished_configuring)
186
186
  end
187
187
 
188
188
  def finished_configuring?
@@ -196,7 +196,7 @@ module OneApm
196
196
  begin
197
197
  thawed_layer[k] = instance_eval(&v) if v.respond_to?(:call)
198
198
  rescue => e
199
- ::OneApm::Agent.logger.debug("#{e.class.name} : #{e.message} - when accessing config key #{k}")
199
+ OneApm::Manager.logger.debug("#{e.class.name} : #{e.message} - when accessing config key #{k}")
200
200
  thawed_layer[k] = nil
201
201
  end
202
202
  thawed_layer.delete(:config)
@@ -227,9 +227,9 @@ module OneApm
227
227
  end
228
228
 
229
229
  def app_names
230
- case OneApm::Agent.config[:app_name]
231
- when Array then OneApm::Agent.config[:app_name]
232
- when String then OneApm::Agent.config[:app_name].split(';')
230
+ case OneApm::Manager.config[:app_name]
231
+ when Array then OneApm::Manager.config[:app_name]
232
+ when String then OneApm::Manager.config[:app_name].split(';')
233
233
  else []
234
234
  end
235
235
  end
@@ -241,19 +241,19 @@ module OneApm
241
241
  MAX_LABEL_LENGTH = 255
242
242
 
243
243
  def parsed_labels
244
- case OneApm::Agent.config[:labels]
244
+ case OneApm::Manager.config[:labels]
245
245
  when String
246
246
  parse_labels_from_string
247
247
  else
248
248
  parse_labels_from_dictionary
249
249
  end
250
250
  rescue => e
251
- OneApm::Agent.logger.error(PARSING_LABELS_FAILURE, e)
251
+ OneApm::Manager.logger.error(PARSING_LABELS_FAILURE, e)
252
252
  []
253
253
  end
254
254
 
255
255
  def parse_labels_from_string
256
- labels = OneApm::Agent.config[:labels]
256
+ labels = OneApm::Manager.config[:labels]
257
257
  label_pairs = break_label_string_into_pairs(labels)
258
258
  make_label_hash(label_pairs, labels)
259
259
  end
@@ -286,7 +286,7 @@ module OneApm
286
286
  pairs = Array(pairs)
287
287
 
288
288
  unless valid_label_pairs?(pairs)
289
- OneApm::Agent.logger.warn("#{MALFORMED_LABELS_WARNING}: #{labels||pairs}")
289
+ OneApm::Manager.logger.warn("#{MALFORMED_LABELS_WARNING}: #{labels||pairs}")
290
290
  return []
291
291
  end
292
292
 
@@ -307,7 +307,7 @@ module OneApm
307
307
  else
308
308
  msg = "Label name longer than the allowed #{MAX_LABEL_LENGTH} will be truncated. Name = '#{text}'"
309
309
  end
310
- OneApm::Agent.logger.warn(msg)
310
+ OneApm::Manager.logger.warn(msg)
311
311
  text[0..MAX_LABEL_LENGTH-1]
312
312
  else
313
313
  text
@@ -316,7 +316,7 @@ module OneApm
316
316
 
317
317
  def limit_number_of_labels(pairs)
318
318
  if pairs.length > MAX_LABEL_COUNT
319
- OneApm::Agent.logger.warn("Too many labels defined. Only taking first #{MAX_LABEL_COUNT}")
319
+ OneApm::Manager.logger.warn("Too many labels defined. Only taking first #{MAX_LABEL_COUNT}")
320
320
  pairs[0...64]
321
321
  else
322
322
  pairs
@@ -330,7 +330,7 @@ module OneApm
330
330
  end
331
331
 
332
332
  def parse_labels_from_dictionary
333
- make_label_hash(OneApm::Agent.config[:labels])
333
+ make_label_hash(OneApm::Manager.config[:labels])
334
334
  end
335
335
 
336
336
  # Generally only useful during initial construction and tests
@@ -356,7 +356,7 @@ module OneApm
356
356
  # flattened.inspect) is expensive enough that we don't want to do it
357
357
  # unless we're actually going to be logging the message based on our
358
358
  # current log level.
359
- ::OneApm::Agent.logger.debug do
359
+ OneApm::Manager.logger.debug do
360
360
  "Updating config (#{direction}) from #{source.class}. Results: #{flattened.inspect}"
361
361
  end
362
362
  end
@@ -409,7 +409,7 @@ module OneApm
409
409
  const = constantize(class_name)
410
410
 
411
411
  unless const
412
- OneApm::Agent.logger.warn "Configuration referenced undefined constant: #{class_name}"
412
+ OneApm::Manager.logger.warn "Configuration referenced undefined constant: #{class_name}"
413
413
  end
414
414
 
415
415
  const
@@ -12,13 +12,13 @@ module OneApm
12
12
  end
13
13
 
14
14
  def blacklisted_constants?
15
- blacklisted?(OneApm::Agent.config[:'autostart.blacklisted_constants']) do |name|
15
+ blacklisted?(OneApm::Manager.config[:'autostart.blacklisted_constants']) do |name|
16
16
  OneApm::LanguageSupport.constant_is_defined?(name)
17
17
  end
18
18
  end
19
19
 
20
20
  def blacklisted_executables?
21
- blacklisted?(OneApm::Agent.config[:'autostart.blacklisted_executables']) do |bin|
21
+ blacklisted?(OneApm::Manager.config[:'autostart.blacklisted_executables']) do |bin|
22
22
  File.basename($0) == bin
23
23
  end
24
24
  end
@@ -31,10 +31,10 @@ module OneApm
31
31
  tasks = begin
32
32
  ::Rake.application.top_level_tasks
33
33
  rescue => e
34
- ::OneApm::Agent.logger.debug("Not in Rake environment so skipping blacklisted_rake_tasks check: #{e}")
34
+ OneApm::Manager.logger.debug("Not in Rake environment so skipping blacklisted_rake_tasks check: #{e}")
35
35
  []
36
36
  end
37
- !(tasks & ::OneApm::Agent.config[:'autostart.blacklisted_rake_tasks'].split(/\s*,\s*/)).empty?
37
+ !(tasks & OneApm::Manager.config[:'autostart.blacklisted_rake_tasks'].split(/\s*,\s*/)).empty?
38
38
  end
39
39
  end
40
40
  end
@@ -6,7 +6,7 @@ module OneApm
6
6
  # Helper since default Procs are evaluated in the context of this module
7
7
  def self.value_of(key)
8
8
  Proc.new do
9
- OneApm::Agent.config[key]
9
+ OneApm::Manager.config[key]
10
10
  end
11
11
  end
12
12
 
@@ -51,7 +51,7 @@ module OneApm
51
51
 
52
52
  def self.config_path
53
53
  Proc.new {
54
- found_path = OneApm::Agent.config[:config_search_paths].detect do |file|
54
+ found_path = OneApm::Manager.config[:config_search_paths].detect do |file|
55
55
  File.expand_path(file) if File.exists? file
56
56
  end
57
57
  found_path || ""
@@ -71,7 +71,7 @@ module OneApm
71
71
  when 4
72
72
  :rails4
73
73
  else
74
- ::OneApm::Agent.logger.error "Detected unsupported Rails version #{Rails::VERSION::STRING}"
74
+ OneApm::Manager.logger.error "Detected unsupported Rails version #{Rails::VERSION::STRING}"
75
75
  end
76
76
  when defined?(::Sinatra) && defined?(::Sinatra::Base) then :sinatra
77
77
  when defined?(::OneApm::IA) then :external
@@ -82,15 +82,15 @@ module OneApm
82
82
 
83
83
  def self.agent_enabled
84
84
  Proc.new {
85
- OneApm::Agent.config[:enabled] &&
86
- OneApm::Agent.config[:monitor_mode] &&
85
+ OneApm::Manager.config[:enabled] &&
86
+ OneApm::Manager.config[:monitor_mode] &&
87
87
  OneApm::Configuration::Autostart.agent_should_start?
88
88
  }
89
89
  end
90
90
 
91
91
  def self.audit_log_path
92
92
  Proc.new {
93
- File.join(OneApm::Agent.config[:log_file_path], 'oneapm_audit.log')
93
+ File.join(OneApm::Manager.config[:log_file_path], 'oneapm_audit.log')
94
94
  }
95
95
  end
96
96
 
@@ -121,15 +121,15 @@ module OneApm
121
121
  # set. Once JS errors are GA, browser_monitoring.loader can stop
122
122
  # being dynamic.
123
123
  def self.browser_monitoring_loader
124
- Proc.new { OneApm::Agent.config[:js_errors_beta] ? "full" : "rum"}
124
+ Proc.new { OneApm::Manager.config[:js_errors_beta] ? "full" : "rum"}
125
125
  end
126
126
 
127
127
  def self.transaction_tracer_transaction_threshold
128
- Proc.new { OneApm::Agent.config[:apdex_t] * 4 }
128
+ Proc.new { OneApm::Manager.config[:apdex_t] * 4 }
129
129
  end
130
130
 
131
131
  def self.port
132
- Proc.new { OneApm::Agent.config[:ssl] ? 443 : 80 }
132
+ Proc.new { OneApm::Manager.config[:ssl] ? 443 : 80 }
133
133
  end
134
134
 
135
135
  def self.rules_ignore
@@ -93,7 +93,7 @@ module OneApm
93
93
  self[config_key] = true
94
94
  end
95
95
  else
96
- OneApm::Agent.logger.info("#{environment_key} does not have a corresponding configuration setting (#{config_key} does not exist).")
96
+ OneApm::Manager.logger.info("#{environment_key} does not have a corresponding configuration setting (#{config_key} does not exist).")
97
97
  self[config_key] = value
98
98
  end
99
99
  end
@@ -46,7 +46,7 @@ module OneApm
46
46
  end
47
47
 
48
48
  if result != original_value
49
- OneApm::Agent.logger.info("Disabling setting #{key}='#{original_value}' because high security mode is enabled. Value will be '#{result}'")
49
+ OneApm::Manager.logger.info("Disabling setting #{key}='#{original_value}' because high security mode is enabled. Value will be '#{result}'")
50
50
  end
51
51
 
52
52
  result
@@ -17,12 +17,12 @@ module OneApm
17
17
  @file_path = validate_config_file_path(path)
18
18
  return unless @file_path
19
19
 
20
- OneApm::Agent.logger.info("Reading configuration from #{path} (#{Dir.pwd})")
20
+ OneApm::Manager.logger.info("Reading configuration from #{path} (#{Dir.pwd})")
21
21
  raw_file = File.read(@file_path)
22
22
  erb_file = process_erb(raw_file)
23
23
  config = process_yaml(erb_file, env, config, @file_path)
24
24
  rescue ScriptError, StandardError => e
25
- ::OneApm::Agent.logger.error("Failed to read or parse configuration file at #{path}", e)
25
+ OneApm::Manager.logger.error("Failed to read or parse configuration file at #{path}", e)
26
26
  end
27
27
 
28
28
  substitute_transaction_threshold(config)
@@ -46,13 +46,13 @@ module OneApm
46
46
 
47
47
  def warn_missing_config_file(path)
48
48
  based_on = 'unknown'
49
- source = ::OneApm::Agent.config.source(:config_path)
49
+ source = OneApm::Manager.config.source(:config_path)
50
50
  candidate_paths = [path]
51
51
 
52
52
  case source
53
53
  when DefaultSource
54
54
  based_on = 'defaults'
55
- candidate_paths = OneApm::Agent.config[:config_search_paths].map do |p|
55
+ candidate_paths = OneApm::Manager.config[:config_search_paths].map do |p|
56
56
  File.expand_path(p)
57
57
  end
58
58
  when EnvironmentSource
@@ -61,7 +61,7 @@ module OneApm
61
61
  based_on = 'API call'
62
62
  end
63
63
 
64
- OneApm::Agent.logger.warn(
64
+ OneApm::Manager.logger.warn(
65
65
  "No configuration file found. Working directory = #{Dir.pwd}",
66
66
  "Looked in these locations (based on #{based_on}): #{candidate_paths.join(", ")}"
67
67
  )
@@ -81,7 +81,7 @@ module OneApm
81
81
 
82
82
  ERB.new(file).result(binding)
83
83
  rescue ScriptError, StandardError => e
84
- ::OneApm::Agent.logger.error("Failed ERB processing configuration file. This is typically caused by a Ruby error in <% %> templating blocks in your oneapm.yml file.", e)
84
+ OneApm::Manager.logger.error("Failed ERB processing configuration file. This is typically caused by a Ruby error in <% %> templating blocks in your oneapm.yml file.", e)
85
85
  nil
86
86
  end
87
87
  end
@@ -89,7 +89,7 @@ module OneApm
89
89
  def process_yaml(file, env, config, path)
90
90
  if file
91
91
  confighash = with_yaml_engine { YAML.load(file) }
92
- ::OneApm::Agent.logger.error("Config file at #{path} doesn't include a '#{env}' section!") unless confighash.key?(env)
92
+ OneApm::Manager.logger.error("Config file at #{path} doesn't include a '#{env}' section!") unless confighash.key?(env)
93
93
 
94
94
  config = confighash[env] || {}
95
95
  end
@@ -47,7 +47,7 @@ class OneApm::NoticedError
47
47
  @message = @message[0..4095] if @message.length > 4096
48
48
 
49
49
  # replace error message if enabled
50
- if OneApm::Agent.config[:'strip_exception_messages.enabled'] &&
50
+ if OneApm::Manager.config[:'strip_exception_messages.enabled'] &&
51
51
  !self.class.passes_message_whitelist(exception.class)
52
52
  @message = STRIPPED_EXCEPTION_REPLACEMENT_MESSAGE
53
53
  end
@@ -64,7 +64,7 @@ class OneApm::NoticedError
64
64
  end
65
65
 
66
66
  def self.passes_message_whitelist(exception_class)
67
- OneApm::Agent.config.stripped_exceptions_whitelist.any? do |klass|
67
+ OneApm::Manager.config.stripped_exceptions_whitelist.any? do |klass|
68
68
  exception_class <= klass
69
69
  end
70
70
  end
@@ -6,9 +6,11 @@ module OneApm
6
6
  class Probe
7
7
  module Frameworks
8
8
  class External < OneApm::Probe::Frameworks::Ruby
9
+
9
10
  def init_config(options={})
10
11
  super
11
12
  end
13
+
12
14
  end
13
15
  end
14
16
  end
@@ -11,10 +11,6 @@ module OneApm
11
11
  @env ||= RAILS_ENV.dup
12
12
  end
13
13
 
14
- # Rails can return an empty string from this method, causing
15
- # the agent not to start even when it is properly in a rails 3
16
- # application, so we test the value to make sure it actually
17
- # has contents, and bail to the parent class if it is empty.
18
14
  def root
19
15
  root = rails_root.to_s
20
16
  if !root.empty?
@@ -36,23 +32,17 @@ module OneApm
36
32
  end
37
33
  end
38
34
 
39
- # In versions of Rails prior to 2.0, the rails config was only available to
40
- # the init.rb, so it had to be passed on from there. This is a best effort to
41
- # find a config and use that.
42
- def init_config(options={})
35
+ def init_config(options = {})
43
36
  @config = options[:config]
44
37
 
45
38
  if rails_config && ::Rails.configuration.respond_to?(:after_initialize)
46
39
  rails_config.after_initialize do
47
- # This will insure we load all the instrumentation as late as possible.
48
40
  LibraryDetection.detect!
49
41
  end
50
42
  end
51
43
 
52
- if !Agent.config[:agent_enabled]
53
- # Might not be running if it does not think mongrel, thin, passenger, etc
54
- # is running, if it thinks it's a rake task, or if the agent_enabled is false.
55
- ::OneApm::Agent.logger.info("OneApm Agent not running.")
44
+ if !Manager.config[:agent_enabled]
45
+ OneApm::Manager.logger.info("OneApm Agent not running.")
56
46
  else
57
47
  install_browser_monitoring(rails_config)
58
48
  install_agent_hooks(rails_config)
@@ -67,22 +57,22 @@ module OneApm
67
57
  require 'one_apm/rack/middleware_hooks'
68
58
  return unless OneApm::Rack::MiddlewareHooks.needed?
69
59
  config.middleware.use OneApm::Rack::MiddlewareHooks
70
- ::OneApm::Agent.logger.debug("Installed OneApm Agent Hooks middleware")
60
+ OneApm::Manager.logger.debug("Installed OneApm Agent Hooks middleware")
71
61
  rescue => e
72
- ::OneApm::Agent.logger.warn("Error installing OneApm Agent Hooks middleware", e)
62
+ OneApm::Manager.logger.warn("Error installing OneApm Agent Hooks middleware", e)
73
63
  end
74
64
  end
75
65
 
76
66
  def install_browser_monitoring(config)
77
67
  return if @browser_monitoring_installed
78
68
  @browser_monitoring_installed = true
79
- return if config.nil? || !config.respond_to?(:middleware) || !Agent.config[:'browser_monitoring.auto_instrument']
69
+ return if config.nil? || !config.respond_to?(:middleware) || !Manager.config[:'browser_monitoring.auto_instrument']
80
70
  begin
81
71
  require 'one_apm/rack/browser_monitoring'
82
72
  config.middleware.use OneApm::Rack::BrowserMonitoring
83
- ::OneApm::Agent.logger.debug("Installed OneApm Browser Monitoring middleware")
73
+ OneApm::Manager.logger.debug("Installed OneApm Browser Monitoring middleware")
84
74
  rescue => e
85
- ::OneApm::Agent.logger.warn("Error installing OneApm Browser Monitoring middleware", e)
75
+ OneApm::Manager.logger.warn("Error installing OneApm Browser Monitoring middleware", e)
86
76
  end
87
77
  end
88
78