newrelic_rpm 9.0.0 → 9.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (247) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +7 -81
  4. data/.rubocop_todo.yml +4 -43
  5. data/.simplecov +2 -1
  6. data/Brewfile +1 -0
  7. data/CHANGELOG.md +101 -2
  8. data/Gemfile +1 -1
  9. data/Guardfile +8 -7
  10. data/README.md +1 -2
  11. data/Rakefile +8 -8
  12. data/Thorfile +1 -1
  13. data/bin/newrelic +1 -0
  14. data/bin/newrelic_cmd +1 -0
  15. data/bin/nrdebug +20 -20
  16. data/init.rb +1 -1
  17. data/lib/new_relic/agent/agent.rb +3 -16
  18. data/lib/new_relic/agent/agent_helpers/connect.rb +4 -9
  19. data/lib/new_relic/agent/agent_helpers/harvest.rb +4 -4
  20. data/lib/new_relic/agent/agent_helpers/shutdown.rb +5 -5
  21. data/lib/new_relic/agent/agent_helpers/special_startup.rb +2 -2
  22. data/lib/new_relic/agent/agent_helpers/start_worker_thread.rb +47 -39
  23. data/lib/new_relic/agent/agent_helpers/startup.rb +13 -13
  24. data/lib/new_relic/agent/agent_helpers/transmit.rb +6 -6
  25. data/lib/new_relic/agent/agent_logger.rb +9 -9
  26. data/lib/new_relic/agent/attribute_filter.rb +2 -2
  27. data/lib/new_relic/agent/attribute_processing.rb +2 -2
  28. data/lib/new_relic/agent/audit_logger.rb +5 -5
  29. data/lib/new_relic/agent/autostart.rb +1 -1
  30. data/lib/new_relic/agent/commands/agent_command.rb +2 -2
  31. data/lib/new_relic/agent/commands/agent_command_router.rb +5 -4
  32. data/lib/new_relic/agent/commands/thread_profiler_session.rb +5 -5
  33. data/lib/new_relic/agent/configuration/default_source.rb +106 -118
  34. data/lib/new_relic/agent/configuration/environment_source.rb +2 -2
  35. data/lib/new_relic/agent/configuration/high_security_source.rb +3 -3
  36. data/lib/new_relic/agent/configuration/manager.rb +15 -2
  37. data/lib/new_relic/agent/configuration/security_policy_source.rb +10 -10
  38. data/lib/new_relic/agent/configuration/server_source.rb +24 -24
  39. data/lib/new_relic/agent/configuration/yaml_source.rb +4 -4
  40. data/lib/new_relic/agent/connect/request_builder.rb +1 -1
  41. data/lib/new_relic/agent/connect/response_handler.rb +1 -1
  42. data/lib/new_relic/agent/custom_event_aggregator.rb +4 -4
  43. data/lib/new_relic/agent/database/explain_plan_helpers.rb +1 -1
  44. data/lib/new_relic/agent/database/obfuscation_helpers.rb +2 -2
  45. data/lib/new_relic/agent/database/obfuscator.rb +2 -2
  46. data/lib/new_relic/agent/database.rb +4 -4
  47. data/lib/new_relic/agent/datastores/metric_helper.rb +5 -5
  48. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +11 -11
  49. data/lib/new_relic/agent/datastores/redis.rb +6 -6
  50. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +7 -8
  51. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +10 -10
  52. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +7 -7
  53. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +1 -1
  54. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +6 -6
  55. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +7 -7
  56. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +4 -4
  57. data/lib/new_relic/agent/distributed_tracing.rb +5 -5
  58. data/lib/new_relic/agent/error_collector.rb +35 -7
  59. data/lib/new_relic/agent/error_filter.rb +2 -2
  60. data/lib/new_relic/agent/error_trace_aggregator.rb +5 -4
  61. data/lib/new_relic/agent/event_loop.rb +3 -3
  62. data/lib/new_relic/agent/external.rb +1 -1
  63. data/lib/new_relic/agent/harvester.rb +1 -3
  64. data/lib/new_relic/agent/heap.rb +2 -1
  65. data/lib/new_relic/agent/hostname.rb +1 -1
  66. data/lib/new_relic/agent/http_clients/abstract.rb +9 -21
  67. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +7 -3
  68. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +7 -5
  69. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +4 -0
  70. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +6 -2
  71. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +5 -1
  72. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +8 -5
  73. data/lib/new_relic/agent/http_clients/uri_util.rb +2 -2
  74. data/lib/new_relic/agent/instrumentation/action_controller_other_subscriber.rb +5 -2
  75. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +3 -2
  76. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +3 -3
  77. data/lib/new_relic/agent/instrumentation/active_job.rb +1 -1
  78. data/lib/new_relic/agent/instrumentation/active_merchant.rb +3 -3
  79. data/lib/new_relic/agent/instrumentation/active_record.rb +3 -2
  80. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +38 -35
  81. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +3 -3
  82. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +2 -2
  83. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +3 -2
  84. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +1 -1
  85. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +3 -3
  86. data/lib/new_relic/agent/instrumentation/bunny.rb +1 -1
  87. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +5 -3
  88. data/lib/new_relic/agent/instrumentation/curb/chain.rb +1 -1
  89. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +5 -5
  90. data/lib/new_relic/agent/instrumentation/curb.rb +1 -1
  91. data/lib/new_relic/agent/instrumentation/custom_events_subscriber.rb +2 -1
  92. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +1 -0
  93. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +1 -1
  94. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +2 -1
  95. data/lib/new_relic/agent/instrumentation/elasticsearch/chain.rb +2 -2
  96. data/lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb +4 -3
  97. data/lib/new_relic/agent/instrumentation/elasticsearch.rb +2 -2
  98. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +2 -1
  99. data/lib/new_relic/agent/instrumentation/excon.rb +3 -3
  100. data/lib/new_relic/agent/instrumentation/fiber/chain.rb +1 -1
  101. data/lib/new_relic/agent/instrumentation/fiber.rb +1 -1
  102. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +4 -4
  103. data/lib/new_relic/agent/instrumentation/grape.rb +3 -3
  104. data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +1 -1
  105. data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +3 -2
  106. data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +1 -1
  107. data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +1 -1
  108. data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +4 -4
  109. data/lib/new_relic/agent/instrumentation/grpc_client.rb +1 -1
  110. data/lib/new_relic/agent/instrumentation/grpc_server.rb +1 -1
  111. data/lib/new_relic/agent/instrumentation/httprb.rb +1 -1
  112. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +1 -1
  113. data/lib/new_relic/agent/instrumentation/logger.rb +1 -1
  114. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +3 -1
  115. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +2 -2
  116. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +3 -1
  117. data/lib/new_relic/agent/instrumentation/memcache.rb +8 -8
  118. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +3 -3
  119. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +1 -1
  120. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +6 -6
  121. data/lib/new_relic/agent/instrumentation/net_http.rb +1 -1
  122. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +1 -1
  123. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +3 -3
  124. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +2 -2
  125. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +1 -1
  126. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +3 -2
  127. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +1 -1
  128. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +7 -7
  129. data/lib/new_relic/agent/instrumentation/rake.rb +2 -2
  130. data/lib/new_relic/agent/instrumentation/redis/constants.rb +1 -1
  131. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +2 -1
  132. data/lib/new_relic/agent/instrumentation/resque/helper.rb +1 -1
  133. data/lib/new_relic/agent/instrumentation/sequel.rb +4 -4
  134. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +10 -10
  135. data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delayed_class.rb +1 -1
  136. data/lib/new_relic/agent/instrumentation/sidekiq/server.rb +1 -1
  137. data/lib/new_relic/agent/instrumentation/sidekiq.rb +1 -0
  138. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +1 -1
  139. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +6 -5
  140. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +1 -1
  141. data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +2 -1
  142. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +5 -5
  143. data/lib/new_relic/agent/javascript_instrumentor.rb +29 -24
  144. data/lib/new_relic/agent/linking_metadata.rb +2 -2
  145. data/lib/new_relic/agent/log_event_aggregator.rb +15 -15
  146. data/lib/new_relic/agent/logging.rb +73 -33
  147. data/lib/new_relic/agent/messaging.rb +7 -5
  148. data/lib/new_relic/agent/method_tracer.rb +7 -7
  149. data/lib/new_relic/agent/method_tracer_helpers.rb +1 -1
  150. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +4 -4
  151. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +1 -1
  152. data/lib/new_relic/agent/new_relic_service/encoders.rb +1 -1
  153. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +2 -2
  154. data/lib/new_relic/agent/new_relic_service.rb +14 -15
  155. data/lib/new_relic/agent/obfuscator.rb +1 -1
  156. data/lib/new_relic/agent/parameter_filtering.rb +6 -6
  157. data/lib/new_relic/agent/pipe_channel_manager.rb +7 -6
  158. data/lib/new_relic/agent/pipe_service.rb +5 -3
  159. data/lib/new_relic/agent/priority_sampled_buffer.rb +1 -1
  160. data/lib/new_relic/agent/sampler.rb +2 -1
  161. data/lib/new_relic/agent/sampler_collection.rb +1 -1
  162. data/lib/new_relic/agent/samplers/cpu_sampler.rb +5 -5
  163. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +9 -9
  164. data/lib/new_relic/agent/samplers/memory_sampler.rb +9 -9
  165. data/lib/new_relic/agent/samplers/object_sampler.rb +1 -1
  166. data/lib/new_relic/agent/span_event_aggregator.rb +4 -4
  167. data/lib/new_relic/agent/span_event_primitive.rb +2 -2
  168. data/lib/new_relic/agent/sql_sampler.rb +2 -2
  169. data/lib/new_relic/agent/stats.rb +1 -1
  170. data/lib/new_relic/agent/synthetics_event_aggregator.rb +1 -1
  171. data/lib/new_relic/agent/system_info.rb +10 -10
  172. data/lib/new_relic/agent/threading/agent_thread.rb +1 -1
  173. data/lib/new_relic/agent/threading/backtrace_node.rb +3 -3
  174. data/lib/new_relic/agent/threading/backtrace_service.rb +3 -7
  175. data/lib/new_relic/agent/threading/thread_profile.rb +5 -5
  176. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +1 -1
  177. data/lib/new_relic/agent/tracer.rb +9 -8
  178. data/lib/new_relic/agent/transaction/abstract_segment.rb +52 -46
  179. data/lib/new_relic/agent/transaction/datastore_segment.rb +1 -1
  180. data/lib/new_relic/agent/transaction/distributed_tracer.rb +7 -6
  181. data/lib/new_relic/agent/transaction/distributed_tracing.rb +13 -14
  182. data/lib/new_relic/agent/transaction/external_request_segment.rb +11 -11
  183. data/lib/new_relic/agent/transaction/message_broker_segment.rb +1 -1
  184. data/lib/new_relic/agent/transaction/request_attributes.rb +2 -2
  185. data/lib/new_relic/agent/transaction/segment.rb +1 -1
  186. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +1 -1
  187. data/lib/new_relic/agent/transaction/trace.rb +1 -1
  188. data/lib/new_relic/agent/transaction/trace_context.rb +4 -4
  189. data/lib/new_relic/agent/transaction/trace_node.rb +8 -7
  190. data/lib/new_relic/agent/transaction/tracing.rb +8 -2
  191. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +1 -1
  192. data/lib/new_relic/agent/transaction.rb +43 -36
  193. data/lib/new_relic/agent/transaction_error_primitive.rb +5 -5
  194. data/lib/new_relic/agent/transaction_event_aggregator.rb +4 -4
  195. data/lib/new_relic/agent/transaction_event_primitive.rb +3 -3
  196. data/lib/new_relic/agent/transaction_sampler.rb +3 -3
  197. data/lib/new_relic/agent/transaction_time_aggregator.rb +7 -3
  198. data/lib/new_relic/agent/utilization/aws.rb +1 -1
  199. data/lib/new_relic/agent/utilization/azure.rb +3 -3
  200. data/lib/new_relic/agent/utilization/gcp.rb +3 -3
  201. data/lib/new_relic/agent/utilization/pcf.rb +1 -1
  202. data/lib/new_relic/agent/utilization/vendor.rb +1 -1
  203. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +1 -1
  204. data/lib/new_relic/agent/vm/mri_vm.rb +9 -8
  205. data/lib/new_relic/agent/worker_loop.rb +1 -1
  206. data/lib/new_relic/agent.rb +78 -16
  207. data/lib/new_relic/cli/command.rb +3 -3
  208. data/lib/new_relic/cli/commands/deployments.rb +26 -25
  209. data/lib/new_relic/cli/commands/install.rb +14 -14
  210. data/lib/new_relic/collection_helper.rb +2 -2
  211. data/lib/new_relic/constants.rb +7 -8
  212. data/lib/new_relic/control/class_methods.rb +3 -3
  213. data/lib/new_relic/control/frameworks/rails.rb +30 -18
  214. data/lib/new_relic/control/instance_methods.rb +5 -5
  215. data/lib/new_relic/control/instrumentation.rb +1 -15
  216. data/lib/new_relic/control/private_instance_methods.rb +1 -1
  217. data/lib/new_relic/dependency_detection.rb +14 -18
  218. data/lib/new_relic/environment_report.rb +4 -4
  219. data/lib/new_relic/helper.rb +2 -1
  220. data/lib/new_relic/language_support.rb +1 -1
  221. data/lib/new_relic/latest_changes.rb +5 -5
  222. data/lib/new_relic/noticed_error.rb +20 -18
  223. data/lib/new_relic/rack/browser_monitoring.rb +20 -16
  224. data/lib/new_relic/recipes/capistrano3.rb +1 -1
  225. data/lib/new_relic/recipes/capistrano_legacy.rb +6 -6
  226. data/lib/new_relic/recipes/helpers/send_deployment.rb +5 -5
  227. data/lib/new_relic/supportability_helper.rb +2 -0
  228. data/lib/new_relic/version.rb +2 -2
  229. data/lib/newrelic_rpm.rb +3 -3
  230. data/lib/sequel/extensions/new_relic_instrumentation.rb +3 -3
  231. data/lib/sequel/plugins/new_relic_instrumentation.rb +1 -1
  232. data/lib/tasks/config.rake +12 -12
  233. data/lib/tasks/coverage_report.rake +4 -4
  234. data/lib/tasks/helpers/format.rb +9 -9
  235. data/lib/tasks/helpers/removers.rb +5 -5
  236. data/lib/tasks/install.rake +4 -4
  237. data/lib/tasks/instrumentation_generator/instrumentation.thor +8 -8
  238. data/lib/tasks/instrumentation_generator/templates/chain.tt +1 -1
  239. data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +1 -1
  240. data/lib/tasks/multiverse.rb +13 -6
  241. data/lib/tasks/newrelic.rb +1 -0
  242. data/lib/tasks/tests.rake +6 -6
  243. data/newrelic.yml +5 -5
  244. data/newrelic_rpm.gemspec +13 -13
  245. data/test/agent_helper.rb +25 -24
  246. metadata +73 -4
  247. data/lib/new_relic/agent/range_extensions.rb +0 -27
@@ -26,11 +26,11 @@ module NewRelic
26
26
  ATTACHMENT = 'attachment'.freeze
27
27
  TEXT_HTML = 'text/html'.freeze
28
28
 
29
- BODY_START = "<body".freeze
30
- HEAD_START = "<head".freeze
31
- GT = ">".freeze
29
+ BODY_START = '<body'.freeze
30
+ HEAD_START = '<head'.freeze
31
+ GT = '>'.freeze
32
32
 
33
- ALREADY_INSTRUMENTED_KEY = "newrelic.browser_monitoring_already_instrumented"
33
+ ALREADY_INSTRUMENTED_KEY = 'newrelic.browser_monitoring_already_instrumented'
34
34
  CHARSET_RE = /<\s*meta[^>]+charset\s*=[^>]*>/im.freeze
35
35
  X_UA_COMPATIBLE_RE = /<\s*meta[^>]+http-equiv\s*=\s*['"]x-ua-compatible['"][^>]*>/im.freeze
36
36
 
@@ -40,7 +40,7 @@ module NewRelic
40
40
 
41
41
  js_to_inject = NewRelic::Agent.browser_timing_header
42
42
  if (js_to_inject != NewRelic::EMPTY_STR) && should_instrument?(env, status, headers)
43
- response_string = autoinstrument_source(response, headers, js_to_inject)
43
+ response_string = autoinstrument_source(response, js_to_inject)
44
44
  if headers.key?(CONTENT_LENGTH)
45
45
  content_length = response_string ? response_string.bytesize : 0
46
46
  headers[CONTENT_LENGTH] = content_length.to_s
@@ -69,11 +69,17 @@ module NewRelic
69
69
 
70
70
  private
71
71
 
72
- def autoinstrument_source(response, headers, js_to_inject)
72
+ def autoinstrument_source(response, js_to_inject)
73
73
  source = gather_source(response)
74
74
  close_old_response(response)
75
- return nil unless source
75
+ return unless source
76
76
 
77
+ modify_source(source, js_to_inject)
78
+ rescue => e
79
+ NewRelic::Agent.logger.debug("Skipping RUM instrumentation on exception: #{e.class} - #{e.message}")
80
+ end
81
+
82
+ def modify_source(source, js_to_inject)
77
83
  # Only scan the first 50k (roughly) then give up.
78
84
  beginning_of_source = source[0..SCAN_LIMIT]
79
85
  meta_tag_positions = find_meta_tag_positions(beginning_of_source)
@@ -81,26 +87,24 @@ module NewRelic
81
87
  if insertion_index = find_insertion_index(meta_tag_positions, beginning_of_source, body_start)
82
88
  source = source_injection(source, insertion_index, js_to_inject)
83
89
  else
84
- NewRelic::Agent.logger.debug("Skipping RUM instrumentation. Could not properly determine location to inject script.")
90
+ NewRelic::Agent.logger.debug('Skipping RUM instrumentation. Could not properly determine location to ' \
91
+ 'inject script.')
85
92
  end
86
93
  else
87
94
  msg = "Skipping RUM instrumentation. Unable to find <body> tag in first #{SCAN_LIMIT} bytes of document."
88
95
  NewRelic::Agent.logger.log_once(:warn, :rum_insertion_failure, msg)
89
96
  NewRelic::Agent.logger.debug(msg)
90
97
  end
91
-
92
98
  source
93
- rescue => e
94
- NewRelic::Agent.logger.debug("Skipping RUM instrumentation on exception.", e)
95
- nil
96
99
  end
97
100
 
98
101
  def html?(headers)
99
- headers[CONTENT_TYPE] && headers[CONTENT_TYPE].include?(TEXT_HTML)
102
+ # needs else branch coverage
103
+ headers[CONTENT_TYPE] && headers[CONTENT_TYPE].include?(TEXT_HTML) # rubocop:disable Style/SafeNavigation
100
104
  end
101
105
 
102
106
  def attachment?(headers)
103
- headers[CONTENT_DISPOSITION] && headers[CONTENT_DISPOSITION].include?(ATTACHMENT)
107
+ headers[CONTENT_DISPOSITION]&.include?(ATTACHMENT)
104
108
  end
105
109
 
106
110
  def streaming?(env, headers)
@@ -150,12 +154,12 @@ module NewRelic
150
154
 
151
155
  def find_x_ua_compatible_position(beginning_of_source)
152
156
  match = X_UA_COMPATIBLE_RE.match(beginning_of_source)
153
- match.end(0) if match
157
+ match&.end(0)
154
158
  end
155
159
 
156
160
  def find_charset_position(beginning_of_source)
157
161
  match = CHARSET_RE.match(beginning_of_source)
158
- match.end(0) if match
162
+ match&.end(0)
159
163
  end
160
164
 
161
165
  def find_end_of_head_open(beginning_of_source)
@@ -8,7 +8,7 @@ require_relative 'helpers/send_deployment'
8
8
  namespace :newrelic do
9
9
  include SendDeployment
10
10
  # notifies New Relic of a deployment
11
- desc "Record a deployment in New Relic (newrelic.com)"
11
+ desc 'Record a deployment in New Relic (newrelic.com)'
12
12
  task :notice_deployment do
13
13
  if fetch(:newrelic_role)
14
14
  on roles(fetch(:newrelic_role)) do
@@ -5,9 +5,9 @@
5
5
  make_notify_task = proc do
6
6
  namespace(:newrelic) do
7
7
  # on all deployments, notify New Relic
8
- desc("Record a deployment in New Relic (newrelic.com)")
8
+ desc('Record a deployment in New Relic (newrelic.com)')
9
9
  task(:notice_deployment, :roles => :app, :except => {:no_release => true}) do
10
- rails_env = fetch(:newrelic_rails_env, fetch(:rails_env, "production"))
10
+ rails_env = fetch(:newrelic_rails_env, fetch(:rails_env, 'production'))
11
11
 
12
12
  require 'new_relic/cli/command'
13
13
 
@@ -36,14 +36,14 @@ make_notify_task = proc do
36
36
  :license_key => license_key
37
37
  }
38
38
 
39
- logger.debug("Uploading deployment to New Relic")
39
+ logger.debug('Uploading deployment to New Relic')
40
40
  deployment = NewRelic::Cli::Deployments.new(deploy_options)
41
41
  deployment.run
42
- logger.info("Uploaded deployment information to New Relic")
42
+ logger.info('Uploaded deployment information to New Relic')
43
43
  rescue NewRelic::Cli::Command::CommandFailure => e
44
44
  logger.info(e.message)
45
45
  rescue Capistrano::CommandError
46
- logger.info("Unable to notify New Relic of the deployment... skipping")
46
+ logger.info('Unable to notify New Relic of the deployment... skipping')
47
47
  rescue => e
48
48
  logger.info("Error creating New Relic deployment (#{e})\n#{e.backtrace.join("\n")}")
49
49
  end
@@ -51,7 +51,7 @@ make_notify_task = proc do
51
51
 
52
52
  def lookup_changelog(changelog)
53
53
  if !changelog
54
- logger.debug("Getting log of changes for New Relic Deployment details")
54
+ logger.debug('Getting log of changes for New Relic Deployment details')
55
55
  from_revision = source.next_revision(current_revision)
56
56
 
57
57
  if scm == :git
@@ -5,9 +5,9 @@
5
5
  module SendDeployment
6
6
  def send_deployment_notification_to_newrelic
7
7
  require 'new_relic/cli/command'
8
- debug("Uploading deployment to New Relic")
8
+ debug('Uploading deployment to New Relic')
9
9
  NewRelic::Cli::Deployments.new(deploy_options).run
10
- info("Uploaded deployment information to New Relic")
10
+ info('Uploaded deployment information to New Relic')
11
11
  rescue NewRelic::Cli::Command::CommandFailure => e
12
12
  info(e.message)
13
13
  rescue => e
@@ -34,7 +34,7 @@ module SendDeployment
34
34
  end
35
35
 
36
36
  def fetch_environment
37
- fetch(:newrelic_rails_env, fetch(:rack_env, fetch(:rails_env, fetch(:stage, "production"))))
37
+ fetch(:newrelic_rails_env, fetch(:rack_env, fetch(:rails_env, fetch(:stage, 'production'))))
38
38
  end
39
39
 
40
40
  def fetch_rev
@@ -59,9 +59,9 @@ module SendDeployment
59
59
  current_revision = fetch(:current_revision)
60
60
  return unless current_revision && previous_revision
61
61
 
62
- debug("Retrieving changelog for New Relic Deployment details")
62
+ debug('Retrieving changelog for New Relic Deployment details')
63
63
 
64
- if Rake::Task.task_defined?("git:check")
64
+ if Rake::Task.task_defined?('git:check')
65
65
  log_command = "git --no-pager log --no-color --pretty=format:' * %an: %s' " +
66
66
  "--abbrev-commit --no-merges #{previous_revision}..#{current_revision}"
67
67
  `#{log_command}`
@@ -44,8 +44,10 @@ module NewRelic
44
44
  :record_metric,
45
45
  :recording_web_transaction?,
46
46
  :require_test_helper,
47
+ :set_error_group_callback,
47
48
  :set_sql_obfuscator,
48
49
  :set_transaction_name,
50
+ :set_user_id,
49
51
  :shutdown,
50
52
  :start_segment,
51
53
  :trace,
@@ -6,8 +6,8 @@
6
6
  module NewRelic
7
7
  module VERSION # :nodoc:
8
8
  MAJOR = 9
9
- MINOR = 0
10
- TINY = 0
9
+ MINOR = 2
10
+ TINY = 2
11
11
 
12
12
  STRING = "#{MAJOR}.#{MINOR}.#{TINY}"
13
13
  end
data/lib/newrelic_rpm.rb CHANGED
@@ -21,16 +21,16 @@ if defined?(Rails::VERSION)
21
21
  module NewRelic
22
22
  class Railtie < Rails::Railtie
23
23
  if ENV['NEW_RELIC_DEFER_RAILS_INITIALIZATION']
24
- initializer "newrelic_rpm.include_method_tracers", before: :load_config_initializers do |app|
24
+ initializer 'newrelic_rpm.include_method_tracers', before: :load_config_initializers do |app|
25
25
  Module.send(:include, NewRelic::Agent::MethodTracer::ClassMethods)
26
26
  Module.send(:include, NewRelic::Agent::MethodTracer)
27
27
  end
28
28
 
29
- initializer "newrelic_rpm.start_plugin", after: :load_config_initializers do |app|
29
+ initializer 'newrelic_rpm.start_plugin', after: :load_config_initializers do |app|
30
30
  NewRelic::Control.instance.init_plugin(config: app.config)
31
31
  end
32
32
  else
33
- initializer "newrelic_rpm.start_plugin", before: :load_config_initializers do |app|
33
+ initializer 'newrelic_rpm.start_plugin', before: :load_config_initializers do |app|
34
34
  NewRelic::Control.instance.init_plugin(config: app.config)
35
35
  end
36
36
  end
@@ -32,7 +32,7 @@ module Sequel
32
32
  module NewRelicInstrumentation
33
33
  module Naming
34
34
  def self.query_method_name
35
- if Sequel::VERSION >= "4.35.0"
35
+ if Sequel::VERSION >= '4.35.0'
36
36
  :log_connection_yield
37
37
  else
38
38
  :log_yield
@@ -86,13 +86,13 @@ module Sequel
86
86
  if THREAD_SAFE_CONNECTION_POOL_CLASSES.include?(self.pool.class)
87
87
  self[sql].explain
88
88
  else
89
- NewRelic::Agent.logger.log_once(:info, :sequel_explain_skipped, "Not running SQL explains because Sequel is not in recognized multi-threaded mode")
89
+ NewRelic::Agent.logger.log_once(:info, :sequel_explain_skipped, 'Not running SQL explains because Sequel is not in recognized multi-threaded mode')
90
90
  nil
91
91
  end
92
92
  end
93
93
  end
94
94
  end # module NewRelicInstrumentation
95
95
 
96
- NewRelic::Agent.logger.debug("Registering the :new_relic_instrumentation extension.")
96
+ NewRelic::Agent.logger.debug('Registering the :new_relic_instrumentation extension.')
97
97
  Database.register_extension(:new_relic_instrumentation, NewRelicInstrumentation)
98
98
  end # module Sequel
@@ -54,7 +54,7 @@ module Sequel
54
54
  module ClassMethods
55
55
  extend Sequel::Plugins::NewRelicInstrumentation::MethodWrapping
56
56
 
57
- wrap_sequel_method :[], "get"
57
+ wrap_sequel_method :[], 'get'
58
58
  wrap_sequel_method :all
59
59
  wrap_sequel_method :first
60
60
  wrap_sequel_method :create
@@ -7,9 +7,9 @@ include Format
7
7
 
8
8
  namespace :newrelic do
9
9
  namespace :config do
10
- GENERAL = "general"
11
- DISABLING = "disabling"
12
- ATTRIBUTES = "attributes"
10
+ GENERAL = 'general'
11
+ DISABLING = 'disabling'
12
+ ATTRIBUTES = 'attributes'
13
13
 
14
14
  # these configuration options are not able to be set using environment variables
15
15
  NON_ENV_CONFIGS = ['error_collector.ignore_classes', 'error_collector.ignore_messages', 'error_collector.expected_classes', 'error_collector.expected_messages']
@@ -18,21 +18,21 @@ namespace :newrelic do
18
18
  GENERAL => 'These settings are available for agent configuration. Some settings depend on your New Relic subscription level.',
19
19
  DISABLING => 'Use these settings to toggle instrumentation types during agent startup.',
20
20
  ATTRIBUTES => '[Attributes](/docs/features/agent-attributes) are key-value pairs containing information that determines the properties of an event or transaction. These key-value pairs can be viewed within transaction traces in APM, traced errors in APM, transaction events in dashboards, and page views in dashboards. You can customize exactly which attributes will be sent to each of these destinations',
21
- "transaction_tracer" => 'The [transaction traces](/docs/apm/traces/transaction-traces/transaction-traces) feature collects detailed information from a selection of transactions, including a summary of the calling sequence, a breakdown of time spent, and a list of SQL queries and their query plans (on mysql and postgresql). Available features depend on your New Relic subscription level.',
22
- "error_collector" => "The agent collects and reports all uncaught exceptions by default. These configuration options allow you to customize the error collection.\n\nFor information on ignored and expected errors, [see this page on Error Analytics in APM](/docs/agents/manage-apm-agents/agent-data/manage-errors-apm-collect-ignore-or-mark-expected/). To set expected errors via the `NewRelic::Agent.notice_error` Ruby method, [consult the Ruby Agent API](/docs/agents/ruby-agent/api-guides/sending-handled-errors-new-relic/).",
23
- "browser_monitoring" => "The browser monitoring [page load timing](/docs/browser/new-relic-browser/page-load-timing/page-load-timing-process) feature (sometimes referred to as real user monitoring or RUM) gives you insight into the performance real users are experiencing with your website. This is accomplished by measuring the time it takes for your users' browsers to download and render your web pages by injecting a small amount of JavaScript code into the header and footer of each page.",
24
- "analytics_events" => '[New Relic dashboards](/docs/query-your-data/explore-query-data/dashboards/introduction-new-relic-one-dashboards) is a resource to gather and visualize data about your software and what it says about your business. With it you can quickly and easily create real-time dashboards to get immediate answers about end-user experiences, clickstreams, mobile activities, and server transactions.'
21
+ 'transaction_tracer' => 'The [transaction traces](/docs/apm/traces/transaction-traces/transaction-traces) feature collects detailed information from a selection of transactions, including a summary of the calling sequence, a breakdown of time spent, and a list of SQL queries and their query plans (on mysql and postgresql). Available features depend on your New Relic subscription level.',
22
+ 'error_collector' => "The agent collects and reports all uncaught exceptions by default. These configuration options allow you to customize the error collection.\n\nFor information on ignored and expected errors, [see this page on Error Analytics in APM](/docs/agents/manage-apm-agents/agent-data/manage-errors-apm-collect-ignore-or-mark-expected/). To set expected errors via the `NewRelic::Agent.notice_error` Ruby method, [consult the Ruby Agent API](/docs/agents/ruby-agent/api-guides/sending-handled-errors-new-relic/).",
23
+ 'browser_monitoring' => "The browser monitoring [page load timing](/docs/browser/new-relic-browser/page-load-timing/page-load-timing-process) feature (sometimes referred to as real user monitoring or RUM) gives you insight into the performance real users are experiencing with your website. This is accomplished by measuring the time it takes for your users' browsers to download and render your web pages by injecting a small amount of JavaScript code into the header and footer of each page.",
24
+ 'analytics_events' => '[New Relic dashboards](/docs/query-your-data/explore-query-data/dashboards/introduction-new-relic-one-dashboards) is a resource to gather and visualize data about your software and what it says about your business. With it you can quickly and easily create real-time dashboards to get immediate answers about end-user experiences, clickstreams, mobile activities, and server transactions.'
25
25
  }
26
26
 
27
27
  NAME_OVERRIDES = {
28
- "slow_sql" => "Slow SQL",
29
- "custom_insights_events" => "Custom Events"
28
+ 'slow_sql' => 'Slow SQL',
29
+ 'custom_insights_events' => 'Custom Events'
30
30
  }
31
31
 
32
- desc "Describe available New Relic configuration settings"
32
+ desc 'Describe available New Relic configuration settings'
33
33
  task :docs, [:format] => [] do |t, args|
34
- require File.expand_path(File.join(File.dirname(__FILE__), "..", "new_relic", "agent", "configuration", "default_source.rb"))
35
- format = args[:format] || "text"
34
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'new_relic', 'agent', 'configuration', 'default_source.rb'))
35
+ format = args[:format] || 'text'
36
36
  output(format)
37
37
  end
38
38
  end
@@ -1,10 +1,10 @@
1
- # frozen_string_literal: true
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
3
+ # frozen_string_literal: true
4
4
 
5
5
  if ENV['CI']
6
6
  namespace :coverage do
7
- desc "Collates all result sets generated by the different test runners"
7
+ desc 'Collates all result sets generated by the different test runners'
8
8
  task :report do
9
9
  require 'simplecov'
10
10
  require 'fileutils'
@@ -19,10 +19,10 @@ if ENV['CI']
19
19
  Dir['lib/coverage_{[!r][!e][!s][!u][!l][!t][!s]}*'].each { |dir| FileUtils.rm_rf(dir) }
20
20
  end
21
21
 
22
- desc "Removes all coverage_* directories"
22
+ desc 'Removes all coverage_* directories'
23
23
  task :clear do
24
24
  require 'fileutils'
25
- Dir["lib/coverage_*"].each { |dir| FileUtils.rm_rf(dir) }
25
+ Dir['lib/coverage_*'].each { |dir| FileUtils.rm_rf(dir) }
26
26
  end
27
27
  end
28
28
  end
@@ -66,24 +66,24 @@ module Format
66
66
 
67
67
  def format_description(value)
68
68
  description = ''
69
- description += "<b>DEPRECATED</b> " if value[:deprecated]
69
+ description += '<b>DEPRECATED</b> ' if value[:deprecated]
70
70
  description += value[:description]
71
71
  description
72
72
  end
73
73
 
74
74
  def format_env_var(key)
75
- return "None" if NON_ENV_CONFIGS.include?(key)
75
+ return 'None' if NON_ENV_CONFIGS.include?(key)
76
76
 
77
- "NEW_RELIC_#{key.tr(".", "_").upcase}"
77
+ "NEW_RELIC_#{key.tr('.', '_').upcase}"
78
78
  end
79
79
 
80
80
  def format_name(key)
81
81
  name = NAME_OVERRIDES[key]
82
82
  return name if name
83
83
 
84
- key.split("_")
84
+ key.split('_')
85
85
  .each { |fragment| fragment[0] = fragment[0].upcase }
86
- .join(" ")
86
+ .join(' ')
87
87
  end
88
88
 
89
89
  def format_sections(key, value)
@@ -98,7 +98,7 @@ module Format
98
98
 
99
99
  def format_type(type)
100
100
  if type == NewRelic::Agent::Configuration::Boolean
101
- "Boolean"
101
+ 'Boolean'
102
102
  else
103
103
  type
104
104
  end
@@ -110,11 +110,11 @@ module Format
110
110
  end
111
111
 
112
112
  def section_key(key, components)
113
- if key =~ /^disable_/ # "disable_httpclient"
113
+ if /^disable_/.match?(key) # "disable_httpclient"
114
114
  DISABLING
115
- elsif components.length >= 2 && !(components[1] == "attributes") # "analytics_events.enabled"
115
+ elsif components.length >= 2 && !(components[1] == 'attributes') # "analytics_events.enabled"
116
116
  components.first
117
- elsif components[1] == "attributes" # "transaction_tracer.attributes.enabled"
117
+ elsif components[1] == 'attributes' # "transaction_tracer.attributes.enabled"
118
118
  ATTRIBUTES
119
119
  else
120
120
  GENERAL
@@ -11,21 +11,21 @@ module Removers
11
11
  `echo "drop database #{database}" | mysql -u root`
12
12
  end
13
13
  rescue => error
14
- puts "ERROR: Cannot get MySQL databases..."
14
+ puts 'ERROR: Cannot get MySQL databases...'
15
15
  puts error.message
16
16
  end
17
17
 
18
18
  def remove_generated_gemfiles
19
- file_path = File.expand_path("test/multiverse/suites")
20
- Dir.glob(File.join(file_path, "**", "Gemfile*")).each do |fn|
19
+ file_path = File.expand_path('test/multiverse/suites')
20
+ Dir.glob(File.join(file_path, '**', 'Gemfile*')).each do |fn|
21
21
  puts "Removing #{fn.gsub(file_path, '.../suites')}"
22
22
  FileUtils.rm(fn)
23
23
  end
24
24
  end
25
25
 
26
26
  def remove_generated_gemfile_lockfiles
27
- file_path = File.expand_path("test/environments")
28
- Dir.glob(File.join(file_path, "**", "Gemfile.lock")).each do |fn|
27
+ file_path = File.expand_path('test/environments')
28
+ Dir.glob(File.join(file_path, '**', 'Gemfile.lock')).each do |fn|
29
29
  puts "Removing #{fn.gsub(file_path, '.../environments')}"
30
30
  FileUtils.rm(fn)
31
31
  end
@@ -3,13 +3,13 @@
3
3
  # frozen_string_literal: true
4
4
 
5
5
  namespace :newrelic do
6
- desc "Install a default config/newrelic.yml file"
6
+ desc 'Install a default config/newrelic.yml file'
7
7
  task :install do
8
- load File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "install.rb"))
8
+ load File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'install.rb'))
9
9
  end
10
10
 
11
- desc "Gratefulness is always appreciated"
11
+ desc 'Gratefulness is always appreciated'
12
12
  task :thanks do
13
- puts "The Ruby agent team is grateful to Jim Weirich for his kindness and his code. He will be missed."
13
+ puts 'The Ruby agent team is grateful to Jim Weirich for his kindness and his code. He will be missed.'
14
14
  end
15
15
  end
@@ -97,14 +97,14 @@ class Instrumentation < Thor
97
97
 
98
98
  def config_block(name)
99
99
  <<~CONFIG
100
- :'instrumentation.#{name.downcase}' => {
101
- :default => 'auto',
102
- :public => true,
103
- :type => String,
104
- :dynamic_name => true,
105
- :allowed_from_server => false,
106
- :description => 'Controls auto-instrumentation of the #{name} library at start up. May be one of [auto|prepend|chain|disabled].'
107
- },
100
+ :'instrumentation.#{name.downcase}' => {
101
+ :default => 'auto',
102
+ :public => true,
103
+ :type => String,
104
+ :dynamic_name => true,
105
+ :allowed_from_server => false,
106
+ :description => 'Controls auto-instrumentation of the #{name} library at start up. May be one of [auto|prepend|chain|disabled].'
107
+ },
108
108
  CONFIG
109
109
  end
110
110
 
@@ -3,7 +3,7 @@
3
3
  # frozen_string_literal: true
4
4
 
5
5
  module NewRelic::Agent::Instrumentation
6
- module <%= @class_name %>
6
+ module <%= @class_name %>::Chain
7
7
  def self.instrument!
8
8
  ::<%= @class_name %>.class_eval do
9
9
  include NewRelic::Agent::Instrumentation::<%= @class_name %>
@@ -23,7 +23,7 @@ DependencyDetection.defer do
23
23
  if use_prepend?
24
24
  prepend_instrument ::<%= @class_name %>, NewRelic::Agent::Instrumentation::<%= @class_name %>::Prepend
25
25
  else
26
- chain_instrument NewRelic::Agent::Instrumentation::<%= @class_name %>
26
+ chain_instrument NewRelic::Agent::Instrumentation::<%= @class_name %>::Chain
27
27
  end
28
28
  end
29
29
  end
@@ -1,6 +1,7 @@
1
1
  # This file is distributed under New Relic's license terms.
2
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
3
3
  # frozen_string_literal: true
4
+
4
5
  #
5
6
  # Rake task for running Ruby agent multiverse tests. This file may be required
6
7
  # from third party gems. It is also used by the agent itself to run multiverse.
@@ -39,12 +40,14 @@ require_relative 'helpers/removers'
39
40
  include Removers
40
41
 
41
42
  namespace :test do
42
- desc "Run functional test suite for New Relic"
43
+ desc 'Run functional test suite for New Relic'
43
44
  task :multiverse, [:suite, :param1, :param2, :param3, :param4] => ['multiverse:env'] do |_, args|
44
45
  Multiverse::Runner.run(args.suite, Multiverse::Runner.parse_args(args))
45
46
  end
46
47
 
47
48
  namespace :multiverse do
49
+ # task :prerequisites
50
+
48
51
  task :env do
49
52
  # ENV['SUITES_DIRECTORY'] = File.expand_path('../../test/multiverse/suites', __FILE__)
50
53
  require File.expand_path('../../../test/multiverse/lib/multiverse', __FILE__)
@@ -56,22 +59,26 @@ namespace :test do
56
59
  remove_generated_gemfile_lockfiles
57
60
  end
58
61
 
59
- desc "Clean cached gemfiles from Bundler.bundle_path"
62
+ desc 'Clean cached gemfiles from Bundler.bundle_path'
60
63
  task :clean_gemfile_cache do
61
64
  glob = File.expand_path('multiverse-cache/Gemfile.*.lock', Bundler.bundle_path)
62
65
  File.delete(*Dir[glob])
63
66
  end
64
67
 
65
- desc "Test the multiverse testing framework by executing tests in test/multiverse/test. Get meta with it."
68
+ desc 'Test the multiverse testing framework by executing tests in test/multiverse/test. Get meta with it.'
66
69
  task :self, [:suite, :mode] do |_, args|
67
- args.with_defaults(:suite => "", :mode => "")
68
- puts ("Testing the multiverse testing framework...")
70
+ args.with_defaults(:suite => '', :mode => '')
71
+ puts ('Testing the multiverse testing framework...')
69
72
  test_files = FileList['test/multiverse/test/*_test.rb']
70
- ruby test_files.join(" ")
73
+ ruby test_files.join(' ')
71
74
  end
72
75
 
73
76
  task :prime, [:suite] => [:env] do |_, args|
74
77
  Multiverse::Runner.prime(args.suite, Multiverse::Runner.parse_args(args))
75
78
  end
79
+
80
+ task :gem_manifest => :env do
81
+ Multiverse::GemManifest.new.report
82
+ end
76
83
  end
77
84
  end
@@ -1,6 +1,7 @@
1
1
  # This file is distributed under New Relic's license terms.
2
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
3
3
  # frozen_string_literal: true
4
+
4
5
  #
5
6
  # If you are looking to instrument rake tasks in a Rails environment, but the
6
7
  # task doesn't depend on :environment, this task may be included to ensure that
data/lib/tasks/tests.rake CHANGED
@@ -13,19 +13,19 @@ end
13
13
  if defined? Rake::TestTask
14
14
  namespace :test do
15
15
  tasks = Rake.application.top_level_tasks
16
- ENV["TESTOPTS"] ||= ""
17
- if tasks.any? { |t| t.include?("verbose") }
18
- ENV["TESTOPTS"] += " -v"
16
+ ENV['TESTOPTS'] ||= ''
17
+ if tasks.any? { |t| t.include?('verbose') }
18
+ ENV['TESTOPTS'] += ' -v'
19
19
  end
20
20
  if seed = look_for_seed(tasks)
21
- ENV["TESTOPTS"] += " --" + seed
21
+ ENV['TESTOPTS'] += ' --' + seed
22
22
  end
23
23
 
24
24
  agent_home = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
25
25
 
26
26
  Rake::TestTask.new(:newrelic) do |t|
27
- file_pattern = ENV["file"]
28
- file_pattern = file_pattern.split(",").map { |f| "#{agent_home}/#{f}".gsub("//", "/") } if file_pattern
27
+ file_pattern = ENV['file']
28
+ file_pattern = file_pattern.split(',').map { |f| "#{agent_home}/#{f}".gsub('//', '/') } if file_pattern
29
29
  file_pattern ||= "#{agent_home}/test/new_relic/**/*_test.rb"
30
30
 
31
31
  t.libs << "#{agent_home}/test"
data/newrelic.yml CHANGED
@@ -352,7 +352,7 @@ common: &default_settings
352
352
 
353
353
  # Controls auto-instrumentation of Excon at start up.
354
354
  # May be one of [enabled|disabled].
355
- # instrumentation.excon: auto
355
+ # instrumentation.excon: enabled
356
356
 
357
357
  # Controls auto-instrumentation of Grape at start up.
358
358
  # May be one of [auto|prepend|chain|disabled].
@@ -388,7 +388,7 @@ common: &default_settings
388
388
 
389
389
  # Controls auto-instrumentation of Mongo at start up.
390
390
  # May be one of [enabled|disabled].
391
- # instrumentation.mongo: auto
391
+ # instrumentation.mongo: enabled
392
392
 
393
393
  # Controls auto-instrumentation of Net::HTTP at start up.
394
394
  # May be one of [auto|prepend|chain|disabled].
@@ -545,7 +545,7 @@ common: &default_settings
545
545
  # slow_sql.enabled: false
546
546
 
547
547
  # If true, the agent collects explain plans in slow SQL queries. If this setting
548
- # is omitted, the transaction_tracer.explain.enabled setting will be applied as
548
+ # is omitted, the transaction_tracer.explain_enabled setting will be applied as
549
549
  # the default setting for explain plans in slow SQL as well.
550
550
  # slow_sql.explain_enabled: false
551
551
 
@@ -639,13 +639,13 @@ common: &default_settings
639
639
  # transaction_tracer.enabled: true
640
640
 
641
641
  # Threshold (in seconds) above which the agent will collect explain plans.
642
- # Relevant only when explain.enabled is true.
642
+ # Relevant only when explain_enabled is true.
643
643
  # transaction_tracer.explain_threshold: 0.5
644
644
 
645
645
  # If true, enables the collection of explain plans in transaction traces.
646
646
  # This setting will also apply to explain plans in slow SQL traces if
647
647
  # slow_sql.explain enabled is not set separately.
648
- # transaction_tracer.explain.enabled: true
648
+ # transaction_tracer.explain_enabled: true
649
649
 
650
650
  # Maximum number of transaction trace nodes to record in a single transaction
651
651
  # trace.