newrelic_rpm 3.12.0.288 → 9.10.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1319) hide show
  1. checksums.yaml +5 -5
  2. data/.build_ignore +26 -0
  3. data/CHANGELOG.md +5681 -0
  4. data/CONTRIBUTING.md +194 -0
  5. data/Gemfile +5 -2
  6. data/LICENSE +201 -150
  7. data/README.md +87 -143
  8. data/Rakefile +39 -55
  9. data/THIRD_PARTY_NOTICES.md +28 -0
  10. data/Thorfile +5 -0
  11. data/bin/newrelic +4 -9
  12. data/bin/newrelic_rpm +15 -0
  13. data/bin/nrdebug +86 -63
  14. data/init.rb +7 -9
  15. data/install.rb +3 -3
  16. data/lib/boot/strap.rb +101 -0
  17. data/lib/new_relic/agent/adaptive_sampler.rb +108 -0
  18. data/lib/new_relic/agent/agent.rb +158 -1000
  19. data/lib/new_relic/agent/agent_helpers/connect.rb +224 -0
  20. data/lib/new_relic/agent/agent_helpers/harvest.rb +153 -0
  21. data/lib/new_relic/agent/agent_helpers/shutdown.rb +72 -0
  22. data/lib/new_relic/agent/agent_helpers/special_startup.rb +74 -0
  23. data/lib/new_relic/agent/agent_helpers/start_worker_thread.rb +175 -0
  24. data/lib/new_relic/agent/agent_helpers/startup.rb +203 -0
  25. data/lib/new_relic/agent/agent_helpers/transmit.rb +76 -0
  26. data/lib/new_relic/agent/agent_logger.rb +39 -54
  27. data/lib/new_relic/agent/attribute_filter.rb +111 -35
  28. data/lib/new_relic/agent/attribute_pre_filtering.rb +109 -0
  29. data/lib/new_relic/agent/attribute_processing.rb +12 -12
  30. data/lib/new_relic/agent/attributes.rb +153 -0
  31. data/lib/new_relic/agent/audit_logger.rb +23 -7
  32. data/lib/new_relic/agent/autostart.rb +36 -47
  33. data/lib/new_relic/agent/aws.rb +62 -0
  34. data/lib/new_relic/agent/chained_call.rb +2 -2
  35. data/lib/new_relic/agent/commands/agent_command.rb +5 -5
  36. data/lib/new_relic/agent/commands/agent_command_router.rb +18 -35
  37. data/lib/new_relic/agent/commands/thread_profiler_session.rb +20 -19
  38. data/lib/new_relic/agent/configuration/default_source.rb +1903 -823
  39. data/lib/new_relic/agent/configuration/dotted_hash.rb +7 -8
  40. data/lib/new_relic/agent/configuration/environment_source.rb +26 -14
  41. data/lib/new_relic/agent/configuration/event_harvest_config.rb +68 -0
  42. data/lib/new_relic/agent/configuration/high_security_source.rb +15 -15
  43. data/lib/new_relic/agent/configuration/manager.rb +143 -114
  44. data/lib/new_relic/agent/configuration/manual_source.rb +2 -2
  45. data/lib/new_relic/agent/configuration/mask_defaults.rb +4 -4
  46. data/lib/new_relic/agent/configuration/security_policy_source.rb +246 -0
  47. data/lib/new_relic/agent/configuration/server_source.rb +70 -27
  48. data/lib/new_relic/agent/configuration/yaml_source.rb +85 -35
  49. data/lib/new_relic/agent/configuration.rb +2 -2
  50. data/lib/new_relic/agent/connect/request_builder.rb +61 -0
  51. data/lib/new_relic/agent/connect/response_handler.rb +58 -0
  52. data/lib/new_relic/agent/custom_event_aggregator.rb +68 -56
  53. data/lib/new_relic/agent/database/explain_plan_helpers.rb +138 -0
  54. data/lib/new_relic/agent/database/obfuscation_helpers.rb +73 -49
  55. data/lib/new_relic/agent/database/obfuscator.rb +7 -25
  56. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +5 -8
  57. data/lib/new_relic/agent/database.rb +166 -202
  58. data/lib/new_relic/agent/database_adapter.rb +35 -0
  59. data/lib/new_relic/agent/datastores/metric_helper.rb +62 -22
  60. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +50 -0
  61. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +21 -31
  62. data/lib/new_relic/agent/datastores/mongo.rb +8 -12
  63. data/lib/new_relic/agent/datastores/nosql_obfuscator.rb +41 -0
  64. data/lib/new_relic/agent/datastores/redis.rb +125 -0
  65. data/lib/new_relic/agent/datastores.rb +45 -30
  66. data/lib/new_relic/agent/deprecator.rb +2 -2
  67. data/lib/new_relic/agent/distributed_tracing/cross_app_payload.rb +44 -0
  68. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +253 -0
  69. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +84 -0
  70. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +75 -0
  71. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +159 -0
  72. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +38 -0
  73. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +245 -0
  74. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +127 -0
  75. data/lib/new_relic/agent/distributed_tracing.rb +148 -0
  76. data/lib/new_relic/agent/encoding_normalizer.rb +9 -24
  77. data/lib/new_relic/agent/error_collector.rb +200 -142
  78. data/lib/new_relic/agent/error_event_aggregator.rb +41 -0
  79. data/lib/new_relic/agent/error_filter.rb +174 -0
  80. data/lib/new_relic/agent/error_trace_aggregator.rb +102 -0
  81. data/lib/new_relic/agent/event_aggregator.rb +150 -0
  82. data/lib/new_relic/agent/event_buffer.rb +15 -9
  83. data/lib/new_relic/agent/event_listener.rb +2 -3
  84. data/lib/new_relic/agent/event_loop.rb +28 -26
  85. data/lib/new_relic/agent/external.rb +110 -0
  86. data/lib/new_relic/agent/guid_generator.rb +30 -0
  87. data/lib/new_relic/agent/harvester.rb +7 -10
  88. data/lib/new_relic/agent/heap.rb +139 -0
  89. data/lib/new_relic/agent/hostname.rb +44 -5
  90. data/lib/new_relic/agent/http_clients/abstract.rb +73 -0
  91. data/lib/new_relic/agent/http_clients/async_http_wrappers.rb +80 -0
  92. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +36 -24
  93. data/lib/new_relic/agent/http_clients/ethon_wrappers.rb +109 -0
  94. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +49 -23
  95. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +64 -0
  96. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +29 -22
  97. data/lib/new_relic/agent/http_clients/httpx_wrappers.rb +91 -0
  98. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +39 -11
  99. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +30 -20
  100. data/lib/new_relic/agent/http_clients/uri_util.rb +23 -19
  101. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +47 -0
  102. data/lib/new_relic/agent/instrumentation/action_controller_other_subscriber.rb +42 -0
  103. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +61 -74
  104. data/lib/new_relic/agent/instrumentation/action_dispatch.rb +31 -0
  105. data/lib/new_relic/agent/instrumentation/action_dispatch_subscriber.rb +64 -0
  106. data/lib/new_relic/agent/instrumentation/action_mailbox.rb +30 -0
  107. data/lib/new_relic/agent/instrumentation/action_mailbox_subscriber.rb +33 -0
  108. data/lib/new_relic/agent/instrumentation/action_mailer.rb +30 -0
  109. data/lib/new_relic/agent/instrumentation/action_mailer_subscriber.rb +85 -0
  110. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +82 -66
  111. data/lib/new_relic/agent/instrumentation/active_job.rb +52 -20
  112. data/lib/new_relic/agent/instrumentation/active_job_subscriber.rb +41 -0
  113. data/lib/new_relic/agent/instrumentation/active_merchant.rb +21 -7
  114. data/lib/new_relic/agent/instrumentation/active_record.rb +112 -42
  115. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +217 -56
  116. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +156 -0
  117. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +98 -0
  118. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +104 -59
  119. data/lib/new_relic/agent/instrumentation/active_storage.rb +27 -0
  120. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +38 -0
  121. data/lib/new_relic/agent/instrumentation/active_support.rb +27 -0
  122. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/chain.rb +69 -0
  123. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/instrumentation.rb +17 -0
  124. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/prepend.rb +37 -0
  125. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger.rb +23 -0
  126. data/lib/new_relic/agent/instrumentation/active_support_logger/chain.rb +23 -0
  127. data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +24 -0
  128. data/lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb +12 -0
  129. data/lib/new_relic/agent/instrumentation/active_support_logger.rb +26 -0
  130. data/lib/new_relic/agent/instrumentation/active_support_subscriber.rb +41 -0
  131. data/lib/new_relic/agent/instrumentation/async_http/chain.rb +23 -0
  132. data/lib/new_relic/agent/instrumentation/async_http/instrumentation.rb +37 -0
  133. data/lib/new_relic/agent/instrumentation/async_http/prepend.rb +15 -0
  134. data/lib/new_relic/agent/instrumentation/async_http.rb +28 -0
  135. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +45 -0
  136. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +159 -0
  137. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +35 -0
  138. data/lib/new_relic/agent/instrumentation/bunny.rb +32 -0
  139. data/lib/new_relic/agent/instrumentation/concurrent_ruby/chain.rb +36 -0
  140. data/lib/new_relic/agent/instrumentation/concurrent_ruby/instrumentation.rb +20 -0
  141. data/lib/new_relic/agent/instrumentation/concurrent_ruby/prepend.rb +27 -0
  142. data/lib/new_relic/agent/instrumentation/concurrent_ruby.rb +32 -0
  143. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +106 -74
  144. data/lib/new_relic/agent/instrumentation/curb/chain.rb +91 -0
  145. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +225 -0
  146. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +61 -0
  147. data/lib/new_relic/agent/instrumentation/curb.rb +16 -175
  148. data/lib/new_relic/agent/instrumentation/custom_events.rb +12 -0
  149. data/lib/new_relic/agent/instrumentation/custom_events_subscriber.rb +38 -0
  150. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +36 -0
  151. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +51 -0
  152. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +33 -0
  153. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +95 -36
  154. data/lib/new_relic/agent/instrumentation/dynamodb/chain.rb +27 -0
  155. data/lib/new_relic/agent/instrumentation/dynamodb/instrumentation.rb +64 -0
  156. data/lib/new_relic/agent/instrumentation/dynamodb/prepend.rb +19 -0
  157. data/lib/new_relic/agent/instrumentation/dynamodb.rb +25 -0
  158. data/lib/new_relic/agent/instrumentation/elasticsearch/chain.rb +29 -0
  159. data/lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb +120 -0
  160. data/lib/new_relic/agent/instrumentation/elasticsearch/prepend.rb +13 -0
  161. data/lib/new_relic/agent/instrumentation/elasticsearch.rb +31 -0
  162. data/lib/new_relic/agent/instrumentation/ethon/chain.rb +39 -0
  163. data/lib/new_relic/agent/instrumentation/ethon/instrumentation.rb +105 -0
  164. data/lib/new_relic/agent/instrumentation/ethon/prepend.rb +35 -0
  165. data/lib/new_relic/agent/instrumentation/ethon.rb +39 -0
  166. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +29 -16
  167. data/lib/new_relic/agent/instrumentation/excon.rb +29 -31
  168. data/lib/new_relic/agent/instrumentation/fiber/chain.rb +27 -0
  169. data/lib/new_relic/agent/instrumentation/fiber/instrumentation.rb +20 -0
  170. data/lib/new_relic/agent/instrumentation/fiber/prepend.rb +25 -0
  171. data/lib/new_relic/agent/instrumentation/fiber.rb +25 -0
  172. data/lib/new_relic/agent/instrumentation/grape/chain.rb +24 -0
  173. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +104 -0
  174. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +17 -0
  175. data/lib/new_relic/agent/instrumentation/grape.rb +18 -85
  176. data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +97 -0
  177. data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +93 -0
  178. data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +111 -0
  179. data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +30 -0
  180. data/lib/new_relic/agent/instrumentation/grpc/helper.rb +32 -0
  181. data/lib/new_relic/agent/instrumentation/grpc/server/chain.rb +69 -0
  182. data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +138 -0
  183. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_desc_prepend.rb +35 -0
  184. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_server_prepend.rb +26 -0
  185. data/lib/new_relic/agent/instrumentation/grpc_client.rb +23 -0
  186. data/lib/new_relic/agent/instrumentation/grpc_server.rb +25 -0
  187. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +24 -0
  188. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +41 -0
  189. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +15 -0
  190. data/lib/new_relic/agent/instrumentation/httpclient.rb +14 -22
  191. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +22 -0
  192. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +34 -0
  193. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +15 -0
  194. data/lib/new_relic/agent/instrumentation/httprb.rb +29 -0
  195. data/lib/new_relic/agent/instrumentation/httpx/chain.rb +20 -0
  196. data/lib/new_relic/agent/instrumentation/httpx/instrumentation.rb +51 -0
  197. data/lib/new_relic/agent/instrumentation/httpx/prepend.rb +15 -0
  198. data/lib/new_relic/agent/instrumentation/httpx.rb +27 -0
  199. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +6 -7
  200. data/lib/new_relic/agent/instrumentation/logger/chain.rb +21 -0
  201. data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +69 -0
  202. data/lib/new_relic/agent/instrumentation/logger/prepend.rb +13 -0
  203. data/lib/new_relic/agent/instrumentation/logger.rb +26 -0
  204. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +15 -0
  205. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +97 -0
  206. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +59 -0
  207. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +99 -0
  208. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +103 -0
  209. data/lib/new_relic/agent/instrumentation/memcache.rb +53 -109
  210. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +17 -16
  211. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +48 -14
  212. data/lib/new_relic/agent/instrumentation/mongo.rb +14 -110
  213. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +140 -0
  214. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +24 -0
  215. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +50 -0
  216. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +21 -0
  217. data/lib/new_relic/agent/instrumentation/net_http.rb +44 -0
  218. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +146 -0
  219. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +38 -0
  220. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +32 -0
  221. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +20 -0
  222. data/lib/new_relic/agent/instrumentation/padrino.rb +21 -21
  223. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +7 -7
  224. data/lib/new_relic/agent/instrumentation/queue_time.rb +19 -22
  225. data/lib/new_relic/agent/instrumentation/rack/chain.rb +66 -0
  226. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +33 -0
  227. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +81 -0
  228. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +43 -0
  229. data/lib/new_relic/agent/instrumentation/rack.rb +49 -152
  230. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +28 -55
  231. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +5 -5
  232. data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +36 -0
  233. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +46 -0
  234. data/lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb +30 -0
  235. data/lib/new_relic/agent/instrumentation/rails_notifications/custom_events.rb +30 -0
  236. data/lib/new_relic/agent/instrumentation/rake/chain.rb +20 -0
  237. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +146 -0
  238. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +14 -0
  239. data/lib/new_relic/agent/instrumentation/rake.rb +31 -0
  240. data/lib/new_relic/agent/instrumentation/redis/chain.rb +45 -0
  241. data/lib/new_relic/agent/instrumentation/redis/constants.rb +17 -0
  242. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +98 -0
  243. data/lib/new_relic/agent/instrumentation/redis/middleware.rb +16 -0
  244. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +29 -0
  245. data/lib/new_relic/agent/instrumentation/redis.rb +44 -0
  246. data/lib/new_relic/agent/instrumentation/resque/chain.rb +21 -0
  247. data/lib/new_relic/agent/instrumentation/resque/helper.rb +19 -0
  248. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +38 -0
  249. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +15 -0
  250. data/lib/new_relic/agent/instrumentation/resque.rb +38 -78
  251. data/lib/new_relic/agent/instrumentation/roda/chain.rb +43 -0
  252. data/lib/new_relic/agent/instrumentation/roda/ignorer.rb +45 -0
  253. data/lib/new_relic/agent/instrumentation/roda/instrumentation.rb +68 -0
  254. data/lib/new_relic/agent/instrumentation/roda/prepend.rb +24 -0
  255. data/lib/new_relic/agent/instrumentation/roda/roda_transaction_namer.rb +29 -0
  256. data/lib/new_relic/agent/instrumentation/roda.rb +36 -0
  257. data/lib/new_relic/agent/instrumentation/ruby_openai/chain.rb +36 -0
  258. data/lib/new_relic/agent/instrumentation/ruby_openai/instrumentation.rb +196 -0
  259. data/lib/new_relic/agent/instrumentation/ruby_openai/prepend.rb +20 -0
  260. data/lib/new_relic/agent/instrumentation/ruby_openai.rb +35 -0
  261. data/lib/new_relic/agent/instrumentation/sequel.rb +17 -23
  262. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +13 -13
  263. data/lib/new_relic/agent/instrumentation/sidekiq/client.rb +24 -0
  264. data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delayed_class.rb +30 -0
  265. data/lib/new_relic/agent/instrumentation/sidekiq/server.rb +60 -0
  266. data/lib/new_relic/agent/instrumentation/sidekiq.rb +37 -45
  267. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +55 -0
  268. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +31 -37
  269. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +130 -0
  270. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +33 -0
  271. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +13 -7
  272. data/lib/new_relic/agent/instrumentation/sinatra.rb +35 -165
  273. data/lib/new_relic/agent/instrumentation/stripe.rb +28 -0
  274. data/lib/new_relic/agent/instrumentation/stripe_subscriber.rb +77 -0
  275. data/lib/new_relic/agent/instrumentation/thread/chain.rb +24 -0
  276. data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +24 -0
  277. data/lib/new_relic/agent/instrumentation/thread/prepend.rb +22 -0
  278. data/lib/new_relic/agent/instrumentation/thread.rb +20 -0
  279. data/lib/new_relic/agent/instrumentation/tilt/chain.rb +24 -0
  280. data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +46 -0
  281. data/lib/new_relic/agent/instrumentation/tilt/prepend.rb +13 -0
  282. data/lib/new_relic/agent/instrumentation/tilt.rb +25 -0
  283. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +22 -0
  284. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +84 -0
  285. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +14 -0
  286. data/lib/new_relic/agent/instrumentation/typhoeus.rb +14 -47
  287. data/lib/new_relic/agent/instrumentation/view_component/chain.rb +21 -0
  288. data/lib/new_relic/agent/instrumentation/view_component/instrumentation.rb +39 -0
  289. data/lib/new_relic/agent/instrumentation/view_component/prepend.rb +13 -0
  290. data/lib/new_relic/agent/instrumentation/view_component.rb +26 -0
  291. data/lib/new_relic/agent/instrumentation.rb +2 -2
  292. data/lib/new_relic/agent/internal_agent_error.rb +3 -3
  293. data/lib/new_relic/agent/javascript_instrumentor.rb +72 -58
  294. data/lib/new_relic/agent/linking_metadata.rb +44 -0
  295. data/lib/new_relic/agent/llm/chat_completion_message.rb +25 -0
  296. data/lib/new_relic/agent/llm/chat_completion_summary.rb +66 -0
  297. data/lib/new_relic/agent/llm/embedding.rb +60 -0
  298. data/lib/new_relic/agent/llm/llm_event.rb +95 -0
  299. data/lib/new_relic/agent/llm/response_headers.rb +80 -0
  300. data/lib/new_relic/agent/llm.rb +49 -0
  301. data/lib/new_relic/agent/local_log_decorator.rb +37 -0
  302. data/lib/new_relic/agent/log_event_aggregator.rb +267 -0
  303. data/lib/new_relic/agent/log_event_attributes.rb +115 -0
  304. data/lib/new_relic/agent/log_once.rb +39 -0
  305. data/lib/new_relic/agent/log_priority.rb +20 -0
  306. data/lib/new_relic/agent/logging.rb +182 -0
  307. data/lib/new_relic/agent/memory_logger.rb +11 -4
  308. data/lib/new_relic/agent/messaging.rb +358 -0
  309. data/lib/new_relic/agent/method_tracer.rb +173 -195
  310. data/lib/new_relic/agent/method_tracer_helpers.rb +109 -66
  311. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +117 -0
  312. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +28 -0
  313. data/lib/new_relic/agent/monitors/inbound_request_monitor.rb +43 -0
  314. data/lib/new_relic/agent/monitors/synthetics_monitor.rb +64 -0
  315. data/lib/new_relic/agent/monitors.rb +26 -0
  316. data/lib/new_relic/agent/new_relic_service/encoders.rb +29 -13
  317. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +18 -24
  318. data/lib/new_relic/agent/new_relic_service/marshaller.rb +8 -29
  319. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +61 -0
  320. data/lib/new_relic/agent/new_relic_service.rb +406 -226
  321. data/lib/new_relic/agent/noticeable_error.rb +19 -0
  322. data/lib/new_relic/agent/null_logger.rb +8 -4
  323. data/lib/new_relic/agent/obfuscator.rb +8 -12
  324. data/lib/new_relic/agent/parameter_filtering.rb +41 -14
  325. data/lib/new_relic/agent/payload_metric_mapping.rb +57 -0
  326. data/lib/new_relic/agent/pipe_channel_manager.rb +37 -27
  327. data/lib/new_relic/agent/pipe_service.rb +23 -16
  328. data/lib/new_relic/agent/prepend_supportability.rb +16 -0
  329. data/lib/new_relic/agent/priority_sampled_buffer.rb +92 -0
  330. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +12 -12
  331. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +32 -12
  332. data/lib/new_relic/agent/rules_engine.rb +30 -7
  333. data/lib/new_relic/agent/sampler.rb +13 -13
  334. data/lib/new_relic/agent/sampler_collection.rb +5 -6
  335. data/lib/new_relic/agent/samplers/cpu_sampler.rb +13 -10
  336. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +22 -19
  337. data/lib/new_relic/agent/samplers/memory_sampler.rb +41 -25
  338. data/lib/new_relic/agent/samplers/object_sampler.rb +3 -3
  339. data/lib/new_relic/agent/samplers/vm_sampler.rb +22 -20
  340. data/lib/new_relic/agent/serverless_handler.rb +171 -0
  341. data/lib/new_relic/agent/span_event_aggregator.rb +49 -0
  342. data/lib/new_relic/agent/span_event_primitive.rb +222 -0
  343. data/lib/new_relic/agent/sql_sampler.rb +83 -47
  344. data/lib/new_relic/agent/stats.rb +80 -57
  345. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +12 -13
  346. data/lib/new_relic/agent/stats_engine/stats_hash.rb +97 -40
  347. data/lib/new_relic/agent/stats_engine.rb +175 -9
  348. data/lib/new_relic/agent/synthetics_event_aggregator.rb +44 -0
  349. data/lib/new_relic/agent/system_info.rb +203 -61
  350. data/lib/new_relic/agent/threading/agent_thread.rb +20 -15
  351. data/lib/new_relic/agent/threading/backtrace_node.rb +13 -14
  352. data/lib/new_relic/agent/threading/backtrace_service.rb +23 -26
  353. data/lib/new_relic/agent/threading/thread_profile.rb +32 -46
  354. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +19 -0
  355. data/lib/new_relic/agent/tracer.rb +514 -0
  356. data/lib/new_relic/agent/transaction/abstract_segment.rb +388 -0
  357. data/lib/new_relic/agent/transaction/datastore_segment.rb +155 -0
  358. data/lib/new_relic/agent/transaction/distributed_tracer.rb +185 -0
  359. data/lib/new_relic/agent/transaction/distributed_tracing.rb +171 -0
  360. data/lib/new_relic/agent/transaction/external_request_segment.rb +265 -0
  361. data/lib/new_relic/agent/transaction/message_broker_segment.rb +98 -0
  362. data/lib/new_relic/agent/transaction/request_attributes.rb +158 -0
  363. data/lib/new_relic/agent/transaction/segment.rb +102 -0
  364. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +2 -4
  365. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +3 -3
  366. data/lib/new_relic/agent/transaction/trace.rb +43 -37
  367. data/lib/new_relic/agent/transaction/trace_builder.rb +56 -0
  368. data/lib/new_relic/agent/transaction/trace_context.rb +168 -0
  369. data/lib/new_relic/agent/transaction/trace_node.rb +57 -66
  370. data/lib/new_relic/agent/transaction/tracing.rb +87 -0
  371. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +7 -7
  372. data/lib/new_relic/agent/transaction.rb +438 -396
  373. data/lib/new_relic/agent/transaction_error_primitive.rb +105 -0
  374. data/lib/new_relic/agent/transaction_event_aggregator.rb +43 -260
  375. data/lib/new_relic/agent/transaction_event_primitive.rb +127 -0
  376. data/lib/new_relic/agent/transaction_event_recorder.rb +49 -0
  377. data/lib/new_relic/agent/transaction_metrics.rb +19 -10
  378. data/lib/new_relic/agent/transaction_sampler.rb +22 -219
  379. data/lib/new_relic/agent/transaction_time_aggregator.rb +160 -0
  380. data/lib/new_relic/agent/utilization/aws.rb +48 -0
  381. data/lib/new_relic/agent/utilization/azure.rb +17 -0
  382. data/lib/new_relic/agent/utilization/gcp.rb +33 -0
  383. data/lib/new_relic/agent/utilization/pcf.rb +33 -0
  384. data/lib/new_relic/agent/utilization/vendor.rb +157 -0
  385. data/lib/new_relic/agent/utilization_data.rb +124 -37
  386. data/lib/new_relic/agent/vm/c_ruby_vm.rb +99 -0
  387. data/lib/new_relic/agent/vm/jruby_vm.rb +3 -5
  388. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +4 -4
  389. data/lib/new_relic/agent/vm/snapshot.rb +6 -6
  390. data/lib/new_relic/agent/vm.rb +5 -8
  391. data/lib/new_relic/agent/worker_loop.rb +16 -18
  392. data/lib/new_relic/agent.rb +476 -210
  393. data/lib/new_relic/base64.rb +25 -0
  394. data/lib/new_relic/cli/command.rb +27 -26
  395. data/lib/new_relic/cli/commands/deployments.rb +108 -50
  396. data/lib/new_relic/cli/commands/install.rb +35 -36
  397. data/lib/new_relic/coerce.rb +43 -16
  398. data/lib/new_relic/collection_helper.rb +49 -67
  399. data/lib/new_relic/constants.rb +45 -0
  400. data/lib/new_relic/control/class_methods.rb +7 -7
  401. data/lib/new_relic/control/frameworks/external.rb +3 -3
  402. data/lib/new_relic/control/frameworks/rails.rb +59 -49
  403. data/lib/new_relic/control/frameworks/rails3.rb +5 -7
  404. data/lib/new_relic/control/frameworks/rails4.rb +3 -3
  405. data/lib/new_relic/control/frameworks/rails_notifications.rb +14 -0
  406. data/lib/new_relic/control/frameworks/roda.rb +20 -0
  407. data/lib/new_relic/control/frameworks/ruby.rb +5 -5
  408. data/lib/new_relic/control/frameworks/sinatra.rb +8 -2
  409. data/lib/new_relic/control/frameworks.rb +2 -2
  410. data/lib/new_relic/control/instance_methods.rb +47 -29
  411. data/lib/new_relic/control/instrumentation.rb +27 -21
  412. data/lib/new_relic/control/private_instance_methods.rb +48 -0
  413. data/lib/new_relic/control/server_methods.rb +6 -60
  414. data/lib/new_relic/control.rb +3 -5
  415. data/lib/new_relic/delayed_job_injection.rb +2 -2
  416. data/lib/new_relic/dependency_detection.rb +234 -0
  417. data/lib/new_relic/environment_report.rb +42 -36
  418. data/lib/new_relic/helper.rb +54 -22
  419. data/lib/new_relic/language_support.rb +73 -99
  420. data/lib/new_relic/latest_changes.rb +13 -12
  421. data/lib/new_relic/local_environment.rb +55 -42
  422. data/lib/new_relic/metric_data.rb +37 -39
  423. data/lib/new_relic/metric_spec.rb +9 -24
  424. data/lib/new_relic/noticed_error.rb +103 -62
  425. data/lib/new_relic/rack/agent_hooks.rb +3 -3
  426. data/lib/new_relic/rack/agent_middleware.rb +5 -5
  427. data/lib/new_relic/rack/browser_monitoring.rb +147 -114
  428. data/lib/new_relic/rack.rb +2 -2
  429. data/lib/new_relic/recipes/capistrano3.rb +12 -55
  430. data/lib/new_relic/recipes/capistrano_legacy.rb +26 -29
  431. data/lib/new_relic/recipes/helpers/send_deployment.rb +70 -0
  432. data/lib/new_relic/recipes.rb +2 -2
  433. data/lib/new_relic/supportability_helper.rb +88 -0
  434. data/lib/new_relic/thread_local_storage.rb +31 -0
  435. data/lib/new_relic/traced_thread.rb +38 -0
  436. data/lib/new_relic/version.rb +7 -63
  437. data/lib/newrelic_rpm.rb +21 -34
  438. data/lib/sequel/extensions/new_relic_instrumentation.rb +99 -0
  439. data/lib/sequel/plugins/new_relic_instrumentation.rb +64 -0
  440. data/lib/tasks/all.rb +4 -4
  441. data/lib/tasks/bump_version.rake +21 -0
  442. data/lib/tasks/config.rake +27 -119
  443. data/lib/tasks/coverage_report.rake +28 -0
  444. data/lib/tasks/helpers/config.html.erb +115 -0
  445. data/lib/tasks/helpers/config.text.erb +8 -0
  446. data/lib/tasks/helpers/format.rb +127 -0
  447. data/lib/tasks/helpers/matches.rb +12 -0
  448. data/lib/tasks/helpers/newrelicyml.rb +144 -0
  449. data/lib/tasks/helpers/prompt.rb +24 -0
  450. data/lib/tasks/helpers/version_bump.rb +62 -0
  451. data/lib/tasks/install.rake +8 -4
  452. data/lib/tasks/instrumentation_generator/README.md +63 -0
  453. data/lib/tasks/instrumentation_generator/TODO.md +33 -0
  454. data/lib/tasks/instrumentation_generator/instrumentation.thor +129 -0
  455. data/lib/tasks/instrumentation_generator/templates/Envfile.tt +9 -0
  456. data/lib/tasks/instrumentation_generator/templates/chain.tt +21 -0
  457. data/lib/tasks/instrumentation_generator/templates/chain_method.tt +7 -0
  458. data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +29 -0
  459. data/lib/tasks/instrumentation_generator/templates/instrumentation.tt +13 -0
  460. data/lib/tasks/instrumentation_generator/templates/instrumentation_method.tt +3 -0
  461. data/lib/tasks/instrumentation_generator/templates/newrelic.yml.tt +19 -0
  462. data/lib/tasks/instrumentation_generator/templates/prepend.tt +13 -0
  463. data/lib/tasks/instrumentation_generator/templates/prepend_method.tt +3 -0
  464. data/lib/tasks/instrumentation_generator/templates/test.tt +15 -0
  465. data/lib/tasks/newrelic.rb +10 -0
  466. data/lib/tasks/newrelicyml.rake +13 -0
  467. data/lib/tasks/tests.rake +87 -16
  468. data/newrelic.yml +832 -10
  469. data/newrelic_rpm.gemspec +56 -56
  470. data/recipes/newrelic.rb +3 -3
  471. data/test/agent_helper.rb +513 -115
  472. metadata +384 -912
  473. data/.gitignore +0 -27
  474. data/.project +0 -23
  475. data/.travis.yml +0 -12
  476. data/.yardopts +0 -21
  477. data/CHANGELOG +0 -2300
  478. data/GUIDELINES_FOR_CONTRIBUTING.md +0 -80
  479. data/Guardfile +0 -8
  480. data/bin/mongrel_rpm +0 -33
  481. data/bin/newrelic_cmd +0 -5
  482. data/cert/cacert.pem +0 -1177
  483. data/config/database.yml +0 -5
  484. data/config.dot +0 -287
  485. data/lib/conditional_vendored_dependency_detection.rb +0 -7
  486. data/lib/conditional_vendored_metric_parser.rb +0 -9
  487. data/lib/new_relic/agent/busy_calculator.rb +0 -117
  488. data/lib/new_relic/agent/commands/xray_session.rb +0 -55
  489. data/lib/new_relic/agent/commands/xray_session_collection.rb +0 -161
  490. data/lib/new_relic/agent/cross_app_monitor.rb +0 -178
  491. data/lib/new_relic/agent/cross_app_tracing.rb +0 -339
  492. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +0 -39
  493. data/lib/new_relic/agent/datastores/mongo/statement_formatter.rb +0 -53
  494. data/lib/new_relic/agent/hash_extensions.rb +0 -26
  495. data/lib/new_relic/agent/inbound_request_monitor.rb +0 -41
  496. data/lib/new_relic/agent/instrumentation/active_record_4.rb +0 -28
  497. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +0 -72
  498. data/lib/new_relic/agent/instrumentation/authlogic.rb +0 -25
  499. data/lib/new_relic/agent/instrumentation/data_mapper.rb +0 -167
  500. data/lib/new_relic/agent/instrumentation/evented_subscriber.rb +0 -100
  501. data/lib/new_relic/agent/instrumentation/excon/connection.rb +0 -33
  502. data/lib/new_relic/agent/instrumentation/merb/controller.rb +0 -44
  503. data/lib/new_relic/agent/instrumentation/merb/errors.rb +0 -33
  504. data/lib/new_relic/agent/instrumentation/metric_frame.rb +0 -39
  505. data/lib/new_relic/agent/instrumentation/net.rb +0 -36
  506. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +0 -123
  507. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +0 -46
  508. data/lib/new_relic/agent/instrumentation/rails/errors.rb +0 -51
  509. data/lib/new_relic/agent/instrumentation/rails3/errors.rb +0 -47
  510. data/lib/new_relic/agent/instrumentation/rails4/action_controller.rb +0 -29
  511. data/lib/new_relic/agent/instrumentation/rails4/action_view.rb +0 -25
  512. data/lib/new_relic/agent/instrumentation/rails4/errors.rb +0 -46
  513. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +0 -26
  514. data/lib/new_relic/agent/instrumentation/rubyprof.rb +0 -26
  515. data/lib/new_relic/agent/instrumentation/sunspot.rb +0 -33
  516. data/lib/new_relic/agent/new_relic_service/pruby_marshaller.rb +0 -56
  517. data/lib/new_relic/agent/sampled_buffer.rb +0 -51
  518. data/lib/new_relic/agent/shim_agent.rb +0 -33
  519. data/lib/new_relic/agent/sized_buffer.rb +0 -23
  520. data/lib/new_relic/agent/stats_engine/metric_stats.rb +0 -237
  521. data/lib/new_relic/agent/stats_engine/samplers.rb +0 -28
  522. data/lib/new_relic/agent/supported_versions.rb +0 -259
  523. data/lib/new_relic/agent/synthetics_event_buffer.rb +0 -42
  524. data/lib/new_relic/agent/synthetics_monitor.rb +0 -50
  525. data/lib/new_relic/agent/traced_method_stack.rb +0 -99
  526. data/lib/new_relic/agent/transaction/attributes.rb +0 -161
  527. data/lib/new_relic/agent/transaction/developer_mode_sample_buffer.rb +0 -62
  528. data/lib/new_relic/agent/transaction/xray_sample_buffer.rb +0 -64
  529. data/lib/new_relic/agent/transaction_sample_builder.rb +0 -147
  530. data/lib/new_relic/agent/transaction_state.rb +0 -153
  531. data/lib/new_relic/agent/transaction_timings.rb +0 -57
  532. data/lib/new_relic/agent/vm/mri_vm.rb +0 -87
  533. data/lib/new_relic/agent/vm/rubinius_vm.rb +0 -132
  534. data/lib/new_relic/build.rb +0 -2
  535. data/lib/new_relic/control/frameworks/merb.rb +0 -29
  536. data/lib/new_relic/json_wrapper.rb +0 -78
  537. data/lib/new_relic/merbtasks.rb +0 -10
  538. data/lib/new_relic/metrics.rb +0 -13
  539. data/lib/new_relic/okjson.rb +0 -602
  540. data/lib/new_relic/rack/developer_mode/segment_summary.rb +0 -56
  541. data/lib/new_relic/rack/developer_mode.rb +0 -321
  542. data/lib/new_relic/rack/error_collector.rb +0 -27
  543. data/lib/new_relic/timer_lib.rb +0 -31
  544. data/lib/sequel/extensions/newrelic_instrumentation.rb +0 -79
  545. data/lib/sequel/plugins/newrelic_instrumentation.rb +0 -65
  546. data/lib/tasks/config.html.erb +0 -28
  547. data/lib/tasks/config.text.erb +0 -7
  548. data/lib/tasks/versions.html.erb +0 -27
  549. data/lib/tasks/versions.rake +0 -53
  550. data/lib/tasks/versions.txt.erb +0 -14
  551. data/test/config/newrelic.yml +0 -46
  552. data/test/config/test.cert.crt +0 -18
  553. data/test/config/test.cert.key +0 -15
  554. data/test/config/test_control.rb +0 -54
  555. data/test/environments/.gitignore +0 -16
  556. data/test/environments/lib/environments/runner.rb +0 -113
  557. data/test/environments/norails/Gemfile +0 -21
  558. data/test/environments/norails/Rakefile +0 -9
  559. data/test/environments/rails21/Gemfile +0 -25
  560. data/test/environments/rails21/Rakefile +0 -16
  561. data/test/environments/rails21/app/controllers/application.rb +0 -20
  562. data/test/environments/rails21/config/boot.rb +0 -113
  563. data/test/environments/rails21/config/database.yml +0 -26
  564. data/test/environments/rails21/config/environment.rb +0 -26
  565. data/test/environments/rails21/config/environments/development.rb +0 -10
  566. data/test/environments/rails21/config/environments/production.rb +0 -8
  567. data/test/environments/rails21/config/environments/test.rb +0 -10
  568. data/test/environments/rails21/config/routes.rb +0 -5
  569. data/test/environments/rails21/db/schema.rb +0 -5
  570. data/test/environments/rails22/Gemfile +0 -25
  571. data/test/environments/rails22/Rakefile +0 -16
  572. data/test/environments/rails22/app/controllers/application.rb +0 -20
  573. data/test/environments/rails22/config/boot.rb +0 -113
  574. data/test/environments/rails22/config/database.yml +0 -26
  575. data/test/environments/rails22/config/environment.rb +0 -25
  576. data/test/environments/rails22/config/environments/development.rb +0 -10
  577. data/test/environments/rails22/config/environments/production.rb +0 -8
  578. data/test/environments/rails22/config/environments/test.rb +0 -10
  579. data/test/environments/rails22/config/routes.rb +0 -5
  580. data/test/environments/rails22/db/schema.rb +0 -5
  581. data/test/environments/rails23/Gemfile +0 -24
  582. data/test/environments/rails23/Rakefile +0 -16
  583. data/test/environments/rails23/app/controllers/application.rb +0 -20
  584. data/test/environments/rails23/config/boot.rb +0 -127
  585. data/test/environments/rails23/config/database.yml +0 -26
  586. data/test/environments/rails23/config/environment.rb +0 -16
  587. data/test/environments/rails23/config/environments/production.rb +0 -8
  588. data/test/environments/rails23/config/environments/test.rb +0 -10
  589. data/test/environments/rails23/config/preinitializer.rb +0 -25
  590. data/test/environments/rails23/config/routes.rb +0 -5
  591. data/test/environments/rails23/db/schema.rb +0 -5
  592. data/test/environments/rails30/Gemfile +0 -23
  593. data/test/environments/rails30/Rakefile +0 -11
  594. data/test/environments/rails30/config/application.rb +0 -17
  595. data/test/environments/rails30/config/boot.rb +0 -10
  596. data/test/environments/rails30/config/database.yml +0 -26
  597. data/test/environments/rails30/config/environment.rb +0 -6
  598. data/test/environments/rails30/config/initializers/new_rails_defaults.rb +0 -11
  599. data/test/environments/rails30/db/schema.rb +0 -5
  600. data/test/environments/rails31/Gemfile +0 -24
  601. data/test/environments/rails31/Rakefile +0 -11
  602. data/test/environments/rails31/config/application.rb +0 -18
  603. data/test/environments/rails31/config/boot.rb +0 -10
  604. data/test/environments/rails31/config/database.yml +0 -26
  605. data/test/environments/rails31/config/environment.rb +0 -6
  606. data/test/environments/rails31/config/initializers/new_rails_defaults.rb +0 -21
  607. data/test/environments/rails31/db/schema.rb +0 -5
  608. data/test/environments/rails32/Gemfile +0 -26
  609. data/test/environments/rails32/Rakefile +0 -11
  610. data/test/environments/rails32/config/application.rb +0 -19
  611. data/test/environments/rails32/config/boot.rb +0 -10
  612. data/test/environments/rails32/config/database.yml +0 -31
  613. data/test/environments/rails32/config/environment.rb +0 -6
  614. data/test/environments/rails32/db/schema.rb +0 -5
  615. data/test/environments/rails40/Gemfile +0 -43
  616. data/test/environments/rails40/Rakefile +0 -11
  617. data/test/environments/rails40/config/application.rb +0 -18
  618. data/test/environments/rails40/config/boot.rb +0 -10
  619. data/test/environments/rails40/config/database.yml +0 -26
  620. data/test/environments/rails40/config/environment.rb +0 -6
  621. data/test/environments/rails40/db/schema.rb +0 -5
  622. data/test/environments/rails41/Gemfile +0 -35
  623. data/test/environments/rails41/Rakefile +0 -11
  624. data/test/environments/rails41/config/application.rb +0 -18
  625. data/test/environments/rails41/config/boot.rb +0 -10
  626. data/test/environments/rails41/config/database.yml +0 -26
  627. data/test/environments/rails41/config/environment.rb +0 -6
  628. data/test/environments/rails41/db/schema.rb +0 -5
  629. data/test/environments/rails42/Gemfile +0 -39
  630. data/test/environments/rails42/Rakefile +0 -11
  631. data/test/environments/rails42/config/application.rb +0 -18
  632. data/test/environments/rails42/config/boot.rb +0 -10
  633. data/test/environments/rails42/config/database.yml +0 -26
  634. data/test/environments/rails42/config/environment.rb +0 -6
  635. data/test/environments/rails42/db/schema.rb +0 -5
  636. data/test/fixtures/cross_agent_tests/README.md +0 -56
  637. data/test/fixtures/cross_agent_tests/attribute_configuration.json +0 -384
  638. data/test/fixtures/cross_agent_tests/cat_map.json +0 -597
  639. data/test/fixtures/cross_agent_tests/docker_container_id/README.md +0 -6
  640. data/test/fixtures/cross_agent_tests/docker_container_id/cases.json +0 -46
  641. data/test/fixtures/cross_agent_tests/docker_container_id/docker-0.9.1.txt +0 -10
  642. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.0.0.txt +0 -10
  643. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.1.2-lxc-driver.txt +0 -10
  644. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.1.2-native-driver-fs.txt +0 -10
  645. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.1.2-native-driver-systemd.txt +0 -10
  646. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.3.txt +0 -9
  647. data/test/fixtures/cross_agent_tests/docker_container_id/empty.txt +0 -0
  648. data/test/fixtures/cross_agent_tests/docker_container_id/heroku.txt +0 -1
  649. data/test/fixtures/cross_agent_tests/docker_container_id/ubuntu-14.04-lxc-container.txt +0 -10
  650. data/test/fixtures/cross_agent_tests/docker_container_id/ubuntu-14.04-no-container.txt +0 -10
  651. data/test/fixtures/cross_agent_tests/docker_container_id/ubuntu-14.10-no-container.txt +0 -10
  652. data/test/fixtures/cross_agent_tests/labels.json +0 -133
  653. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/README.md +0 -16
  654. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/basic_where.colon_obfuscated.txt +0 -3
  655. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/basic_where.explain.txt +0 -3
  656. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/basic_where.obfuscated.txt +0 -3
  657. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/basic_where.query.txt +0 -1
  658. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/current_date.colon_obfuscated.txt +0 -2
  659. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/current_date.explain.txt +0 -2
  660. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/current_date.obfuscated.txt +0 -2
  661. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/current_date.query.txt +0 -1
  662. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/date.colon_obfuscated.txt +0 -2
  663. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/date.explain.txt +0 -2
  664. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/date.obfuscated.txt +0 -2
  665. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/date.query.txt +0 -1
  666. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_newline.colon_obfuscated.txt +0 -2
  667. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_newline.explain.txt +0 -3
  668. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_newline.obfuscated.txt +0 -2
  669. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_newline.query.txt +0 -1
  670. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_quote.colon_obfuscated.txt +0 -2
  671. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_quote.explain.txt +0 -2
  672. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_quote.obfuscated.txt +0 -2
  673. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_quote.query.txt +0 -1
  674. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/floating_point.colon_obfuscated.txt +0 -2
  675. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/floating_point.explain.txt +0 -2
  676. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/floating_point.obfuscated.txt +0 -2
  677. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/floating_point.query.txt +0 -1
  678. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/function_with_strings.colon_obfuscated.txt +0 -5
  679. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/function_with_strings.explain.txt +0 -5
  680. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/function_with_strings.obfuscated.txt +0 -5
  681. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/function_with_strings.query.txt +0 -1
  682. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/quote_in_table_name.colon_obfuscated.txt +0 -2
  683. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/quote_in_table_name.explain.txt +0 -2
  684. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/quote_in_table_name.obfuscated.txt +0 -2
  685. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/quote_in_table_name.query.txt +0 -1
  686. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/subplan.colon_obfuscated.txt +0 -5
  687. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/subplan.explain.txt +0 -5
  688. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/subplan.obfuscated.txt +0 -5
  689. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/subplan.query.txt +0 -1
  690. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_integer.colon_obfuscated.txt +0 -2
  691. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_integer.explain.txt +0 -2
  692. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_integer.obfuscated.txt +0 -2
  693. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_integer.query.txt +0 -1
  694. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_regex_chars.colon_obfuscated.txt +0 -2
  695. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_regex_chars.explain.txt +0 -2
  696. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_regex_chars.obfuscated.txt +0 -2
  697. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_regex_chars.query.txt +0 -1
  698. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_substring.colon_obfuscated.txt +0 -3
  699. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_substring.explain.txt +0 -3
  700. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_substring.obfuscated.txt +0 -3
  701. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_substring.query.txt +0 -1
  702. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case1.colon_obfuscated.txt +0 -2
  703. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case1.explain.txt +0 -2
  704. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case1.obfuscated.txt +0 -2
  705. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case1.query.txt +0 -1
  706. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case2.colon_obfuscated.txt +0 -2
  707. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case2.explain.txt +0 -3
  708. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case2.obfuscated.txt +0 -2
  709. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case2.query.txt +0 -1
  710. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case3.colon_obfuscated.txt +0 -2
  711. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case3.explain.txt +0 -2
  712. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case3.obfuscated.txt +0 -2
  713. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case3.query.txt +0 -1
  714. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case4.colon_obfuscated.txt +0 -2
  715. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case4.explain.txt +0 -2
  716. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case4.obfuscated.txt +0 -2
  717. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case4.query.txt +0 -1
  718. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case5.colon_obfuscated.txt +0 -2
  719. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case5.explain.txt +0 -2
  720. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case5.obfuscated.txt +0 -2
  721. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case5.query.txt +0 -1
  722. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case6.colon_obfuscated.txt +0 -2
  723. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case6.explain.txt +0 -2
  724. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case6.obfuscated.txt +0 -2
  725. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case6.query.txt +0 -1
  726. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case7.colon_obfuscated.txt +0 -2
  727. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case7.explain.txt +0 -2
  728. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case7.obfuscated.txt +0 -2
  729. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case7.query.txt +0 -1
  730. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case8.colon_obfuscated.txt +0 -2
  731. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case8.explain.txt +0 -2
  732. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case8.obfuscated.txt +0 -2
  733. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case8.query.txt +0 -1
  734. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case9.colon_obfuscated.txt +0 -2
  735. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case9.explain.txt +0 -2
  736. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case9.obfuscated.txt +0 -2
  737. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case9.query.txt +0 -1
  738. data/test/fixtures/cross_agent_tests/proc_cpuinfo/1pack_1core_1logical.txt +0 -3
  739. data/test/fixtures/cross_agent_tests/proc_cpuinfo/1pack_1core_2logical.txt +0 -14
  740. data/test/fixtures/cross_agent_tests/proc_cpuinfo/1pack_2core_2logical.txt +0 -14
  741. data/test/fixtures/cross_agent_tests/proc_cpuinfo/1pack_4core_4logical.txt +0 -28
  742. data/test/fixtures/cross_agent_tests/proc_cpuinfo/2pack_12core_24logical.txt +0 -575
  743. data/test/fixtures/cross_agent_tests/proc_cpuinfo/2pack_20core_40logical.txt +0 -999
  744. data/test/fixtures/cross_agent_tests/proc_cpuinfo/2pack_2core_2logical.txt +0 -51
  745. data/test/fixtures/cross_agent_tests/proc_cpuinfo/2pack_2core_4logical.txt +0 -28
  746. data/test/fixtures/cross_agent_tests/proc_cpuinfo/2pack_4core_4logical.txt +0 -28
  747. data/test/fixtures/cross_agent_tests/proc_cpuinfo/4pack_4core_4logical.txt +0 -103
  748. data/test/fixtures/cross_agent_tests/proc_cpuinfo/8pack_8core_8logical.txt +0 -199
  749. data/test/fixtures/cross_agent_tests/proc_cpuinfo/README.md +0 -24
  750. data/test/fixtures/cross_agent_tests/proc_cpuinfo/Xpack_Xcore_2logical.txt +0 -43
  751. data/test/fixtures/cross_agent_tests/proc_meminfo/README.md +0 -7
  752. data/test/fixtures/cross_agent_tests/proc_meminfo/meminfo_4096MB.txt +0 -47
  753. data/test/fixtures/cross_agent_tests/rules.json +0 -165
  754. data/test/fixtures/cross_agent_tests/rum_client_config.json +0 -62
  755. data/test/fixtures/cross_agent_tests/rum_footer_insertion_location/close-body-in-comment.html +0 -10
  756. data/test/fixtures/cross_agent_tests/rum_footer_insertion_location/dynamic-iframe.html +0 -19
  757. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/basic.html +0 -10
  758. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/body_with_attributes.html +0 -3
  759. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/charset_tag.html +0 -11
  760. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/charset_tag_after_x_ua_tag.html +0 -11
  761. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/charset_tag_before_x_ua_tag.html +0 -11
  762. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/charset_tag_with_spaces.html +0 -11
  763. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/comments1.html +0 -24
  764. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/comments2.html +0 -24
  765. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/content_type_charset_tag.html +0 -11
  766. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/content_type_charset_tag_after_x_ua_tag.html +0 -11
  767. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/content_type_charset_tag_before_x_ua_tag.html +0 -11
  768. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/empty_head +0 -4
  769. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/gt_in_quotes1.html +0 -27
  770. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/gt_in_quotes2.html +0 -24
  771. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/gt_in_quotes_mismatch.html +0 -24
  772. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/gt_in_single_quotes1.html +0 -25
  773. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/gt_in_single_quotes_mismatch.html +0 -25
  774. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/head_with_attributes.html +0 -10
  775. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/incomplete_non_meta_tags.html +0 -10
  776. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/no_end_header.html +0 -6
  777. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/no_header.html +0 -7
  778. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/no_html_and_no_header.html +0 -3
  779. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/no_start_header.html +0 -9
  780. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/script1.html +0 -19
  781. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/script2.html +0 -17
  782. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag.html +0 -10
  783. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag_multiline.html +0 -11
  784. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag_multiple_tags.html +0 -12
  785. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag_spaces_around_equals.html +0 -10
  786. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag_with_others.html +0 -11
  787. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag_with_spaces.html +0 -10
  788. data/test/fixtures/cross_agent_tests/sql_obfuscation/README.md +0 -30
  789. data/test/fixtures/cross_agent_tests/sql_obfuscation/sql_obfuscation.json +0 -365
  790. data/test/fixtures/cross_agent_tests/sql_parsing.json +0 -55
  791. data/test/fixtures/cross_agent_tests/synthetics/README.md +0 -65
  792. data/test/fixtures/cross_agent_tests/synthetics/synthetics.json +0 -317
  793. data/test/fixtures/cross_agent_tests/transaction_segment_terms.json +0 -101
  794. data/test/fixtures/cross_agent_tests/url_clean.json +0 -15
  795. data/test/fixtures/cross_agent_tests/url_domain_extraction.json +0 -35
  796. data/test/helpers/exceptions.rb +0 -16
  797. data/test/helpers/file_searching.rb +0 -28
  798. data/test/helpers/mongo_metric_builder.rb +0 -28
  799. data/test/helpers/runtime_detection.rb +0 -17
  800. data/test/intentional_fail.rb +0 -13
  801. data/test/multiverse/.gitignore +0 -13
  802. data/test/multiverse/README.md +0 -85
  803. data/test/multiverse/lib/multiverse/color.rb +0 -23
  804. data/test/multiverse/lib/multiverse/envfile.rb +0 -66
  805. data/test/multiverse/lib/multiverse/environment.rb +0 -19
  806. data/test/multiverse/lib/multiverse/output_collector.rb +0 -82
  807. data/test/multiverse/lib/multiverse/runner.rb +0 -117
  808. data/test/multiverse/lib/multiverse/suite.rb +0 -525
  809. data/test/multiverse/script/runner +0 -5
  810. data/test/multiverse/suites/active_record/.gitignore +0 -1
  811. data/test/multiverse/suites/active_record/Envfile +0 -67
  812. data/test/multiverse/suites/active_record/Rakefile +0 -9
  813. data/test/multiverse/suites/active_record/active_record_test.rb +0 -374
  814. data/test/multiverse/suites/active_record/app/models/models.rb +0 -27
  815. data/test/multiverse/suites/active_record/ar_method_aliasing.rb +0 -43
  816. data/test/multiverse/suites/active_record/before_suite.rb +0 -23
  817. data/test/multiverse/suites/active_record/config/database.rb +0 -79
  818. data/test/multiverse/suites/active_record/config/database.yml +0 -19
  819. data/test/multiverse/suites/active_record/config/newrelic.yml +0 -18
  820. data/test/multiverse/suites/active_record/db/migrate/20141105131800_create_users_and_aliases.rb +0 -21
  821. data/test/multiverse/suites/active_record/db/migrate/20141106082200_create_orders_and_shipments.rb +0 -25
  822. data/test/multiverse/suites/activemerchant/Envfile +0 -36
  823. data/test/multiverse/suites/activemerchant/activemerchant_test.rb +0 -62
  824. data/test/multiverse/suites/agent_only/Envfile +0 -4
  825. data/test/multiverse/suites/agent_only/agent_attributes_test.rb +0 -145
  826. data/test/multiverse/suites/agent_only/agent_run_id_handling_test.rb +0 -39
  827. data/test/multiverse/suites/agent_only/audit_log_test.rb +0 -58
  828. data/test/multiverse/suites/agent_only/collector_exception_handling_test.rb +0 -87
  829. data/test/multiverse/suites/agent_only/config/newrelic.yml +0 -27
  830. data/test/multiverse/suites/agent_only/cross_application_tracing_test.rb +0 -94
  831. data/test/multiverse/suites/agent_only/custom_analytics_events_test.rb +0 -67
  832. data/test/multiverse/suites/agent_only/custom_queue_time_test.rb +0 -60
  833. data/test/multiverse/suites/agent_only/encoding_handling_test.rb +0 -130
  834. data/test/multiverse/suites/agent_only/exclusive_time_test.rb +0 -176
  835. data/test/multiverse/suites/agent_only/harvest_timestamps_test.rb +0 -83
  836. data/test/multiverse/suites/agent_only/http_response_code_test.rb +0 -38
  837. data/test/multiverse/suites/agent_only/keepalive_test.rb +0 -24
  838. data/test/multiverse/suites/agent_only/key_transactions_test.rb +0 -118
  839. data/test/multiverse/suites/agent_only/labels_test.rb +0 -83
  840. data/test/multiverse/suites/agent_only/logging_test.rb +0 -162
  841. data/test/multiverse/suites/agent_only/marshaling_test.rb +0 -88
  842. data/test/multiverse/suites/agent_only/pipe_manager_test.rb +0 -41
  843. data/test/multiverse/suites/agent_only/rename_rule_test.rb +0 -91
  844. data/test/multiverse/suites/agent_only/rum_instrumentation_test.rb +0 -97
  845. data/test/multiverse/suites/agent_only/script/env_change.rb +0 -10
  846. data/test/multiverse/suites/agent_only/script/loading.rb +0 -20
  847. data/test/multiverse/suites/agent_only/script/symbol_env.rb +0 -10
  848. data/test/multiverse/suites/agent_only/service_timeout_test.rb +0 -39
  849. data/test/multiverse/suites/agent_only/set_transaction_name_test.rb +0 -118
  850. data/test/multiverse/suites/agent_only/ssl_test.rb +0 -20
  851. data/test/multiverse/suites/agent_only/start_up_test.rb +0 -55
  852. data/test/multiverse/suites/agent_only/synthetics_test.rb +0 -131
  853. data/test/multiverse/suites/agent_only/testing_app.rb +0 -58
  854. data/test/multiverse/suites/agent_only/thread_profiling_test.rb +0 -160
  855. data/test/multiverse/suites/agent_only/transaction_ignoring_test.rb +0 -42
  856. data/test/multiverse/suites/agent_only/utilization_data_collection_test.rb +0 -171
  857. data/test/multiverse/suites/agent_only/xray_sessions_test.rb +0 -199
  858. data/test/multiverse/suites/bare/Envfile +0 -3
  859. data/test/multiverse/suites/bare/standalone_instrumentation_test.rb +0 -43
  860. data/test/multiverse/suites/capistrano/Capfile +0 -26
  861. data/test/multiverse/suites/capistrano/Envfile +0 -18
  862. data/test/multiverse/suites/capistrano/config/deploy/production.rb +0 -9
  863. data/test/multiverse/suites/capistrano/config/deploy.rb +0 -14
  864. data/test/multiverse/suites/capistrano/config/newrelic.yml +0 -21
  865. data/test/multiverse/suites/capistrano/deployment_test.rb +0 -54
  866. data/test/multiverse/suites/capistrano2/Capfile +0 -4
  867. data/test/multiverse/suites/capistrano2/Envfile +0 -8
  868. data/test/multiverse/suites/capistrano2/config/deploy.rb +0 -19
  869. data/test/multiverse/suites/capistrano2/config/newrelic.yml +0 -21
  870. data/test/multiverse/suites/capistrano2/deployment_test.rb +0 -37
  871. data/test/multiverse/suites/config_file_loading/Envfile +0 -13
  872. data/test/multiverse/suites/config_file_loading/config_file_loading_test.rb +0 -213
  873. data/test/multiverse/suites/curb/Envfile +0 -31
  874. data/test/multiverse/suites/curb/config/newrelic.yml +0 -18
  875. data/test/multiverse/suites/curb/curb_test.rb +0 -213
  876. data/test/multiverse/suites/datamapper/Envfile +0 -30
  877. data/test/multiverse/suites/datamapper/config/newrelic.yml +0 -20
  878. data/test/multiverse/suites/datamapper/datamapper_test.rb +0 -335
  879. data/test/multiverse/suites/deferred_instrumentation/Envfile +0 -15
  880. data/test/multiverse/suites/deferred_instrumentation/config/newrelic.yml +0 -20
  881. data/test/multiverse/suites/deferred_instrumentation/sinatra_test.rb +0 -107
  882. data/test/multiverse/suites/delayed_job/Envfile +0 -102
  883. data/test/multiverse/suites/delayed_job/before_suite.rb +0 -33
  884. data/test/multiverse/suites/delayed_job/config/newrelic.yml +0 -18
  885. data/test/multiverse/suites/delayed_job/delayed_job_sampler_test.rb +0 -128
  886. data/test/multiverse/suites/delayed_job/unsupported_backend_test.rb +0 -21
  887. data/test/multiverse/suites/excon/Envfile +0 -21
  888. data/test/multiverse/suites/excon/config/newrelic.yml +0 -18
  889. data/test/multiverse/suites/excon/excon_test.rb +0 -81
  890. data/test/multiverse/suites/grape/Envfile +0 -13
  891. data/test/multiverse/suites/grape/config/newrelic.yml +0 -19
  892. data/test/multiverse/suites/grape/grape_test.rb +0 -202
  893. data/test/multiverse/suites/grape/grape_test_api.rb +0 -64
  894. data/test/multiverse/suites/grape/grape_versioning_test.rb +0 -64
  895. data/test/multiverse/suites/grape/grape_versioning_test_api.rb +0 -72
  896. data/test/multiverse/suites/grape/unsupported_version_test.rb +0 -28
  897. data/test/multiverse/suites/high_security/Envfile +0 -3
  898. data/test/multiverse/suites/high_security/config/newrelic.yml +0 -70
  899. data/test/multiverse/suites/high_security/high_security_test.rb +0 -214
  900. data/test/multiverse/suites/httpclient/Envfile +0 -13
  901. data/test/multiverse/suites/httpclient/config/newrelic.yml +0 -18
  902. data/test/multiverse/suites/httpclient/httpclient_test.rb +0 -75
  903. data/test/multiverse/suites/json/Envfile +0 -25
  904. data/test/multiverse/suites/json/config/newrelic.yml +0 -22
  905. data/test/multiverse/suites/json/json_test.rb +0 -16
  906. data/test/multiverse/suites/marshalling/Envfile +0 -12
  907. data/test/multiverse/suites/marshalling/config/newrelic.yml +0 -20
  908. data/test/multiverse/suites/marshalling/marshalling_test.rb +0 -16
  909. data/test/multiverse/suites/memcached/Envfile +0 -52
  910. data/test/multiverse/suites/memcached/dalli_test.rb +0 -89
  911. data/test/multiverse/suites/memcached/memcache_client_test.rb +0 -25
  912. data/test/multiverse/suites/memcached/memcache_test_cases.rb +0 -302
  913. data/test/multiverse/suites/memcached/memcached_test.rb +0 -159
  914. data/test/multiverse/suites/mongo/Envfile +0 -69
  915. data/test/multiverse/suites/mongo/config/newrelic.yml +0 -18
  916. data/test/multiverse/suites/mongo/helpers/mongo_operation_tests.rb +0 -489
  917. data/test/multiverse/suites/mongo/helpers/mongo_replica_set.rb +0 -97
  918. data/test/multiverse/suites/mongo/helpers/mongo_replica_set_test.rb +0 -82
  919. data/test/multiverse/suites/mongo/helpers/mongo_server.rb +0 -241
  920. data/test/multiverse/suites/mongo/helpers/mongo_server_test.rb +0 -176
  921. data/test/multiverse/suites/mongo/mongo_connection_test.rb +0 -39
  922. data/test/multiverse/suites/mongo/mongo_instrumentation_test.rb +0 -39
  923. data/test/multiverse/suites/mongo/mongo_unsupported_version_test.rb +0 -72
  924. data/test/multiverse/suites/net_http/Envfile +0 -4
  925. data/test/multiverse/suites/net_http/config/newrelic.yml +0 -18
  926. data/test/multiverse/suites/net_http/net_http_test.rb +0 -111
  927. data/test/multiverse/suites/padrino/Envfile +0 -14
  928. data/test/multiverse/suites/padrino/config/newrelic.yml +0 -20
  929. data/test/multiverse/suites/padrino/padrino_test.rb +0 -52
  930. data/test/multiverse/suites/rack/Envfile +0 -35
  931. data/test/multiverse/suites/rack/builder_map_test.rb +0 -128
  932. data/test/multiverse/suites/rack/example_app.rb +0 -100
  933. data/test/multiverse/suites/rack/http_response_code_test.rb +0 -50
  934. data/test/multiverse/suites/rack/nested_non_rack_app_test.rb +0 -66
  935. data/test/multiverse/suites/rack/rack_auto_instrumentation_test.rb +0 -144
  936. data/test/multiverse/suites/rack/rack_cascade_test.rb +0 -45
  937. data/test/multiverse/suites/rack/rack_env_mutation_test.rb +0 -53
  938. data/test/multiverse/suites/rack/rack_parameter_filtering_test.rb +0 -49
  939. data/test/multiverse/suites/rack/rack_unsupported_version_test.rb +0 -43
  940. data/test/multiverse/suites/rack/url_map_test.rb +0 -117
  941. data/test/multiverse/suites/rails/Envfile +0 -61
  942. data/test/multiverse/suites/rails/action_controller_live_rum_test.rb +0 -39
  943. data/test/multiverse/suites/rails/activejob_test.rb +0 -152
  944. data/test/multiverse/suites/rails/app/views/foos/_foo.html.haml +0 -1
  945. data/test/multiverse/suites/rails/app/views/views/_a_partial.html.erb +0 -2
  946. data/test/multiverse/suites/rails/app/views/views/_mid_partial.html.erb +0 -1
  947. data/test/multiverse/suites/rails/app/views/views/_top_partial.html.erb +0 -3
  948. data/test/multiverse/suites/rails/app/views/views/deep_partial.html.erb +0 -3
  949. data/test/multiverse/suites/rails/app/views/views/haml_view.html.haml +0 -6
  950. data/test/multiverse/suites/rails/app/views/views/index.html.erb +0 -4
  951. data/test/multiverse/suites/rails/app.rb +0 -44
  952. data/test/multiverse/suites/rails/bad_instrumentation_test.rb +0 -29
  953. data/test/multiverse/suites/rails/config/newrelic.yml +0 -30
  954. data/test/multiverse/suites/rails/dummy.txt +0 -1
  955. data/test/multiverse/suites/rails/error_tracing_test.rb +0 -322
  956. data/test/multiverse/suites/rails/gc_instrumentation_test.rb +0 -93
  957. data/test/multiverse/suites/rails/ignore_test.rb +0 -79
  958. data/test/multiverse/suites/rails/middleware_instrumentation_test.rb +0 -41
  959. data/test/multiverse/suites/rails/middlewares.rb +0 -19
  960. data/test/multiverse/suites/rails/parameter_capture_test.rb +0 -299
  961. data/test/multiverse/suites/rails/queue_time_test.rb +0 -89
  962. data/test/multiverse/suites/rails/rails2_app/app/controllers/application.rb +0 -7
  963. data/test/multiverse/suites/rails/rails2_app/config/boot.rb +0 -127
  964. data/test/multiverse/suites/rails/rails2_app/config/database.yml +0 -18
  965. data/test/multiverse/suites/rails/rails2_app/config/environment.rb +0 -16
  966. data/test/multiverse/suites/rails/rails2_app/config/environments/development.rb +0 -10
  967. data/test/multiverse/suites/rails/rails2_app/config/initializers/load_newrelic_rpm.rb +0 -9
  968. data/test/multiverse/suites/rails/rails2_app/config/preinitializer.rb +0 -25
  969. data/test/multiverse/suites/rails/rails2_app/config/routes.rb +0 -19
  970. data/test/multiverse/suites/rails/rails2_app/db/schema.rb +0 -5
  971. data/test/multiverse/suites/rails/rails3_app/app_rails3_plus.rb +0 -92
  972. data/test/multiverse/suites/rails/request_statistics_test.rb +0 -192
  973. data/test/multiverse/suites/rails/transaction_ignoring_test.rb +0 -41
  974. data/test/multiverse/suites/rails/view_instrumentation_test.rb +0 -254
  975. data/test/multiverse/suites/resque/Envfile +0 -11
  976. data/test/multiverse/suites/resque/Rakefile +0 -3
  977. data/test/multiverse/suites/resque/config/newrelic.yml +0 -19
  978. data/test/multiverse/suites/resque/instrumentation_test.rb +0 -155
  979. data/test/multiverse/suites/resque/resque_marshalling_test.rb +0 -53
  980. data/test/multiverse/suites/sequel/Envfile +0 -34
  981. data/test/multiverse/suites/sequel/config/newrelic.yml +0 -18
  982. data/test/multiverse/suites/sequel/database.rb +0 -57
  983. data/test/multiverse/suites/sequel/sequel_extension_test.rb +0 -142
  984. data/test/multiverse/suites/sequel/sequel_helpers.rb +0 -62
  985. data/test/multiverse/suites/sequel/sequel_plugin_test.rb +0 -230
  986. data/test/multiverse/suites/sequel/sequel_safety_test.rb +0 -30
  987. data/test/multiverse/suites/sidekiq/Envfile +0 -31
  988. data/test/multiverse/suites/sidekiq/after_suite.rb +0 -16
  989. data/test/multiverse/suites/sidekiq/config/newrelic.yml +0 -20
  990. data/test/multiverse/suites/sidekiq/log/.gitkeep +0 -0
  991. data/test/multiverse/suites/sidekiq/sidekiq_instrumentation_test.rb +0 -181
  992. data/test/multiverse/suites/sidekiq/sidekiq_server.rb +0 -31
  993. data/test/multiverse/suites/sidekiq/test_worker.rb +0 -59
  994. data/test/multiverse/suites/sinatra/Envfile +0 -17
  995. data/test/multiverse/suites/sinatra/config/newrelic.yml +0 -21
  996. data/test/multiverse/suites/sinatra/ignoring_test.rb +0 -208
  997. data/test/multiverse/suites/sinatra/nested_middleware_test.rb +0 -39
  998. data/test/multiverse/suites/sinatra/sinatra_classic_test.rb +0 -99
  999. data/test/multiverse/suites/sinatra/sinatra_error_tracing_test.rb +0 -45
  1000. data/test/multiverse/suites/sinatra/sinatra_metric_explosion_test.rb +0 -96
  1001. data/test/multiverse/suites/sinatra/sinatra_modular_test.rb +0 -89
  1002. data/test/multiverse/suites/sinatra/sinatra_parameter_capture_test.rb +0 -65
  1003. data/test/multiverse/suites/sinatra/sinatra_routes_test.rb +0 -49
  1004. data/test/multiverse/suites/sinatra/sinatra_test_cases.rb +0 -137
  1005. data/test/multiverse/suites/typhoeus/Envfile +0 -57
  1006. data/test/multiverse/suites/typhoeus/config/newrelic.yml +0 -18
  1007. data/test/multiverse/suites/typhoeus/typhoeus_test.rb +0 -144
  1008. data/test/multiverse/suites/yajl/Envfile +0 -13
  1009. data/test/multiverse/suites/yajl/config/newrelic.yml +0 -21
  1010. data/test/multiverse/suites/yajl/yajl_test.rb +0 -18
  1011. data/test/multiverse/test/multiverse_test.rb +0 -59
  1012. data/test/multiverse/test/suite_examples/one/a/Envfile +0 -3
  1013. data/test/multiverse/test/suite_examples/one/a/a_test.rb +0 -14
  1014. data/test/multiverse/test/suite_examples/one/a/config/newrelic.yml +0 -22
  1015. data/test/multiverse/test/suite_examples/one/b/Envfile +0 -3
  1016. data/test/multiverse/test/suite_examples/one/b/b_test.rb +0 -14
  1017. data/test/multiverse/test/suite_examples/one/b/config/newrelic.yml +0 -22
  1018. data/test/multiverse/test/suite_examples/three/a/Envfile +0 -2
  1019. data/test/multiverse/test/suite_examples/three/a/fail_test.rb +0 -10
  1020. data/test/multiverse/test/suite_examples/three/b/Envfile +0 -2
  1021. data/test/multiverse/test/suite_examples/three/b/win_test.rb +0 -10
  1022. data/test/multiverse/test/suite_examples/two/a/Envfile +0 -1
  1023. data/test/multiverse/test/suite_examples/two/a/fail_test.rb +0 -10
  1024. data/test/new_relic/FAKECHANGELOG +0 -21
  1025. data/test/new_relic/agent/agent/connect_test.rb +0 -308
  1026. data/test/new_relic/agent/agent/start_test.rb +0 -191
  1027. data/test/new_relic/agent/agent/start_worker_thread_test.rb +0 -74
  1028. data/test/new_relic/agent/agent_logger_test.rb +0 -392
  1029. data/test/new_relic/agent/agent_test.rb +0 -701
  1030. data/test/new_relic/agent/agent_test_controller.rb +0 -84
  1031. data/test/new_relic/agent/apdex_from_server_test.rb +0 -13
  1032. data/test/new_relic/agent/attribute_filter_test.rb +0 -218
  1033. data/test/new_relic/agent/attribute_processing_test.rb +0 -160
  1034. data/test/new_relic/agent/audit_logger_test.rb +0 -213
  1035. data/test/new_relic/agent/autostart_test.rb +0 -110
  1036. data/test/new_relic/agent/busy_calculator_test.rb +0 -98
  1037. data/test/new_relic/agent/commands/agent_command_router_test.rb +0 -256
  1038. data/test/new_relic/agent/commands/agent_command_test.rb +0 -37
  1039. data/test/new_relic/agent/commands/thread_profiler_session_test.rb +0 -215
  1040. data/test/new_relic/agent/commands/xray_session_collection_test.rb +0 -332
  1041. data/test/new_relic/agent/commands/xray_session_test.rb +0 -42
  1042. data/test/new_relic/agent/configuration/default_source_test.rb +0 -226
  1043. data/test/new_relic/agent/configuration/dotted_hash_test.rb +0 -53
  1044. data/test/new_relic/agent/configuration/environment_source_test.rb +0 -201
  1045. data/test/new_relic/agent/configuration/high_security_source_test.rb +0 -83
  1046. data/test/new_relic/agent/configuration/manager_test.rb +0 -460
  1047. data/test/new_relic/agent/configuration/manual_source_test.rb +0 -18
  1048. data/test/new_relic/agent/configuration/orphan_configuration_test.rb +0 -89
  1049. data/test/new_relic/agent/configuration/server_source_test.rb +0 -202
  1050. data/test/new_relic/agent/configuration/yaml_source_test.rb +0 -93
  1051. data/test/new_relic/agent/cross_app_monitor_test.rb +0 -248
  1052. data/test/new_relic/agent/cross_app_tracing_test.rb +0 -71
  1053. data/test/new_relic/agent/custom_event_aggregator_test.rb +0 -88
  1054. data/test/new_relic/agent/database/postgres_explain_obfuscator_test.rb +0 -34
  1055. data/test/new_relic/agent/database/sql_obfuscation_test.rb +0 -59
  1056. data/test/new_relic/agent/database_test.rb +0 -400
  1057. data/test/new_relic/agent/datastores/metric_helper_test.rb +0 -97
  1058. data/test/new_relic/agent/datastores/mongo/metric_translator_test.rb +0 -320
  1059. data/test/new_relic/agent/datastores/mongo/obfuscator_test.rb +0 -91
  1060. data/test/new_relic/agent/datastores/mongo/statement_formatter_test.rb +0 -72
  1061. data/test/new_relic/agent/datastores_test.rb +0 -195
  1062. data/test/new_relic/agent/deprecator_test.rb +0 -52
  1063. data/test/new_relic/agent/encoding_normalizer_test.rb +0 -66
  1064. data/test/new_relic/agent/error_collector_test.rb +0 -595
  1065. data/test/new_relic/agent/event_buffer_test_cases.rb +0 -152
  1066. data/test/new_relic/agent/event_listener_test.rb +0 -70
  1067. data/test/new_relic/agent/event_loop_test.rb +0 -202
  1068. data/test/new_relic/agent/harvester_test.rb +0 -79
  1069. data/test/new_relic/agent/hash_extensions_test.rb +0 -34
  1070. data/test/new_relic/agent/hostname_test.rb +0 -93
  1071. data/test/new_relic/agent/http_clients/uri_util_test.rb +0 -64
  1072. data/test/new_relic/agent/inbound_request_monitor_test.rb +0 -49
  1073. data/test/new_relic/agent/instrumentation/action_controller_subscriber_test.rb +0 -299
  1074. data/test/new_relic/agent/instrumentation/action_view_subscriber_test.rb +0 -239
  1075. data/test/new_relic/agent/instrumentation/active_job_test.rb +0 -20
  1076. data/test/new_relic/agent/instrumentation/active_record_helper_test.rb +0 -77
  1077. data/test/new_relic/agent/instrumentation/active_record_subscriber_test.rb +0 -132
  1078. data/test/new_relic/agent/instrumentation/controller_instrumentation_test.rb +0 -325
  1079. data/test/new_relic/agent/instrumentation/instrumentation_test.rb +0 -14
  1080. data/test/new_relic/agent/instrumentation/metric_frame_test.rb +0 -22
  1081. data/test/new_relic/agent/instrumentation/middleware_proxy_test.rb +0 -257
  1082. data/test/new_relic/agent/instrumentation/middleware_tracing_test.rb +0 -49
  1083. data/test/new_relic/agent/instrumentation/net_instrumentation_test.rb +0 -35
  1084. data/test/new_relic/agent/instrumentation/queue_time_test.rb +0 -103
  1085. data/test/new_relic/agent/instrumentation/rack_test.rb +0 -47
  1086. data/test/new_relic/agent/instrumentation/sequel_helper_test.rb +0 -36
  1087. data/test/new_relic/agent/instrumentation/sinatra/transaction_namer_test.rb +0 -55
  1088. data/test/new_relic/agent/instrumentation/sinatra_test.rb +0 -80
  1089. data/test/new_relic/agent/instrumentation/task_instrumentation_test.rb +0 -196
  1090. data/test/new_relic/agent/javascript_instrumentor_test.rb +0 -340
  1091. data/test/new_relic/agent/memory_logger_test.rb +0 -67
  1092. data/test/new_relic/agent/method_interrobang_test.rb +0 -31
  1093. data/test/new_relic/agent/method_tracer/class_methods/add_method_tracer_test.rb +0 -122
  1094. data/test/new_relic/agent/method_tracer/instance_methods/trace_execution_scoped_test.rb +0 -224
  1095. data/test/new_relic/agent/method_tracer_test.rb +0 -474
  1096. data/test/new_relic/agent/method_visibility_test.rb +0 -90
  1097. data/test/new_relic/agent/mock_scope_listener.rb +0 -27
  1098. data/test/new_relic/agent/new_relic_service_test.rb +0 -1063
  1099. data/test/new_relic/agent/obfuscator_test.rb +0 -77
  1100. data/test/new_relic/agent/parameter_filtering_test.rb +0 -39
  1101. data/test/new_relic/agent/pipe_channel_manager_test.rb +0 -278
  1102. data/test/new_relic/agent/pipe_service_test.rb +0 -145
  1103. data/test/new_relic/agent/rpm_agent_test.rb +0 -104
  1104. data/test/new_relic/agent/rules_engine_test.rb +0 -136
  1105. data/test/new_relic/agent/sampled_buffer_test.rb +0 -106
  1106. data/test/new_relic/agent/sampler_collection_test.rb +0 -90
  1107. data/test/new_relic/agent/sampler_test.rb +0 -66
  1108. data/test/new_relic/agent/samplers/cpu_sampler_test.rb +0 -51
  1109. data/test/new_relic/agent/samplers/vm_sampler_test.rb +0 -349
  1110. data/test/new_relic/agent/shim_agent_test.rb +0 -20
  1111. data/test/new_relic/agent/sized_buffer_test.rb +0 -29
  1112. data/test/new_relic/agent/sql_sampler_test.rb +0 -403
  1113. data/test/new_relic/agent/stats_engine/gc_profiler_test.rb +0 -188
  1114. data/test/new_relic/agent/stats_engine/metric_stats_test.rb +0 -347
  1115. data/test/new_relic/agent/stats_engine/samplers_test.rb +0 -98
  1116. data/test/new_relic/agent/stats_engine/stats_hash_test.rb +0 -198
  1117. data/test/new_relic/agent/stats_engine_test.rb +0 -32
  1118. data/test/new_relic/agent/stats_test.rb +0 -189
  1119. data/test/new_relic/agent/synthetics_event_buffer_test.rb +0 -54
  1120. data/test/new_relic/agent/synthetics_monitor_test.rb +0 -93
  1121. data/test/new_relic/agent/system_info_test.rb +0 -61
  1122. data/test/new_relic/agent/threading/agent_thread_test.rb +0 -149
  1123. data/test/new_relic/agent/threading/backtrace_node_test.rb +0 -184
  1124. data/test/new_relic/agent/threading/backtrace_service_test.rb +0 -595
  1125. data/test/new_relic/agent/threading/fake_thread.rb +0 -43
  1126. data/test/new_relic/agent/threading/thread_profile_test.rb +0 -272
  1127. data/test/new_relic/agent/threading/threaded_test_case.rb +0 -18
  1128. data/test/new_relic/agent/traced_method_stack_test.rb +0 -187
  1129. data/test/new_relic/agent/transaction/attributes_test.rb +0 -276
  1130. data/test/new_relic/agent/transaction/developer_mode_sample_buffer_test.rb +0 -75
  1131. data/test/new_relic/agent/transaction/slowest_sample_buffer_test.rb +0 -67
  1132. data/test/new_relic/agent/transaction/synthetics_sample_buffer_test.rb +0 -38
  1133. data/test/new_relic/agent/transaction/trace_node_test.rb +0 -361
  1134. data/test/new_relic/agent/transaction/trace_test.rb +0 -394
  1135. data/test/new_relic/agent/transaction/xray_sample_buffer_test.rb +0 -71
  1136. data/test/new_relic/agent/transaction_event_aggregator_test.rb +0 -433
  1137. data/test/new_relic/agent/transaction_interrobang_test.rb +0 -33
  1138. data/test/new_relic/agent/transaction_metrics_test.rb +0 -113
  1139. data/test/new_relic/agent/transaction_sample_builder_test.rb +0 -215
  1140. data/test/new_relic/agent/transaction_sampler_test.rb +0 -849
  1141. data/test/new_relic/agent/transaction_state_test.rb +0 -122
  1142. data/test/new_relic/agent/transaction_test.rb +0 -1435
  1143. data/test/new_relic/agent/transaction_timings_test.rb +0 -91
  1144. data/test/new_relic/agent/utilization_data_test.rb +0 -18
  1145. data/test/new_relic/agent/vm/monotonic_gc_profiler_test.rb +0 -42
  1146. data/test/new_relic/agent/vm/mri_vm_test.rb +0 -42
  1147. data/test/new_relic/agent/vm/rubinius_vm_test.rb +0 -69
  1148. data/test/new_relic/agent/vm/snapshot_test.rb +0 -13
  1149. data/test/new_relic/agent/vm_test.rb +0 -48
  1150. data/test/new_relic/agent/worker_loop_test.rb +0 -98
  1151. data/test/new_relic/agent_test.rb +0 -471
  1152. data/test/new_relic/cli/commands/deployments_test.rb +0 -121
  1153. data/test/new_relic/cli/commands/install_test.rb +0 -27
  1154. data/test/new_relic/coerce_test.rb +0 -95
  1155. data/test/new_relic/collection_helper_test.rb +0 -151
  1156. data/test/new_relic/control/class_methods_test.rb +0 -48
  1157. data/test/new_relic/control/frameworks/rails_test.rb +0 -29
  1158. data/test/new_relic/control/instance_methods_test.rb +0 -50
  1159. data/test/new_relic/control/instrumentation_test.rb +0 -56
  1160. data/test/new_relic/control_test.rb +0 -232
  1161. data/test/new_relic/data_container_tests.rb +0 -76
  1162. data/test/new_relic/dependency_detection_test.rb +0 -155
  1163. data/test/new_relic/dispatcher_test.rb +0 -59
  1164. data/test/new_relic/environment_report_test.rb +0 -107
  1165. data/test/new_relic/evil_server.rb +0 -55
  1166. data/test/new_relic/fake_collector.rb +0 -398
  1167. data/test/new_relic/fake_external_server.rb +0 -65
  1168. data/test/new_relic/fake_instance_metadata_service.rb +0 -45
  1169. data/test/new_relic/fake_rpm_site.rb +0 -35
  1170. data/test/new_relic/fake_server.rb +0 -104
  1171. data/test/new_relic/filtering_test_app.rb +0 -19
  1172. data/test/new_relic/framework_test.rb +0 -58
  1173. data/test/new_relic/http_client_test_cases.rb +0 -621
  1174. data/test/new_relic/json_wrapper_test.rb +0 -32
  1175. data/test/new_relic/language_support_test.rb +0 -74
  1176. data/test/new_relic/latest_changes_test.rb +0 -45
  1177. data/test/new_relic/license_test.rb +0 -126
  1178. data/test/new_relic/load_test.rb +0 -15
  1179. data/test/new_relic/local_environment_test.rb +0 -103
  1180. data/test/new_relic/marshalling_test_cases.rb +0 -140
  1181. data/test/new_relic/metric_data_test.rb +0 -191
  1182. data/test/new_relic/metric_parser/metric_parser_test.rb +0 -17
  1183. data/test/new_relic/metric_spec_test.rb +0 -145
  1184. data/test/new_relic/multiverse_helpers.rb +0 -271
  1185. data/test/new_relic/noticed_error_test.rb +0 -197
  1186. data/test/new_relic/rack/agent_hooks_test.rb +0 -44
  1187. data/test/new_relic/rack/agent_middleware_test.rb +0 -32
  1188. data/test/new_relic/rack/browser_monitoring_test.rb +0 -197
  1189. data/test/new_relic/rack/deferred_instrumentation_test.rb +0 -33
  1190. data/test/new_relic/rack/developer_mode/segment_summary_test.rb +0 -96
  1191. data/test/new_relic/rack/developer_mode_helper_test.rb +0 -136
  1192. data/test/new_relic/rack/developer_mode_test.rb +0 -93
  1193. data/test/new_relic/rack/error_collector_test.rb +0 -77
  1194. data/test/new_relic/transaction_ignoring_test_cases.rb +0 -102
  1195. data/test/new_relic/version_number_test.rb +0 -101
  1196. data/test/performance/README.md +0 -182
  1197. data/test/performance/lib/performance/baseline.rb +0 -36
  1198. data/test/performance/lib/performance/baseline_compare_reporter.rb +0 -103
  1199. data/test/performance/lib/performance/baseline_save_reporter.rb +0 -24
  1200. data/test/performance/lib/performance/console_reporter.rb +0 -66
  1201. data/test/performance/lib/performance/formatting_helpers.rb +0 -22
  1202. data/test/performance/lib/performance/hako_client.rb +0 -31
  1203. data/test/performance/lib/performance/hako_reporter.rb +0 -26
  1204. data/test/performance/lib/performance/instrumentation/cpu_usage.rb +0 -26
  1205. data/test/performance/lib/performance/instrumentation/gc_stats.rb +0 -58
  1206. data/test/performance/lib/performance/instrumentation/perf_tools.rb +0 -30
  1207. data/test/performance/lib/performance/instrumentation/stackprof.rb +0 -46
  1208. data/test/performance/lib/performance/instrumentor.rb +0 -96
  1209. data/test/performance/lib/performance/json_reporter.rb +0 -15
  1210. data/test/performance/lib/performance/platform.rb +0 -37
  1211. data/test/performance/lib/performance/reporting.rb +0 -36
  1212. data/test/performance/lib/performance/result.rb +0 -104
  1213. data/test/performance/lib/performance/runner.rb +0 -221
  1214. data/test/performance/lib/performance/table.rb +0 -105
  1215. data/test/performance/lib/performance/test_case.rb +0 -152
  1216. data/test/performance/lib/performance/timer.rb +0 -40
  1217. data/test/performance/lib/performance.rb +0 -38
  1218. data/test/performance/script/baselines +0 -102
  1219. data/test/performance/script/mega-runner +0 -37
  1220. data/test/performance/script/runner +0 -133
  1221. data/test/performance/suites/active_record.rb +0 -47
  1222. data/test/performance/suites/agent_attributes.rb +0 -62
  1223. data/test/performance/suites/config.rb +0 -35
  1224. data/test/performance/suites/marshalling.rb +0 -156
  1225. data/test/performance/suites/queue_time.rb +0 -21
  1226. data/test/performance/suites/rack_middleware.rb +0 -136
  1227. data/test/performance/suites/rum_autoinsertion.rb +0 -75
  1228. data/test/performance/suites/sql_obfuscation.rb +0 -30
  1229. data/test/performance/suites/startup.rb +0 -12
  1230. data/test/performance/suites/stats_hash.rb +0 -30
  1231. data/test/performance/suites/thread_profiling.rb +0 -116
  1232. data/test/performance/suites/trace_execution_scoped.rb +0 -32
  1233. data/test/performance/suites/transaction_tracing.rb +0 -106
  1234. data/test/script/build_test_gem.sh +0 -57
  1235. data/test/script/ci.sh +0 -170
  1236. data/test/script/ci_agent-tests_runner.sh +0 -82
  1237. data/test/script/ci_bench.sh +0 -52
  1238. data/test/script/ci_multiverse_runner.sh +0 -63
  1239. data/test/script/path_hash.rb +0 -49
  1240. data/test/test_helper.rb +0 -267
  1241. data/ui/helpers/developer_mode_helper.rb +0 -324
  1242. data/ui/helpers/google_pie_chart.rb +0 -53
  1243. data/ui/views/layouts/newrelic_default.rhtml +0 -48
  1244. data/ui/views/newrelic/_explain_plans.rhtml +0 -27
  1245. data/ui/views/newrelic/_sample.rhtml +0 -20
  1246. data/ui/views/newrelic/_segment.rhtml +0 -28
  1247. data/ui/views/newrelic/_segment_limit_message.rhtml +0 -1
  1248. data/ui/views/newrelic/_segment_row.rhtml +0 -12
  1249. data/ui/views/newrelic/_show_sample_detail.rhtml +0 -24
  1250. data/ui/views/newrelic/_show_sample_sql.rhtml +0 -24
  1251. data/ui/views/newrelic/_show_sample_summary.rhtml +0 -3
  1252. data/ui/views/newrelic/_sql_row.rhtml +0 -16
  1253. data/ui/views/newrelic/_stack_trace.rhtml +0 -15
  1254. data/ui/views/newrelic/_table.rhtml +0 -12
  1255. data/ui/views/newrelic/explain_sql.rhtml +0 -43
  1256. data/ui/views/newrelic/file/images/arrow-close.png +0 -0
  1257. data/ui/views/newrelic/file/images/arrow-open.png +0 -0
  1258. data/ui/views/newrelic/file/images/blue_bar.gif +0 -0
  1259. data/ui/views/newrelic/file/images/file_icon.png +0 -0
  1260. data/ui/views/newrelic/file/images/gray_bar.gif +0 -0
  1261. data/ui/views/newrelic/file/images/new-relic-rpm-desktop.gif +0 -0
  1262. data/ui/views/newrelic/file/images/new_relic_rpm_desktop.gif +0 -0
  1263. data/ui/views/newrelic/file/images/textmate.png +0 -0
  1264. data/ui/views/newrelic/file/javascript/jquery-1.4.2.js +0 -6243
  1265. data/ui/views/newrelic/file/javascript/transaction_sample.js +0 -123
  1266. data/ui/views/newrelic/file/stylesheets/style.css +0 -490
  1267. data/ui/views/newrelic/index.rhtml +0 -70
  1268. data/ui/views/newrelic/sample_not_found.rhtml +0 -2
  1269. data/ui/views/newrelic/show_sample.rhtml +0 -81
  1270. data/ui/views/newrelic/threads.rhtml +0 -45
  1271. data/vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection/version.rb +0 -7
  1272. data/vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb +0 -122
  1273. data/vendor/gems/metric_parser-0.1.0.pre1/.specification +0 -116
  1274. data/vendor/gems/metric_parser-0.1.0.pre1/lib/metric_parser.rb +0 -5
  1275. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/action_mailer.rb +0 -18
  1276. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/active_merchant.rb +0 -35
  1277. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/active_record.rb +0 -37
  1278. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/apdex.rb +0 -93
  1279. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/background_transaction.rb +0 -11
  1280. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/client.rb +0 -50
  1281. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller.rb +0 -71
  1282. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller_cpu.rb +0 -47
  1283. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller_ext.rb +0 -21
  1284. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/database.rb +0 -52
  1285. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/database_pool.rb +0 -28
  1286. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/dot_net.rb +0 -32
  1287. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/dot_net_parser.rb +0 -21
  1288. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/errors.rb +0 -15
  1289. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/external.rb +0 -59
  1290. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/frontend.rb +0 -44
  1291. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/gc.rb +0 -24
  1292. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/hibernate_session.rb +0 -11
  1293. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/java.rb +0 -35
  1294. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/java_parser.rb +0 -21
  1295. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/jsp.rb +0 -38
  1296. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/jsp_tag.rb +0 -11
  1297. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/mem_cache.rb +0 -59
  1298. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/metric_parser.rb +0 -138
  1299. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/middleware.rb +0 -34
  1300. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/nested.rb +0 -24
  1301. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/orm.rb +0 -31
  1302. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/other_transaction.rb +0 -44
  1303. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet.rb +0 -11
  1304. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_context_listener.rb +0 -11
  1305. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_filter.rb +0 -11
  1306. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_init.rb +0 -11
  1307. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr.rb +0 -31
  1308. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr_request_handler.rb +0 -19
  1309. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring.rb +0 -58
  1310. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring_controller.rb +0 -10
  1311. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring_view.rb +0 -10
  1312. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/struts_action.rb +0 -24
  1313. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/struts_result.rb +0 -24
  1314. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/version.rb +0 -9
  1315. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/view.rb +0 -74
  1316. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_frontend.rb +0 -22
  1317. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_service.rb +0 -18
  1318. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_transaction.rb +0 -137
  1319. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser.rb +0 -70
@@ -1,21 +1,38 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
2
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
3
+ # frozen_string_literal: true
4
4
 
5
5
  require 'forwardable'
6
+ require_relative '../../constants'
6
7
 
7
8
  module NewRelic
8
9
  module Agent
9
10
  module Configuration
10
-
11
11
  # Helper since default Procs are evaluated in the context of this module
12
12
  def self.value_of(key)
13
- Proc.new do
13
+ proc do
14
14
  NewRelic::Agent.config[key]
15
15
  end
16
16
  end
17
17
 
18
- class Boolean; end
18
+ def self.instrumentation_value_from_boolean(key)
19
+ proc do
20
+ NewRelic::Agent.config[key] ? 'auto' : 'disabled'
21
+ end
22
+ end
23
+
24
+ # Marks the config option as deprecated in the documentation once generated.
25
+ # Does not appear in logs.
26
+ def self.deprecated_description(new_setting, description)
27
+ link_ref = new_setting.to_s.tr('.', '-')
28
+ %{Please see: [#{new_setting}](##{link_ref}). \n\n#{description}}
29
+ end
30
+
31
+ class Boolean
32
+ def self.===(o)
33
+ TrueClass === o or FalseClass === o
34
+ end
35
+ end
19
36
 
20
37
  class DefaultSource
21
38
  attr_reader :defaults
@@ -35,32 +52,55 @@ module NewRelic
35
52
  result
36
53
  end
37
54
 
55
+ def self.default_settings(key)
56
+ ::NewRelic::Agent::Configuration::DEFAULTS[key]
57
+ end
58
+
59
+ def self.value_from_defaults(key, subkey)
60
+ default_settings(key)&.send(:[], subkey)
61
+ end
62
+
63
+ def self.allowlist_for(key)
64
+ value_from_defaults(key, :allowlist)
65
+ end
66
+
67
+ def self.default_for(key)
68
+ value_from_defaults(key, :default)
69
+ end
70
+
38
71
  def self.transform_for(key)
39
- default_settings = ::NewRelic::Agent::Configuration::DEFAULTS[key]
40
- default_settings[:transform] if default_settings
72
+ value_from_defaults(key, :transform)
41
73
  end
42
74
 
43
- def self.config_search_paths
44
- Proc.new {
45
- paths = [
46
- File.join("config","newrelic.yml"),
47
- File.join("newrelic.yml")
48
- ]
75
+ def self.config_search_paths # rubocop:disable Metrics/AbcSize
76
+ proc {
77
+ yaml = 'newrelic.yml'
78
+ config_yaml = File.join('config', yaml)
79
+ erb = 'newrelic.yml.erb'
80
+ config_erb = File.join('config', erb)
81
+
82
+ paths = [config_yaml, yaml, config_erb, erb]
49
83
 
50
84
  if NewRelic::Control.instance.root
51
- paths << File.join(NewRelic::Control.instance.root, "config", "newrelic.yml")
52
- paths << File.join(NewRelic::Control.instance.root, "newrelic.yml")
85
+ paths << File.join(NewRelic::Control.instance.root, config_yaml)
86
+ paths << File.join(NewRelic::Control.instance.root, yaml)
87
+ paths << File.join(NewRelic::Control.instance.root, config_erb)
88
+ paths << File.join(NewRelic::Control.instance.root, erb)
53
89
  end
54
90
 
55
- if ENV["HOME"]
56
- paths << File.join(ENV["HOME"], ".newrelic", "newrelic.yml")
57
- paths << File.join(ENV["HOME"], "newrelic.yml")
91
+ if ENV['HOME']
92
+ paths << File.join(ENV['HOME'], '.newrelic', yaml)
93
+ paths << File.join(ENV['HOME'], yaml)
94
+ paths << File.join(ENV['HOME'], '.newrelic', erb)
95
+ paths << File.join(ENV['HOME'], erb)
58
96
  end
59
97
 
60
98
  # If we're packaged for warbler, we can tell from GEM_HOME
61
- if ENV["GEM_HOME"] && ENV["GEM_HOME"].end_with?(".jar!")
62
- app_name = File.basename(ENV["GEM_HOME"], ".jar!")
63
- paths << File.join(ENV["GEM_HOME"], app_name, "config", "newrelic.yml")
99
+ # the following line needs else branch coverage
100
+ if ENV['GEM_HOME'] && ENV['GEM_HOME'].end_with?('.jar!') # rubocop:disable Style/SafeNavigation
101
+ app_name = File.basename(ENV['GEM_HOME'], '.jar!')
102
+ paths << File.join(ENV['GEM_HOME'], app_name, config_yaml)
103
+ paths << File.join(ENV['GEM_HOME'], app_name, config_erb)
64
104
  end
65
105
 
66
106
  paths
@@ -68,31 +108,30 @@ module NewRelic
68
108
  end
69
109
 
70
110
  def self.config_path
71
- Proc.new {
111
+ proc {
72
112
  found_path = NewRelic::Agent.config[:config_search_paths].detect do |file|
73
- File.expand_path(file) if File.exists? file
113
+ File.expand_path(file) if File.exist?(file)
74
114
  end
75
- found_path || ""
115
+ found_path || NewRelic::EMPTY_STR
76
116
  }
77
117
  end
78
118
 
79
119
  def self.framework
80
- Proc.new {
120
+ proc {
81
121
  case
82
122
  when defined?(::NewRelic::TEST) then :test
83
- when defined?(::Merb) && defined?(::Merb::Plugins) then :merb
84
123
  when defined?(::Rails::VERSION)
85
124
  case Rails::VERSION::MAJOR
86
- when 0..2
87
- :rails
88
125
  when 3
89
126
  :rails3
90
- when 4
91
- :rails4
127
+ when 4..7
128
+ :rails_notifications
92
129
  else
93
- ::NewRelic::Agent.logger.error "Detected unsupported Rails version #{Rails::VERSION::STRING}"
130
+ ::NewRelic::Agent.logger.warn("Detected untested Rails version #{Rails::VERSION::STRING}")
131
+ :rails_notifications
94
132
  end
95
133
  when defined?(::Sinatra) && defined?(::Sinatra::Base) then :sinatra
134
+ when defined?(::Roda) then :roda
96
135
  when defined?(::NewRelic::IA) then :external
97
136
  else :ruby
98
137
  end
@@ -100,59 +139,43 @@ module NewRelic
100
139
  end
101
140
 
102
141
  def self.agent_enabled
103
- Proc.new {
142
+ proc {
104
143
  NewRelic::Agent.config[:enabled] &&
105
- (NewRelic::Agent.config[:developer_mode] || NewRelic::Agent.config[:monitor_mode]) &&
106
- NewRelic::Agent::Autostart.agent_should_start?
144
+ (NewRelic::Agent.config[:test_mode] || NewRelic::Agent.config[:monitor_mode]) &&
145
+ NewRelic::Agent::Autostart.agent_should_start?
107
146
  }
108
147
  end
109
148
 
149
+ DEFAULT_LOG_DIR = 'log/'.freeze
150
+
110
151
  def self.audit_log_path
111
- Proc.new {
112
- File.join(NewRelic::Agent.config[:log_file_path], 'newrelic_audit.log')
152
+ proc {
153
+ log_file_path = NewRelic::Agent.config[:log_file_path]
154
+ wants_stdout = (log_file_path.casecmp(NewRelic::STANDARD_OUT) == 0)
155
+ audit_log_dir = wants_stdout ? DEFAULT_LOG_DIR : log_file_path
156
+
157
+ File.join(audit_log_dir, 'newrelic_audit.log')
113
158
  }
114
159
  end
115
160
 
116
161
  def self.app_name
117
- Proc.new { NewRelic::Control.instance.env }
162
+ proc { NewRelic::Control.instance.env }
118
163
  end
119
164
 
120
165
  def self.dispatcher
121
- Proc.new { NewRelic::Control.instance.local_env.discovered_dispatcher }
122
- end
123
-
124
- def self.marshaller
125
- Proc.new { NewRelic::Agent::NewRelicService::JsonMarshaller.is_supported? ? 'json' : 'pruby' }
126
- end
127
-
128
- # On Rubies with string encodings support (1.9.x+), default to always
129
- # normalize encodings since it's safest and fast. Without that support
130
- # the conversions are too expensive, so only enable if overridden to.
131
- def self.normalize_json_string_encodings
132
- Proc.new { NewRelic::LanguageSupport.supports_string_encodings? }
166
+ proc { NewRelic::Control.instance.local_env.discovered_dispatcher }
133
167
  end
134
168
 
135
169
  def self.thread_profiler_enabled
136
- Proc.new { NewRelic::Agent::Threading::BacktraceService.is_supported? }
137
- end
138
-
139
- # This check supports the js_errors_beta key we've asked clients to
140
- # set. Once JS errors are GA, browser_monitoring.loader can stop
141
- # being dynamic.
142
- def self.browser_monitoring_loader
143
- Proc.new { NewRelic::Agent.config[:js_errors_beta] ? "full" : "rum"}
170
+ proc { NewRelic::Agent::Threading::BacktraceService.is_supported? }
144
171
  end
145
172
 
146
173
  def self.transaction_tracer_transaction_threshold
147
- Proc.new { NewRelic::Agent.config[:apdex_t] * 4 }
148
- end
149
-
150
- def self.port
151
- Proc.new { NewRelic::Agent.config[:ssl] ? 443 : 80 }
174
+ proc { NewRelic::Agent.config[:apdex_t] * 4 }
152
175
  end
153
176
 
154
177
  def self.profiling_available
155
- Proc.new {
178
+ proc {
156
179
  begin
157
180
  require 'ruby-prof'
158
181
  true
@@ -162,6 +185,31 @@ module NewRelic
162
185
  }
163
186
  end
164
187
 
188
+ def self.host
189
+ proc do
190
+ regex = /\A(?<identifier>.+?)x/
191
+ if matches = regex.match(String(NewRelic::Agent.config[:license_key]))
192
+ "collector.#{matches['identifier']}.nr-data.net"
193
+ else
194
+ 'collector.newrelic.com'
195
+ end
196
+ end
197
+ end
198
+
199
+ def self.api_host
200
+ # only used for deployment task
201
+ proc do
202
+ api_version = if NewRelic::Agent.config[:api_key].nil? || NewRelic::Agent.config[:api_key].empty?
203
+ 'rpm'
204
+ else
205
+ 'api'
206
+ end
207
+ api_region = 'eu.' if String(NewRelic::Agent.config[:license_key]).start_with?('eu')
208
+
209
+ "#{api_version}.#{api_region}newrelic.com"
210
+ end
211
+ end
212
+
165
213
  def self.convert_to_regexp_list(raw_value)
166
214
  value_list = convert_to_list(raw_value)
167
215
  value_list.map do |value|
@@ -172,16 +220,63 @@ module NewRelic
172
220
  def self.convert_to_list(value)
173
221
  case value
174
222
  when String
175
- value.split(',')
223
+ value.split(/\s*,\s*/)
176
224
  when Array
177
225
  value
178
226
  else
179
227
  raise ArgumentError.new("Config value '#{value}' couldn't be turned into a list.")
180
228
  end
181
229
  end
230
+
231
+ def self.convert_to_hash(value)
232
+ return value if value.is_a?(Hash)
233
+
234
+ if value.is_a?(String)
235
+ return value.split(',').each_with_object({}) do |item, hash|
236
+ key, value = item.split('=')
237
+ hash[key] = value
238
+ end
239
+ end
240
+
241
+ raise ArgumentError.new(
242
+ "Config value '#{value}' of " \
243
+ "class #{value.class} couldn't be turned into a Hash."
244
+ )
245
+ end
246
+
247
+ SEMICOLON = ';'.freeze
248
+ def self.convert_to_list_on_semicolon(value)
249
+ case value
250
+ when Array then value
251
+ when String then value.split(SEMICOLON)
252
+ else NewRelic::EMPTY_ARRAY
253
+ end
254
+ end
255
+
256
+ def self.convert_to_constant_list(raw_value)
257
+ return NewRelic::EMPTY_ARRAY if raw_value.nil? || raw_value.empty?
258
+
259
+ constants = convert_to_list(raw_value).map! do |class_name|
260
+ const = ::NewRelic::LanguageSupport.constantize(class_name)
261
+ NewRelic::Agent.logger.warn("Ignoring invalid constant '#{class_name}' in #{raw_value}") unless const
262
+ const
263
+ end
264
+ constants.compact!
265
+ constants
266
+ end
267
+
268
+ def self.enforce_fallback(allowed_values: nil, fallback: nil)
269
+ proc do |configured_value|
270
+ if allowed_values.any? { |v| v =~ /#{configured_value}/i }
271
+ configured_value
272
+ else
273
+ fallback
274
+ end
275
+ end
276
+ end
182
277
  end
183
278
 
184
- AUTOSTART_BLACKLISTED_RAKE_TASKS = [
279
+ AUTOSTART_DENYLISTED_RAKE_TASKS = [
185
280
  'about',
186
281
  'assets:clean',
187
282
  'assets:clobber',
@@ -229,1206 +324,2191 @@ module NewRelic
229
324
  'test:uncommitted',
230
325
  'time:zones:all',
231
326
  'tmp:clear',
232
- 'tmp:create'
327
+ 'tmp:create',
328
+ 'webpacker:compile'
233
329
  ].join(',').freeze
234
330
 
331
+ # rubocop:disable Metrics/CollectionLiteralLength
235
332
  DEFAULTS = {
236
- :license_key => {
237
- :default => '',
238
- :public => true,
239
- :type => String,
240
- :allowed_from_server => false,
241
- :description => 'Your New Relic <a href="/docs/accounts-partnerships/accounts/account-setup/license-key">license key</a>.'
242
- },
333
+ # Critical
243
334
  :agent_enabled => {
244
335
  :default => DefaultSource.agent_enabled,
336
+ :documentation_default => true,
245
337
  :public => true,
246
338
  :type => Boolean,
247
339
  :allowed_from_server => false,
248
- :description => 'Enable or disable the agent.'
249
- },
250
- :enabled => {
251
- :default => true,
252
- :public => false,
253
- :type => Boolean,
254
- :aliases => [:enable],
255
- :allowed_from_server => false,
256
- :description => 'Enable or disable the agent.'
340
+ :description => 'If `true`, allows the Ruby agent to run.'
257
341
  },
258
342
  :app_name => {
259
343
  :default => DefaultSource.app_name,
260
344
  :public => true,
261
345
  :type => String,
262
346
  :allowed_from_server => false,
263
- :description => 'Semicolon-delimited list of <a href="/docs/apm/new-relic-apm/installation-and-configuration/naming-your-application">application names</a> to which the agent will report metrics (e.g. \'MyApplication\' or \'MyAppStaging;Instance1\'). For more information, see <a href="/docs/apm/new-relic-apm/installation-and-configuration/naming-your-application">Naming your application</a>.'
264
- },
265
- :monitor_mode => {
266
- :default => value_of(:enabled),
267
- :public => true,
268
- :type => Boolean,
269
- :allowed_from_server => false,
270
- :description => 'Enable or disable the transmission of data to the New Relic <a href="/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>).'
347
+ :transform => DefaultSource.method(:convert_to_list_on_semicolon),
348
+ :description => 'Specify the [application name](/docs/apm/new-relic-apm/installation-configuration/name-your-application) used to aggregate data in the New Relic UI. To report data to [multiple apps at the same time](/docs/apm/new-relic-apm/installation-configuration/using-multiple-names-app), specify a list of names separated by a semicolon `;`. For example, `MyApp` or `MyStagingApp;Instance1`.'
271
349
  },
272
- :developer_mode => {
273
- :default => value_of(:developer),
350
+ :license_key => {
351
+ :default => '',
274
352
  :public => true,
275
- :type => Boolean,
276
- :allowed_from_server => false,
277
- :description => 'Enable or disable developer mode, a local analytics package built into the agent for rack applications. Access developer mode analytics by visiting <b>/newrelic</b> in your application.'
278
- },
279
- :developer => {
280
- :default => false,
281
- :public => false,
282
- :type => Boolean,
353
+ :type => String,
283
354
  :allowed_from_server => false,
284
- :description => 'Alternative method of enabling developer_mode.'
355
+ :exclude_from_reported_settings => true,
356
+ :description => 'Your New Relic <InlinePopover type="licenseKey" />.'
285
357
  },
286
358
  :log_level => {
287
359
  :default => 'info',
288
360
  :public => true,
289
361
  :type => String,
290
362
  :allowed_from_server => false,
291
- :description => 'Log level for agent logging: error, warn, info or debug.'
363
+ :description => 'Sets the level of detail of log messages. Possible log levels, in increasing verbosity, are: `error`, `warn`, `info` or `debug`.'
292
364
  },
293
- :high_security => {
365
+ # General
366
+ :active_support_custom_events_names => {
367
+ :default => [],
368
+ :public => true,
369
+ :type => Array,
370
+ :allowed_from_server => false,
371
+ :description => <<~DESCRIPTION
372
+ An array of ActiveSupport custom event names to subscribe to and instrument. For example,
373
+ - one.custom.event
374
+ - another.event
375
+ - a.third.event
376
+ DESCRIPTION
377
+ },
378
+ :'ai_monitoring.enabled' => {
294
379
  :default => false,
295
380
  :public => true,
296
381
  :type => Boolean,
297
382
  :allowed_from_server => false,
298
- :description => 'Enable or disable <a href="/docs/accounts-partnerships/accounts/security/high-security">high security mode</a>, a suite of security features designed to protect data in an enterprise setting.'
383
+ :description => 'If `false`, all LLM instrumentation (OpenAI only for now) will be disabled and no metrics, events, or spans will be sent. AI Monitoring is automatically disabled if `high_security` mode is enabled.'
299
384
  },
300
- :ssl => {
385
+ :'ai_monitoring.record_content.enabled' => {
301
386
  :default => true,
302
- :allow_nil => true,
303
387
  :public => true,
304
388
  :type => Boolean,
305
389
  :allowed_from_server => false,
306
- :description => 'Enable or disable SSL for transmissions to the New Relic <a href="/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>). Defaults to true in versions 3.5.6 and higher.'
390
+ :description => <<~DESCRIPTION
391
+ If `false`, LLM instrumentation (OpenAI only for now) will not capture input and output content on specific LLM events.
392
+
393
+ The excluded attributes include:
394
+ * `content` from LlmChatCompletionMessage events
395
+ * `input` from LlmEmbedding events
396
+
397
+ This is an optional security setting to prevent recording sensitive data sent to and received from your LLMs.
398
+ DESCRIPTION
307
399
  },
308
- :proxy_host => {
309
- :default => nil,
310
- :allow_nil => true,
400
+ # this is only set via server side config
401
+ :apdex_t => {
402
+ :default => 0.5,
403
+ :public => false,
404
+ :type => Float,
405
+ :allowed_from_server => true,
406
+ :description => 'For agent versions 3.5.0 or higher, [set your Apdex T via the New Relic UI](/docs/apm/new-relic-apm/apdex/changing-your-apdex-settings).'
407
+ },
408
+ :api_key => {
409
+ :default => '',
311
410
  :public => true,
312
411
  :type => String,
313
412
  :allowed_from_server => false,
314
- :description => 'Defines a host for communicating with New Relic via a proxy server.'
413
+ :description => 'Your New Relic <InlinePopover type="userKey" />. Required when using the New Relic REST API v2 to record deployments using the `newrelic deployments` command.'
315
414
  },
316
- :proxy_port => {
317
- :default => 8080,
318
- :allow_nil => true,
415
+ :backport_fast_active_record_connection_lookup => {
416
+ :default => false,
319
417
  :public => true,
320
- :type => Fixnum,
418
+ :type => Boolean,
321
419
  :allowed_from_server => false,
322
- :description => 'Defines a port for communicating with New Relic via a proxy server.'
420
+ :description => 'Backports the faster ActiveRecord connection lookup introduced in Rails 6, which improves agent performance when instrumenting ActiveRecord. Note that this setting may not be compatible with other gems that patch ActiveRecord.'
323
421
  },
324
- :proxy_user => {
422
+ :ca_bundle_path => {
325
423
  :default => nil,
326
424
  :allow_nil => true,
327
425
  :public => true,
328
426
  :type => String,
329
427
  :allowed_from_server => false,
330
- :exclude_from_reported_settings => true,
331
- :description => 'Defines a user for communicating with New Relic via a proxy server.'
428
+ :description => "Manual override for the path to your local CA bundle. This CA bundle will be used to validate the SSL certificate presented by New Relic's data collection service."
332
429
  },
333
- :proxy_pass => {
334
- :default => nil,
335
- :allow_nil => true,
430
+ :capture_memcache_keys => {
431
+ :default => false,
336
432
  :public => true,
337
- :type => String,
338
- :allowed_from_server => false,
339
- :exclude_from_reported_settings => true,
340
- :description => 'Defines a password for communicating with New Relic via a proxy server.'
433
+ :type => Boolean,
434
+ :allowed_from_server => true,
435
+ :description => 'Enable or disable the capture of memcache keys from transaction traces.'
341
436
  },
342
437
  :capture_params => {
343
438
  :default => false,
344
439
  :public => true,
345
440
  :type => Boolean,
346
441
  :allowed_from_server => false,
347
- :description => 'Enable or disable the capture of HTTP request parameters to be attached to transaction traces and traced errors.'
442
+ :description => <<~DESCRIPTION
443
+ When `true`, the agent captures HTTP request parameters and attaches them to transaction traces, traced errors, and [`TransactionError` events](/attribute-dictionary?attribute_name=&events_tids%5B%5D=8241).
444
+
445
+ <Callout variant="caution">
446
+ When using the `capture_params` setting, the Ruby agent will not attempt to filter secret information. `Recommendation:` To filter secret information from request parameters, use the [`attributes.include` setting](/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby) instead. For more information, see the <a href="/docs/agents/ruby-agent/attributes/ruby-attribute-examples#ex_req_params">Ruby attribute examples</a>.
447
+ </Callout>
448
+ DESCRIPTION
449
+ },
450
+ :'clear_transaction_state_after_fork' => {
451
+ :default => false,
452
+ :public => true,
453
+ :type => Boolean,
454
+ :allowed_from_server => false,
455
+ :description => 'If `true`, the agent will clear `Tracer::State` in `Agent.drop_buffered_data`.'
348
456
  },
349
457
  :config_path => {
350
458
  :default => DefaultSource.config_path,
351
459
  :public => true,
352
460
  :type => String,
353
461
  :allowed_from_server => false,
354
- :description => 'Path to <b>newrelic.yml</b>. When omitted the agent will check (in order) <b>config/newrelic.yml</b>, <b>newrelic.yml</b>, <b>$HOME/.newrelic/newrelic.yml</b> and <b>$HOME/newrelic.yml</b>.'
462
+ :description => <<~DESC
463
+ Path to `newrelic.yml`. If undefined, the agent checks the following directories (in order):
464
+ * `config/newrelic.yml`
465
+ * `newrelic.yml`
466
+ * `$HOME/.newrelic/newrelic.yml`
467
+ * `$HOME/newrelic.yml`
468
+ DESC
355
469
  },
356
- :config_search_paths => {
357
- :default => DefaultSource.config_search_paths,
358
- :public => false,
359
- :type => Array,
360
- :allowed_from_server => false,
361
- :description => "An array of candidate locations for the agent's configuration file."
470
+ :'exclude_newrelic_header' => {
471
+ :default => false,
472
+ :public => true,
473
+ :type => Boolean,
474
+ :allowed_from_server => true,
475
+ :description => 'Allows newrelic distributed tracing headers to be suppressed on outbound requests.'
362
476
  },
363
- :dispatcher => {
364
- :default => DefaultSource.dispatcher,
365
- :public => false,
366
- :type => Symbol,
477
+ :force_install_exit_handler => {
478
+ :default => false,
479
+ :public => true,
480
+ :type => Boolean,
367
481
  :allowed_from_server => false,
368
- :description => 'Autodetected application component that reports metrics to New Relic.'
482
+ :description => <<~DESC
483
+ The exit handler that sends all cached data to the collector before shutting down is forcibly installed. \
484
+ This is true even when it detects scenarios where it generally should not be. The known use case for this \
485
+ option is when Sinatra runs as an embedded service within another framework. The agent detects the Sinatra \
486
+ app and skips the `at_exit` handler as a result. Sinatra classically runs the entire application in an \
487
+ `at_exit` block and would otherwise misbehave if the agent's `at_exit` handler was also installed in those \
488
+ circumstances. Note: `send_data_on_exit` should also be set to `true` in tandem with this setting.
489
+ DESC
369
490
  },
370
- :framework => {
371
- :default => DefaultSource.framework,
372
- :public => false,
373
- :type => Symbol,
491
+ :high_security => {
492
+ :default => false,
493
+ :public => true,
494
+ :type => Boolean,
374
495
  :allowed_from_server => false,
375
- :description => 'Autodetected application framework used to enable framework-specific functionality.'
496
+ :description => 'If `true`, enables [high security mode](/docs/accounts-partnerships/accounts/security/high-security). Ensure you understand the implications of high security mode before enabling this setting.'
376
497
  },
377
- :'autostart.blacklisted_constants' => {
378
- :default => 'Rails::Console',
498
+ :labels => {
499
+ :default => '',
379
500
  :public => true,
380
501
  :type => String,
381
502
  :allowed_from_server => false,
382
- :description => 'Defines a comma-delimited list of constants. When these constants are present, the agent will not start automatically (e.g. \'Rails::Console, UninstrumentedBackgroundJob\').'
503
+ :description => 'A dictionary of [label names](/docs/data-analysis/user-interface-functions/labels-categories-organize-your-apps-servers) and values that will be applied to the data sent from this agent. May also be expressed as a semicolon-delimited `;` string of colon-separated `:` pairs. For example, `Server:One;Data Center:Primary`.'
383
504
  },
384
- :'autostart.blacklisted_executables' => {
385
- :default => 'irb,rspec',
505
+ :log_file_name => {
506
+ :default => 'newrelic_agent.log',
386
507
  :public => true,
387
508
  :type => String,
388
509
  :allowed_from_server => false,
389
- :description => 'Defines a comma-delimited list of executables that should not be instrumented by the agent (e.g. \'rake,my_ruby_script.rb\').'
510
+ :description => 'Defines a name for the log file.'
390
511
  },
391
- :'autostart.blacklisted_rake_tasks' => {
392
- :default => AUTOSTART_BLACKLISTED_RAKE_TASKS,
512
+ :log_file_path => {
513
+ :default => DefaultSource::DEFAULT_LOG_DIR,
393
514
  :public => true,
394
515
  :type => String,
395
516
  :allowed_from_server => false,
396
- :description => 'Defines a comma-delimited list of rake tasks that should not be instrumented by the agent (e.g. \'assets:precompile,db:migrate\').'
517
+ :description => 'Defines a path to the agent log file, excluding the filename.'
397
518
  },
398
- :'profiling.available' => {
399
- :default => DefaultSource.profiling_available,
400
- :public => false,
401
- :type => Boolean,
519
+ :marshaller => {
520
+ :default => 'json',
521
+ :public => true,
522
+ :type => String,
402
523
  :allowed_from_server => false,
403
- :description => 'Determines if ruby-prof is available for developer mode profiling.'
524
+ :description => 'Specifies a marshaller for transmitting data to the New Relic [collector](/docs/apm/new-relic-apm/getting-started/glossary#collector). Currently `json` is the only valid value for this setting.'
404
525
  },
405
- :apdex_t => {
406
- :default => 0.5,
526
+ :monitor_mode => {
527
+ :default => value_of(:enabled),
528
+ :documentation_default => true,
407
529
  :public => true,
408
- :type => Float,
409
- :allowed_from_server => true,
410
- :deprecated => true,
411
- :description => 'In versions 3.5.0 and higher, <a href="/docs/apm/new-relic-apm/apdex/changing-your-apdex-settings">set your Apdex T via the New Relic UI</a>. In addition to determining your <a href="/docs/apm/new-relic-apm/apdex/apdex-measuring-user-satisfaction">Apdex score</a>, Apdex T is the threshold at which New Relic will begin alerting. By default the agent will send alerts when the Apdex score drops below 0.5, or when more than half of users are experiencing degraded application performance.'
530
+ :type => Boolean,
531
+ :allowed_from_server => false,
532
+ :description => 'When `true`, the agent transmits data about your app to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector).'
412
533
  },
413
- :'strip_exception_messages.enabled' => {
414
- :default => value_of(:high_security),
534
+ :prepend_active_record_instrumentation => {
535
+ :default => false,
415
536
  :public => true,
416
537
  :type => Boolean,
417
538
  :allowed_from_server => false,
418
- :description => 'Defines whether the agent should strip messages from all exceptions that are not specified in the whitelist. Enabled automatically in <a href="/docs/accounts-partnerships/accounts/security/high-security">high security mode</a>.'
539
+ :description => 'If `true`, uses `Module#prepend` rather than `alias_method` for ActiveRecord instrumentation.'
419
540
  },
420
- :'strip_exception_messages.whitelist' => {
421
- :default => '',
541
+ :proxy_host => {
542
+ :default => nil,
543
+ :allow_nil => true,
422
544
  :public => true,
423
545
  :type => String,
424
546
  :allowed_from_server => false,
425
- :description => 'Defines a comma-delimited list of exceptions from which the agent will not strip messages when <a href="#strip_exception_messages.enabled">strip_exception_messages</a> is enabled (such as \'ImportantException, PreserveMessageException\').'
547
+ :description => 'Defines a host for communicating with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) via a proxy server.'
426
548
  },
427
- :host => {
428
- :default => 'collector.newrelic.com',
429
- :public => false,
549
+ :proxy_pass => {
550
+ :default => nil,
551
+ :allow_nil => true,
552
+ :public => true,
430
553
  :type => String,
431
554
  :allowed_from_server => false,
432
- :description => "URI for the New Relic data collection service."
555
+ :exclude_from_reported_settings => true,
556
+ :description => 'Defines a password for communicating with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) via a proxy server.'
557
+ },
558
+ :proxy_port => {
559
+ :default => 8080,
560
+ :allow_nil => true,
561
+ :public => true,
562
+ :type => Integer,
563
+ :allowed_from_server => false,
564
+ :description => 'Defines a port for communicating with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) via a proxy server.'
433
565
  },
434
- :api_host => {
435
- :default => 'rpm.newrelic.com',
436
- :public => false,
566
+ :proxy_user => {
567
+ :default => nil,
568
+ :allow_nil => true,
569
+ :public => true,
437
570
  :type => String,
438
571
  :allowed_from_server => false,
439
- :description => 'API host for New Relic.'
572
+ :exclude_from_reported_settings => true,
573
+ :description => 'Defines a user for communicating with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) via a proxy server.'
440
574
  },
441
- :port => {
442
- :default => DefaultSource.port,
443
- :public => false,
444
- :type => Fixnum,
575
+ :security_policies_token => {
576
+ :default => '',
577
+ :public => true,
578
+ :type => String,
445
579
  :allowed_from_server => false,
446
- :description => 'Port for the New Relic data collection service.'
580
+ :description => 'Applies Language Agent Security Policy settings.'
447
581
  },
448
- :api_port => {
449
- :default => value_of(:port),
450
- :public => false,
451
- :type => Fixnum,
582
+ :send_data_on_exit => {
583
+ :default => true,
584
+ :public => true,
585
+ :type => Boolean,
452
586
  :allowed_from_server => false,
453
- :description => 'Port for the New Relic API host.'
587
+ :description => 'If `true`, enables the exit handler that sends data to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) before shutting down.'
454
588
  },
455
589
  :sync_startup => {
456
590
  :default => false,
457
591
  :public => true,
458
592
  :type => Boolean,
459
593
  :allowed_from_server => false,
460
- :description => 'Enable or disable synchronous connection to the New Relic data collection service during application startup.'
594
+ :description => 'When set to `true`, forces a synchronous connection to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) during application startup. For very short-lived processes, this helps ensure the New Relic agent has time to report.'
461
595
  },
462
- :send_data_on_exit => {
463
- :default => true,
596
+ :thread_local_tracer_state => {
597
+ :default => false,
464
598
  :public => true,
465
599
  :type => Boolean,
466
600
  :allowed_from_server => false,
467
- :description => 'Enable or disable the exit handler that sends data to the New Relic <a href="/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>) before shutting down.'
468
- },
469
- :post_size_limit => {
470
- :default => 2 * 1024 * 1024, # 2MB
471
- :public => false,
472
- :type => Fixnum,
473
- :allowed_from_server => true,
474
- :description => 'Maximum number of bytes to send to the New Relic data collection service.'
601
+ :description => 'If `true`, tracer state storage is thread-local, otherwise, fiber-local'
475
602
  },
476
603
  :timeout => {
477
604
  :default => 2 * 60, # 2 minutes
478
605
  :public => true,
479
- :type => Fixnum,
606
+ :type => Integer,
480
607
  :allowed_from_server => false,
481
- :description => 'Maximum number of seconds to attempt to contact the New Relic <a href="/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>).'
608
+ :description => 'Defines the maximum number of seconds the agent should spend attempting to connect to the collector.'
482
609
  },
483
- :send_environment_info => {
610
+ # Transaction tracer
611
+ :'transaction_tracer.enabled' => {
484
612
  :default => true,
485
- :public => false,
613
+ :public => true,
486
614
  :type => Boolean,
487
- :allowed_from_server => false,
488
- :description => 'Enable or disable transmission of application environment information to the New Relic data collection service.'
615
+ :allowed_from_server => true,
616
+ :description => 'If `true`, enables collection of [transaction traces](/docs/apm/traces/transaction-traces/transaction-traces).'
489
617
  },
490
- :'resque.use_harvest_lock' => {
491
- :default => false,
492
- :public => false,
618
+ :'transaction_tracer.explain_enabled' => {
619
+ :default => true,
620
+ :public => true,
493
621
  :type => Boolean,
494
- :allowed_from_server => false,
495
- :description => 'Enable or disable synchronizing Resque job forking with New Relic\'s harvest thread. The default is <code>false</code>. This helps prevent Resque jobs from deadlocking, but prevents New Relic from starting new jobs during harvest.'
622
+ :allowed_from_server => true,
623
+ :description => 'If `true`, enables the collection of explain plans in transaction traces. This setting will also apply to explain plans in slow SQL traces if [`slow_sql.explain_enabled`](#slow_sql-explain_enabled) is not set separately.'
496
624
  },
497
- :data_report_period => {
498
- :default => 60,
499
- :public => false,
500
- :type => Fixnum,
625
+ :'transaction_tracer.explain_threshold' => {
626
+ :default => 0.5,
627
+ :public => true,
628
+ :type => Float,
501
629
  :allowed_from_server => true,
502
- :description => 'Number of seconds betwixt connections to the New Relic data collection service. Note that transaction events have a separate report period, specified by data_report_periods.analytic_event_data.'
630
+ :description => 'Threshold (in seconds) above which the agent will collect explain plans. Relevant only when [`explain_enabled`](#transaction_tracer.explain_enabled) is true.'
503
631
  },
504
- :'data_report_periods.analytic_event_data' => {
505
- :default => 60,
506
- :public => false,
507
- :type => Fixnum,
508
- :dynamic_name => true,
632
+ :'transaction_tracer.limit_segments' => {
633
+ :default => 4000,
634
+ :public => true,
635
+ :type => Integer,
509
636
  :allowed_from_server => true,
510
- :description => 'Number of seconds between connections to the New Relic data collection service for sending transaction event data.'
637
+ :description => 'Maximum number of transaction trace nodes to record in a single transaction trace.'
511
638
  },
512
- :keep_retrying => {
513
- :default => true,
514
- :public => false,
639
+ :'transaction_tracer.record_redis_arguments' => {
640
+ :default => false,
641
+ :public => true,
515
642
  :type => Boolean,
516
- :deprecated => true,
517
643
  :allowed_from_server => false,
518
- :description => 'Enable or disable retrying failed connections to the New Relic data collection service.'
644
+ :description => 'If `true`, the agent records Redis command arguments in transaction traces.'
519
645
  },
520
- :force_reconnect => {
521
- :default => false,
522
- :public => false,
646
+ :'transaction_tracer.record_sql' => {
647
+ :default => 'obfuscated',
648
+ :public => true,
649
+ :type => String,
650
+ :allowed_from_server => true,
651
+ :description => 'Obfuscation level for SQL queries reported in transaction trace nodes.
652
+
653
+ By default, this is set to `obfuscated`, which strips out the numeric and string literals.
654
+
655
+ - If you do not want the agent to capture query information, set this to `none`.
656
+ - If you want the agent to capture all query information in its original form, set this to `raw`.
657
+ - When you enable [high security mode](/docs/agents/manage-apm-agents/configuration/high-security-mode), this is automatically set to `obfuscated`.'
658
+ },
659
+
660
+ :'transaction_tracer.stack_trace_threshold' => {
661
+ :default => 0.5,
662
+ :public => true,
663
+ :type => Float,
664
+ :allowed_from_server => true,
665
+ :description => 'Specify a threshold in seconds. The agent includes stack traces in transaction trace nodes when the stack trace duration exceeds this threshold.'
666
+ },
667
+ :'transaction_tracer.transaction_threshold' => {
668
+ :default => DefaultSource.transaction_tracer_transaction_threshold,
669
+ :public => true,
670
+ :type => Float,
671
+ :allowed_from_server => true,
672
+ :description => 'Specify a threshold in seconds. Transactions with a duration longer than this threshold are eligible for transaction traces. Specify a float value or the string `apdex_f`.'
673
+ },
674
+ # Error collector
675
+ :'error_collector.ignore_classes' => {
676
+ :default => ['ActionController::RoutingError', 'Sinatra::NotFound'],
677
+ :public => true,
678
+ :type => Array,
679
+ :allowed_from_server => true,
680
+ :dynamic_name => true,
681
+ :description => <<~DESCRIPTION
682
+ A list of error classes that the agent should ignore.
683
+
684
+ <Callout variant="caution">
685
+ This option can't be set via environment variable.
686
+ </Callout>
687
+ DESCRIPTION
688
+ },
689
+ :'error_collector.capture_events' => {
690
+ :default => value_of(:'error_collector.enabled'),
691
+ :documentation_default => true,
692
+ :public => true,
523
693
  :type => Boolean,
524
- :allowed_from_server => false,
525
- :description => 'Force a new connection to the server before running the worker loop. Creates a separate agent run and is recorded as a separate instance by the New Relic data collection service.'
694
+ :allowed_from_server => true,
695
+ :dynamic_name => true,
696
+ :description => 'If `true`, the agent collects [`TransactionError` events](/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights).'
526
697
  },
527
- :report_instance_busy => {
698
+ :'error_collector.enabled' => {
528
699
  :default => true,
529
- :public => false,
700
+ :public => true,
530
701
  :type => Boolean,
531
- :allowed_from_server => false,
532
- :description => 'Enable or disable transmission of metrics recording the percentage of time application instances spend servicing requests (duty cycle metrics).'
702
+ :allowed_from_server => true,
703
+ :description => 'If `true`, the agent captures traced errors and error count metrics.'
533
704
  },
534
- :log_file_name => {
535
- :default => 'newrelic_agent.log',
705
+ :'error_collector.expected_classes' => {
706
+ :default => [],
536
707
  :public => true,
537
- :type => String,
538
- :allowed_from_server => false,
539
- :description => 'Defines a name for the log file.'
708
+ :type => Array,
709
+ :allowed_from_server => true,
710
+ :dynamic_name => true,
711
+ :description => <<~DESCRIPTION
712
+ A list of error classes that the agent should treat as expected.
713
+
714
+ <Callout variant="caution">
715
+ This option can't be set via environment variable.
716
+ </Callout>
717
+ DESCRIPTION
540
718
  },
541
- :log_file_path => {
542
- :default => 'log/',
719
+ :'error_collector.expected_messages' => {
720
+ :default => {},
721
+ :public => true,
722
+ :type => Hash,
723
+ :allowed_from_server => true,
724
+ :dynamic_name => true,
725
+ :description => <<~DESCRIPTION
726
+ A map of error classes to a list of messages. When an error of one of the classes specified here occurs, if its error message contains one of the strings corresponding to it here, that error will be treated as expected.
727
+
728
+ <Callout variant="caution">
729
+ This option can't be set via environment variable.
730
+ </Callout>
731
+ DESCRIPTION
732
+ },
733
+ :'error_collector.expected_status_codes' => {
734
+ :default => '',
543
735
  :public => true,
544
736
  :type => String,
545
- :allowed_from_server => false,
546
- :description => 'Defines a path to the agent log file, excluding the filename.'
737
+ :allowed_from_server => true,
738
+ :dynamic_name => true,
739
+ :description => 'A comma separated list of status codes, possibly including ranges. Errors associated with these status codes, where applicable, will be treated as expected.'
547
740
  },
548
- :'audit_log.enabled' => {
549
- :default => false,
741
+
742
+ :'error_collector.ignore_messages' => {
743
+ :default => {},
550
744
  :public => true,
551
- :type => Boolean,
552
- :allowed_from_server => false,
553
- :description => 'Enable or disable the audit log, a log of communications with the New Relic <a href="/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>).'
745
+ :type => Hash,
746
+ :allowed_from_server => true,
747
+ :dynamic_name => true,
748
+ :description => <<~DESCRIPTION
749
+ A map of error classes to a list of messages. When an error of one of the classes specified here occurs, if its error message contains one of the strings corresponding to it here, that error will be ignored.
750
+
751
+ <Callout variant="caution">
752
+ This option can't be set via environment variable.
753
+ </Callout>
754
+ DESCRIPTION
554
755
  },
555
- :'audit_log.path' => {
556
- :default => DefaultSource.audit_log_path,
756
+ :'error_collector.ignore_status_codes' => {
757
+ :default => '',
557
758
  :public => true,
558
759
  :type => String,
559
- :allowed_from_server => false,
560
- :description => 'Specifies a path to the audit log file (including the filename).'
760
+ :allowed_from_server => true,
761
+ :dynamic_name => true,
762
+ :description => 'A comma separated list of status codes, possibly including ranges. Errors associated with these status codes, where applicable, will be ignored.'
561
763
  },
562
- :'audit_log.endpoints' => {
563
- :default => [".*"],
764
+ :'error_collector.max_backtrace_frames' => {
765
+ :default => 50,
564
766
  :public => true,
565
- :type => Array,
767
+ :type => Integer,
566
768
  :allowed_from_server => false,
567
- :transform => DefaultSource.method(:convert_to_regexp_list),
568
- :description => 'List of allowed endpoints to include in audit log'
769
+ :description => 'Defines the maximum number of frames in an error backtrace. Backtraces over this amount are truncated in the middle, preserving the beginning and the end of the stack trace.'
569
770
  },
570
- :disable_samplers => {
571
- :default => false,
771
+ :'error_collector.max_event_samples_stored' => {
772
+ :default => 100,
773
+ :public => true,
774
+ :type => Integer,
775
+ :allowed_from_server => true,
776
+ :description => 'Defines the maximum number of [`TransactionError` events](/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights) reported per harvest cycle.'
777
+ },
778
+ # Browser monitoring
779
+ :'browser_monitoring.auto_instrument' => {
780
+ :default => value_of(:'rum.enabled'),
781
+ :documentation_default => true,
572
782
  :public => true,
573
783
  :type => Boolean,
574
- :allowed_from_server => false,
575
- :description => 'Enable or disable the collection of sampler metrics. Sampler metrics are metrics that are not event-based (such as CPU time or memory usage).'
784
+ :allowed_from_server => true,
785
+ :description => 'If `true`, enables [auto-injection](/docs/browser/new-relic-browser/installation-configuration/adding-apps-new-relic-browser#select-apm-app) of the JavaScript header for page load timing (sometimes referred to as real user monitoring or RUM).'
576
786
  },
577
- :disable_resque => {
578
- :default => false,
787
+ # CSP nonce
788
+ :'browser_monitoring.content_security_policy_nonce' => {
789
+ :default => value_of(:'rum.enabled'),
790
+ :documentation_default => true,
579
791
  :public => true,
580
792
  :type => Boolean,
581
793
  :allowed_from_server => false,
582
- :description => 'Enable or disable <a href="/docs/agents/ruby-agent/background-jobs/resque-instrumentation">Resque instrumentation</a>.'
794
+ :description => 'If `true`, enables auto-injection of [Content Security Policy Nonce](https://content-security-policy.com/nonce/) in browser monitoring scripts. For now, auto-injection only works with Rails 5.2+.'
583
795
  },
584
- :disable_sidekiq => {
585
- :default => false,
796
+ # Transaction events
797
+ :'transaction_events.enabled' => {
798
+ :default => true,
586
799
  :public => true,
587
800
  :type => Boolean,
588
- :allowed_from_server => false,
589
- :description => 'Enable or disable <a href="/docs/agents/ruby-agent/background-jobs/sidekiq-instrumentation">Sidekiq instrumentation</a>.'
801
+ :allowed_from_server => true,
802
+ :description => 'If `true`, enables transaction event sampling.'
590
803
  },
591
- :disable_dj => {
592
- :default => false,
804
+ :'transaction_events.max_samples_stored' => {
805
+ :default => 1200,
806
+ :public => true,
807
+ :type => Integer,
808
+ :allowed_from_server => true,
809
+ :description => 'Defines the maximum number of transaction events reported from a single harvest.'
810
+ },
811
+ # Application logging
812
+ :'application_logging.enabled' => {
813
+ :default => true,
593
814
  :public => true,
594
815
  :type => Boolean,
595
816
  :allowed_from_server => false,
596
- :description => 'Enable or disable <a href="/docs/agents/ruby-agent/background-jobs/delayedjob">Delayed::Job instrumentation</a>.'
817
+ :description => 'If `true`, enables log decoration and the collection of log events and metrics.'
597
818
  },
598
- :disable_sinatra => {
599
- :default => false,
819
+ :'application_logging.forwarding.enabled' => {
820
+ :default => true,
600
821
  :public => true,
601
822
  :type => Boolean,
602
823
  :allowed_from_server => false,
603
- :description => 'Enable or disable <a href="/docs/agents/ruby-agent/frameworks/sinatra-support">Sinatra instrumentation</a>.'
824
+ :description => 'If `true`, the agent captures log records emitted by your application.'
604
825
  },
605
- :disable_sinatra_auto_middleware => {
606
- :default => false,
826
+ :'application_logging.forwarding.log_level' => {
827
+ :default => 'debug',
607
828
  :public => true,
608
- :type => Boolean,
829
+ :type => String,
609
830
  :allowed_from_server => false,
610
- :description => 'Enable or disable agent middleware for Sinatra. This middleware is responsible for Sinatra advanced feature support; for example, cross application tracing, page load timing (sometimes referred to as real user monitoring or RUM), and error collection.'
831
+ :allowlist => %w[debug info warn error fatal unknown DEBUG INFO WARN ERROR FATAL UNKNOWN],
832
+ :description => <<~DESCRIPTION
833
+ Sets the minimum level a log event must have to be forwarded to New Relic.
834
+
835
+ This is based on the integer values of Ruby's `Logger::Severity` constants: https://github.com/ruby/ruby/blob/master/lib/logger/severity.rb
836
+
837
+ The intention is to forward logs with the level given to the configuration, as well as any logs with a higher level of severity.
838
+
839
+ For example, setting this value to "debug" will forward all log events to New Relic. Setting this value to "error" will only forward log events with the levels "error", "fatal", and "unknown".
840
+
841
+ Valid values (ordered lowest to highest):
842
+ * "debug"
843
+ * "info"
844
+ * "warn"
845
+ * "error"
846
+ * "fatal"
847
+ * "unknown"
848
+ DESCRIPTION
611
849
  },
612
- :disable_view_instrumentation => {
613
- :default => false,
850
+ :'application_logging.forwarding.custom_attributes' => {
851
+ :default => {},
614
852
  :public => true,
615
- :type => Boolean,
853
+ :type => Hash,
854
+ :transform => DefaultSource.method(:convert_to_hash),
616
855
  :allowed_from_server => false,
617
- :description => 'Enable or disable view instrumentation.'
856
+ :description => 'A hash with key/value pairs to add as custom attributes to all log events forwarded to New Relic. If sending using an environment variable, the value must be formatted like: "key1=value1,key2=value2"'
618
857
  },
619
- :disable_backtrace_cleanup => {
858
+ :'application_logging.forwarding.max_samples_stored' => {
859
+ :default => 10000,
860
+ :public => true,
861
+ :type => Integer,
862
+ :allowed_from_server => true,
863
+ :description => 'Defines the maximum number of log records to buffer in memory at a time.',
864
+ :dynamic_name => true
865
+ },
866
+ :'application_logging.local_decorating.enabled' => {
620
867
  :default => false,
621
868
  :public => true,
622
869
  :type => Boolean,
623
870
  :allowed_from_server => false,
624
- :description => 'Defines whether the agent will remove <code>newrelic_rpm</code> from backtraces.'
871
+ :description => 'If `true`, the agent decorates logs with metadata to link to entities, hosts, traces, and spans.'
625
872
  },
626
- :disable_harvest_thread => {
627
- :default => false,
628
- :public => false,
873
+ :'application_logging.metrics.enabled' => {
874
+ :default => true,
875
+ :public => true,
629
876
  :type => Boolean,
630
- :allowed_from_server => false,
631
- :description => 'Enable or disable the harvest thread.'
877
+ :allowed_from_server => true,
878
+ :description => 'If `true`, the agent captures metrics related to logging for your application.'
632
879
  },
633
- :skip_ar_instrumentation => {
880
+ # Attributes
881
+ :'allow_all_headers' => {
634
882
  :default => false,
635
- :public => false,
883
+ :public => true,
636
884
  :type => Boolean,
637
885
  :allowed_from_server => false,
638
- :description => 'Enable or disable active record instrumentation.'
886
+ :description => 'If `true`, enables capture of all HTTP request headers for all destinations.'
639
887
  },
640
- :disable_activerecord_instrumentation => {
641
- :default => value_of(:skip_ar_instrumentation),
888
+ :'attributes.enabled' => {
889
+ :default => true,
642
890
  :public => true,
643
891
  :type => Boolean,
644
892
  :allowed_from_server => false,
645
- :description => 'Enable or disable active record instrumentation.'
893
+ :description => 'If `true`, enables capture of attributes for all destinations.'
646
894
  },
647
- :disable_data_mapper => {
648
- :default => false,
895
+ :'attributes.exclude' => {
896
+ :default => [],
649
897
  :public => true,
650
- :type => Boolean,
898
+ :type => Array,
651
899
  :allowed_from_server => false,
652
- :description => 'Enable or disable DataMapper instrumentation.'
900
+ :transform => DefaultSource.method(:convert_to_list),
901
+ :description => 'Prefix of attributes to exclude from all destinations. Allows `*` as wildcard at end.'
653
902
  },
654
- :disable_activejob => {
655
- :default => false,
903
+ :'attributes.include' => {
904
+ :default => [],
656
905
  :public => true,
657
- :type => Boolean,
658
- :dynamic_name => true,
906
+ :type => Array,
659
907
  :allowed_from_server => false,
660
- :description => 'Enable or disable ActiveJob instrumentation.'
908
+ :transform => DefaultSource.method(:convert_to_list),
909
+ :description => 'Prefix of attributes to include in all destinations. Allows `*` as wildcard at end.'
661
910
  },
662
- :disable_memcached => {
663
- :default => value_of(:disable_memcache_instrumentation),
911
+ :'browser_monitoring.attributes.enabled' => {
912
+ :default => false,
664
913
  :public => true,
665
914
  :type => Boolean,
666
915
  :allowed_from_server => false,
667
- :description => 'Enable or disable instrumentation for the memcached gem.'
916
+ :description => 'If `true`, the agent captures attributes from browser monitoring.'
668
917
  },
669
- :disable_memcache_client => {
670
- :default => value_of(:disable_memcache_instrumentation),
918
+ :'browser_monitoring.attributes.exclude' => {
919
+ :default => [],
671
920
  :public => true,
672
- :type => Boolean,
921
+ :type => Array,
673
922
  :allowed_from_server => false,
674
- :description => 'Enable or disable instrumenation for the memcache-client gem.'
923
+ :transform => DefaultSource.method(:convert_to_list),
924
+ :description => 'Prefix of attributes to exclude from browser monitoring. Allows `*` as wildcard at end.'
675
925
  },
676
- :disable_dalli => {
677
- :default => value_of(:disable_memcache_instrumentation),
926
+ :'browser_monitoring.attributes.include' => {
927
+ :default => [],
678
928
  :public => true,
679
- :type => Boolean,
929
+ :type => Array,
680
930
  :allowed_from_server => false,
681
- :description => 'Enable or disable instrumentation for the dalli gem.'
931
+ :transform => DefaultSource.method(:convert_to_list),
932
+ :description => 'Prefix of attributes to include in browser monitoring. Allows `*` as wildcard at end.'
682
933
  },
683
- :disable_dalli_cas_client => {
684
- :default => value_of(:disable_memcache_instrumentation),
934
+ :'error_collector.attributes.enabled' => {
935
+ :default => true,
685
936
  :public => true,
686
937
  :type => Boolean,
687
938
  :allowed_from_server => false,
688
- :description => "Enable or disable instrumentation for the dalli gem's additional CAS client support."
939
+ :description => 'If `true`, the agent captures attributes from error collection.'
689
940
  },
690
- :disable_memcache_instrumentation => {
691
- :default => false,
941
+ :'error_collector.attributes.exclude' => {
942
+ :default => [],
692
943
  :public => true,
693
- :type => Boolean,
944
+ :type => Array,
694
945
  :allowed_from_server => false,
695
- :description => 'Enable or disable memcache instrumentation.'
946
+ :transform => DefaultSource.method(:convert_to_list),
947
+ :description => 'Prefix of attributes to exclude from error collection. Allows `*` as wildcard at end.'
696
948
  },
697
- :disable_gc_profiler => {
698
- :default => false,
949
+ :'error_collector.attributes.include' => {
950
+ :default => [],
699
951
  :public => true,
700
- :type => Boolean,
952
+ :type => Array,
701
953
  :allowed_from_server => false,
702
- :description => 'Enable or disable the use of GC::Profiler to measure time spent in garbage collection'
954
+ :transform => DefaultSource.method(:convert_to_list),
955
+ :description => 'Prefix of attributes to include in error collection. Allows `*` as wildcard at end.'
703
956
  },
704
- :'sidekiq.capture_params' => {
705
- :default => false,
957
+ :'span_events.attributes.enabled' => {
958
+ :default => true,
706
959
  :public => true,
707
960
  :type => Boolean,
708
961
  :allowed_from_server => false,
709
- :dynamic_name => true,
710
- :deprecated => true,
711
- :description => 'Enable or disable the capture of job arguments for transaction traces and traced errors in Sidekiq.'
962
+ :description => 'If `true`, the agent captures attributes on span events.'
712
963
  },
713
- :'resque.capture_params' => {
714
- :default => false,
964
+ :'span_events.attributes.exclude' => {
965
+ :default => [],
715
966
  :public => true,
716
- :type => Boolean,
967
+ :type => Array,
717
968
  :allowed_from_server => false,
718
- :dynamic_name => true,
719
- :deprecated => true,
720
- :description => 'Enable or disable the capture of job arguments for transaction traces and traced errors in Resque.'
969
+ :transform => DefaultSource.method(:convert_to_list),
970
+ :description => 'Prefix of attributes to exclude from span events. Allows `*` as wildcard at end.'
721
971
  },
722
- :capture_memcache_keys => {
723
- :default => false,
972
+ :'span_events.attributes.include' => {
973
+ :default => [],
724
974
  :public => true,
725
- :type => Boolean,
726
- :allowed_from_server => true,
727
- :description => 'Enable or disable the capture of memcache keys from transaction traces.'
975
+ :type => Array,
976
+ :allowed_from_server => false,
977
+ :transform => DefaultSource.method(:convert_to_list),
978
+ :description => 'Prefix of attributes to include on span events. Allows `*` as wildcard at end.'
728
979
  },
729
- :'transaction_tracer.enabled' => {
980
+ :'transaction_events.attributes.enabled' => {
730
981
  :default => true,
731
982
  :public => true,
732
983
  :type => Boolean,
733
- :allowed_from_server => true,
734
- :description => 'Enable or disable <a href="/docs/apm/traces/transaction-traces/transaction-traces">transaction traces</a>.'
984
+ :allowed_from_server => false,
985
+ :description => 'If `true`, the agent captures attributes from transaction events.'
735
986
  },
736
- :'transaction_tracer.transaction_threshold' => {
737
- :default => DefaultSource.transaction_tracer_transaction_threshold,
987
+ :'transaction_events.attributes.exclude' => {
988
+ :default => [],
738
989
  :public => true,
739
- :type => Float,
740
- :allowed_from_server => true,
741
- :description => 'The agent will collect traces for transactions that exceed this time threshold (in seconds). Specify a float value or <code><a href="/docs/apm/new-relic-apm/getting-started/glossary#apdex_f">apdex_f</a></code>.'
990
+ :type => Array,
991
+ :allowed_from_server => false,
992
+ :transform => DefaultSource.method(:convert_to_list),
993
+ :description => 'Prefix of attributes to exclude from transaction events. Allows `*` as wildcard at end.'
742
994
  },
743
- :'transaction_tracer.record_sql' => {
744
- :default => 'obfuscated',
995
+ :'transaction_events.attributes.include' => {
996
+ :default => [],
745
997
  :public => true,
746
- :type => String,
747
- :allowed_from_server => true,
748
- :description => 'Obfuscation level for SQL queries reported in transaction trace nodes. Valid options are <code>obfuscated</code>, <code>raw</code>, <code>none</code>.'
998
+ :type => Array,
999
+ :allowed_from_server => false,
1000
+ :transform => DefaultSource.method(:convert_to_list),
1001
+ :description => 'Prefix of attributes to include in transaction events. Allows `*` as wildcard at end.'
749
1002
  },
750
- :'transaction_tracer.capture_attributes' => {
1003
+ :'transaction_segments.attributes.enabled' => {
751
1004
  :default => true,
752
1005
  :public => true,
753
1006
  :type => Boolean,
754
- :deprecated => true,
755
1007
  :allowed_from_server => false,
756
- :description => 'Use transaction_tracer.attributes.enabled instead.'
1008
+ :description => 'If `true`, the agent captures attributes on transaction segments.'
757
1009
  },
758
- :'transaction_tracer.explain_threshold' => {
759
- :default => 0.5,
1010
+ :'transaction_segments.attributes.exclude' => {
1011
+ :default => [],
760
1012
  :public => true,
761
- :type => Float,
762
- :allowed_from_server => true,
763
- :description => 'Threshold (in seconds) above which the agent will collect explain plans. Relevant only when <code><a href="#transaction_tracer.explain_enabled">explain_enabled</a></code> is true.'
1013
+ :type => Array,
1014
+ :allowed_from_server => false,
1015
+ :transform => DefaultSource.method(:convert_to_list),
1016
+ :description => 'Prefix of attributes to exclude from transaction segments. Allows `*` as wildcard at end.'
764
1017
  },
765
- :'transaction_tracer.explain_enabled' => {
1018
+ :'transaction_segments.attributes.include' => {
1019
+ :default => [],
1020
+ :public => true,
1021
+ :type => Array,
1022
+ :allowed_from_server => false,
1023
+ :transform => DefaultSource.method(:convert_to_list),
1024
+ :description => 'Prefix of attributes to include on transaction segments. Allows `*` as wildcard at end.'
1025
+ },
1026
+ :'transaction_tracer.attributes.enabled' => {
766
1027
  :default => true,
767
1028
  :public => true,
768
1029
  :type => Boolean,
769
- :allowed_from_server => true,
770
- :description => 'Enable or disable the collection of explain plans in transaction traces. This setting will also apply to explain plans in Slow SQL traces if slow_sql.explain_enabled is not set separately.'
1030
+ :allowed_from_server => false,
1031
+ :description => 'If `true`, the agent captures attributes from transaction traces.'
771
1032
  },
772
- :'transaction_tracer.stack_trace_threshold' => {
773
- :default => 0.5,
1033
+ :'transaction_tracer.attributes.exclude' => {
1034
+ :default => [],
774
1035
  :public => true,
775
- :type => Float,
776
- :allowed_from_server => true,
777
- :description => 'Stack traces will be included in transaction trace nodes when their duration exceeds this threshold.'
1036
+ :type => Array,
1037
+ :allowed_from_server => false,
1038
+ :transform => DefaultSource.method(:convert_to_list),
1039
+ :description => 'Prefix of attributes to exclude from transaction traces. Allows `*` as wildcard at end.'
778
1040
  },
779
- :'transaction_tracer.limit_segments' => {
780
- :default => 4000,
1041
+ :'transaction_tracer.attributes.include' => {
1042
+ :default => [],
781
1043
  :public => true,
782
- :type => Fixnum,
783
- :allowed_from_server => true,
784
- :description => 'Maximum number of transaction trace nodes to record in a single transaction trace.'
1044
+ :type => Array,
1045
+ :allowed_from_server => false,
1046
+ :transform => DefaultSource.method(:convert_to_list),
1047
+ :description => 'Prefix of attributes to include in transaction traces. Allows `*` as wildcard at end.'
785
1048
  },
786
- :disable_sequel_instrumentation => {
1049
+ # Audit log
1050
+ :'audit_log.enabled' => {
787
1051
  :default => false,
788
1052
  :public => true,
789
1053
  :type => Boolean,
790
1054
  :allowed_from_server => false,
791
- :description => 'Enable or disable <a href="/docs/agents/ruby-agent/frameworks/sequel-instrumentation">Sequel instrumentation</a>.'
1055
+ :description => 'If `true`, enables an audit log which logs communications with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector).'
792
1056
  },
793
- :disable_database_instrumentation => {
794
- :default => false,
1057
+ :'audit_log.endpoints' => {
1058
+ :default => ['.*'],
795
1059
  :public => true,
796
- :type => Boolean,
1060
+ :type => Array,
797
1061
  :allowed_from_server => false,
798
- :deprecated => true,
799
- :description => 'Enable or disable Sequel instrumentation. This option is deprecated; instead, use <a href="/docs/agents/ruby-agent/installation-and-configuration/ruby-agent-configuration#disable_sequel_instrumentation"><code>disable_sequel_instrumentation</code></a>'
1062
+ :transform => DefaultSource.method(:convert_to_regexp_list),
1063
+ :description => 'List of allowed endpoints to include in audit log.'
800
1064
  },
801
- :disable_mongo => {
802
- :default => false,
803
- :public => true,
804
- :type => Boolean,
805
- :allowed_from_server => false,
806
- :dynamic_name => true,
807
- :description => 'Defines whether the agent will install <a href="/docs/agents/ruby-agent/frameworks/mongo-instrumentation">instrumentation for the Mongo gem</a>.'
1065
+ :'audit_log.path' => {
1066
+ :default => DefaultSource.audit_log_path,
1067
+ :documentation_default => 'log/newrelic_audit.log',
1068
+ :public => true,
1069
+ :type => String,
1070
+ :allowed_from_server => false,
1071
+ :description => 'Specifies a path to the audit log file (including the filename).'
808
1072
  },
809
- :'slow_sql.enabled' => {
810
- :default => value_of(:'transaction_tracer.enabled'),
1073
+ # Autostart
1074
+ :'autostart.denylisted_constants' => {
1075
+ :default => %w[Rails::Command::ConsoleCommand
1076
+ Rails::Command::CredentialsCommand
1077
+ Rails::Command::Db::System::ChangeCommand
1078
+ Rails::Command::DbConsoleCommand
1079
+ Rails::Command::DestroyCommand
1080
+ Rails::Command::DevCommand
1081
+ Rails::Command::EncryptedCommand
1082
+ Rails::Command::GenerateCommand
1083
+ Rails::Command::InitializersCommand
1084
+ Rails::Command::NotesCommand
1085
+ Rails::Command::RoutesCommand
1086
+ Rails::Command::RunnerCommand
1087
+ Rails::Command::SecretsCommand
1088
+ Rails::Console
1089
+ Rails::DBConsole].join(','),
811
1090
  :public => true,
812
- :type => Boolean,
813
- :allowed_from_server => true,
814
- :description => 'Enable or disable collection of slow SQL queries.'
1091
+ :type => String,
1092
+ :allowed_from_server => false,
1093
+ :description => 'Specify a list of constants that should prevent the agent from starting automatically. Separate individual constants with a comma `,`. For example, `"Rails::Console,UninstrumentedBackgroundJob"`.'
815
1094
  },
816
- :'slow_sql.explain_threshold' => {
817
- :default => value_of(:'transaction_tracer.explain_threshold'),
1095
+ :'autostart.denylisted_executables' => {
1096
+ :default => 'irb,rspec',
818
1097
  :public => true,
819
- :type => Float,
820
- :allowed_from_server => true,
821
- :description => 'Defines a duration threshold, over which the agent will collect explain plans in slow SQL queries.'
1098
+ :type => String,
1099
+ :allowed_from_server => false,
1100
+ :description => 'Defines a comma-delimited list of executables that the agent should not instrument. For example, `"rake,my_ruby_script.rb"`.'
822
1101
  },
823
- :'slow_sql.explain_enabled' => {
824
- :default => value_of(:'transaction_tracer.explain_enabled'),
1102
+ :'autostart.denylisted_rake_tasks' => {
1103
+ :default => AUTOSTART_DENYLISTED_RAKE_TASKS,
1104
+ :public => true,
1105
+ :type => String,
1106
+ :allowed_from_server => false,
1107
+ :description => 'Defines a comma-delimited list of Rake tasks that the agent should not instrument. For example, `"assets:precompile,db:migrate"`.'
1108
+ },
1109
+ # Code level metrics
1110
+ :'code_level_metrics.enabled' => {
1111
+ :default => true,
825
1112
  :public => true,
826
1113
  :type => Boolean,
827
1114
  :allowed_from_server => true,
828
- :description => 'Enable or disable the collection of explain plans in slow SQL queries. If this setting is omitted, the transaction_tracer.explain_enabled setting will be applied as the default setting for explain plans in Slow SQL as well.'
1115
+ :description => "If `true`, the agent will report source code level metrics for traced methods.\nsee: " \
1116
+ 'https://docs.newrelic.com/docs/apm/agents/ruby-agent/features/ruby-codestream-integration/'
829
1117
  },
830
- :'slow_sql.record_sql' => {
831
- :default => value_of(:'transaction_tracer.record_sql'),
1118
+ # Cross application tracer
1119
+ :"cross_application_tracer.enabled" => {
1120
+ :default => false,
832
1121
  :public => true,
833
- :type => String,
1122
+ :type => Boolean,
834
1123
  :allowed_from_server => true,
835
- :description => 'Defines an obfuscation level for slow SQL queries. Valid options are <code>obfuscated</code>, <code>raw</code>, <code>none</code>).'
1124
+ :deprecated => true,
1125
+ :description => deprecated_description(
1126
+ :'distributed_tracing.enabled',
1127
+ 'If `true`, enables [cross-application tracing](/docs/agents/ruby-agent/features/cross-application-tracing-ruby/) when `distributed_tracing.enabled` is set to `false`.'
1128
+ )
836
1129
  },
837
- :'mongo.capture_queries' => {
1130
+ # Custom attributes
1131
+ :'custom_attributes.enabled' => {
838
1132
  :default => true,
839
1133
  :public => true,
840
1134
  :type => Boolean,
841
- :allowed_from_server => true,
842
- :description => 'Enable or disable capturing Mongo queries in transaction traces.'
1135
+ :allowed_from_server => false,
1136
+ :description => 'If `false`, custom attributes will not be sent on events.'
843
1137
  },
844
- :'mongo.obfuscate_queries' => {
1138
+ # Custom events
1139
+ :'custom_insights_events.enabled' => {
845
1140
  :default => true,
846
1141
  :public => true,
847
1142
  :type => Boolean,
848
1143
  :allowed_from_server => true,
849
- :description => 'Enable or disable obfuscation of Mongo queries in transaction traces.'
1144
+ :description => 'If `true`, the agent captures [custom events](/docs/insights/new-relic-insights/adding-querying-data/inserting-custom-events-new-relic-apm-agents).'
850
1145
  },
851
- :'error_collector.enabled' => {
1146
+ :'custom_insights_events.max_samples_stored' => {
1147
+ :default => 3000,
1148
+ :public => true,
1149
+ :type => Integer,
1150
+ :allowed_from_server => true,
1151
+ :dynamic_name => true,
1152
+ :description => <<~DESC
1153
+ * Specify a maximum number of custom events to buffer in memory at a time.'
1154
+ * When configuring the agent for [AI monitoring](/docs/ai-monitoring/intro-to-ai-monitoring), \
1155
+ set to max value `100000`. This ensures the agent captures the maximum amount of LLM events.
1156
+ DESC
1157
+ },
1158
+ # Datastore tracer
1159
+ :'datastore_tracer.database_name_reporting.enabled' => {
852
1160
  :default => true,
853
1161
  :public => true,
854
1162
  :type => Boolean,
855
- :allowed_from_server => true,
856
- :description => 'Enable or disable recording of traced errors and error count metrics.'
1163
+ :allowed_from_server => false,
1164
+ :description => 'If `false`, the agent will not add `database_name` parameter to transaction or slow sql traces.'
857
1165
  },
858
- :'error_collector.capture_attributes' => {
1166
+ :'datastore_tracer.instance_reporting.enabled' => {
859
1167
  :default => true,
860
1168
  :public => true,
861
1169
  :type => Boolean,
862
- :deprecated => true,
863
1170
  :allowed_from_server => false,
864
- :description => 'Use error_collector.attributes.enabled instead.'
1171
+ :description => 'If `false`, the agent will not report datastore instance metrics, nor add `host` or `port_path_or_id` parameters to transaction or slow SQL traces.'
865
1172
  },
866
- :'error_collector.ignore_errors' => {
867
- :default => 'ActionController::RoutingError,Sinatra::NotFound',
1173
+ # Disabling
1174
+ :disable_action_cable_instrumentation => {
1175
+ :default => false,
868
1176
  :public => true,
869
- :type => String,
870
- :allowed_from_server => true,
871
- :description => 'Specifies a comma-delimited list of error classes that the agent should ignore.'
1177
+ :type => Boolean,
1178
+ :allowed_from_server => false,
1179
+ :description => 'If `true`, disables Action Cable instrumentation.'
872
1180
  },
873
- :'rum.enabled' => {
1181
+ # TODO: by subscribing to process_middleware.action_dispatch events,
1182
+ # we duplicate the efforts already performed by non-notifications
1183
+ # based instrumentation. In future, we ought to determine the
1184
+ # extent of the overlap and duplication and end up with only this
1185
+ # notifications based approach existing and the monkey patching
1186
+ # approach removed entirely. NOTE that we will likely not want to
1187
+ # do so until we are okay with dropping support for Rails < v6,
1188
+ # given that these events are available only for v6+.
1189
+ :disable_action_dispatch => {
874
1190
  :default => true,
875
1191
  :public => false,
876
1192
  :type => Boolean,
877
- :allowed_from_server => true,
878
- :description => 'Enable or disable page load timing (sometimes referred to as real user monitoring or RUM).'
879
- },
880
- :browser_key => {
881
- :default => '',
882
- :public => false,
883
- :type => String,
884
- :allowed_from_server => true,
885
- :description => 'Real user monitoring license key for the browser timing header.'
886
- },
887
- :beacon => {
888
- :default => '',
889
- :public => false,
890
- :type => String,
891
- :allowed_from_server => true,
892
- :description => 'Beacon for real user monitoring.'
893
- },
894
- :error_beacon => {
895
- :default => '',
896
- :public => false,
897
- :type => String,
898
- :allowed_from_server => true,
899
- :description => 'Error beacon for real user monitoring.'
900
- },
901
- :application_id => {
902
- :default => '',
903
- :public => false,
904
- :type => String,
905
- :allowed_from_server => true,
906
- :description => 'Application ID for real user monitoring.'
907
- },
908
- :js_agent_file => {
909
- :default => '',
910
- :public => false,
911
- :type => String,
912
- :allowed_from_server => true,
913
- :description => 'Javascript agent file for real user monitoring.'
1193
+ :allowed_from_server => false,
1194
+ :description => 'If `true`, disables Action Dispatch instrumentation.'
914
1195
  },
915
- :'browser_monitoring.auto_instrument' => {
916
- :default => value_of(:'rum.enabled'),
1196
+ :disable_action_controller => {
1197
+ :default => false,
917
1198
  :public => true,
918
1199
  :type => Boolean,
919
- :allowed_from_server => true,
920
- :description => 'Enable or disable automatic insertion of the JavaScript header into outgoing responses for page load timing (sometimes referred to as real user monitoring or RUM).'
1200
+ :allowed_from_server => false,
1201
+ :description => 'If `true`, disables Action Controller instrumentation.'
921
1202
  },
922
- :'browser_monitoring.capture_attributes' => {
1203
+ :disable_action_mailbox => {
923
1204
  :default => false,
924
1205
  :public => true,
925
1206
  :type => Boolean,
926
- :deprecated => true,
927
1207
  :allowed_from_server => false,
928
- :description => 'Use browser_monitoring.attributes.enabled instead.'
1208
+ :description => 'If `true`, disables Action Mailbox instrumentation.'
929
1209
  },
930
- :'browser_monitoring.loader' => {
931
- :default => DefaultSource.browser_monitoring_loader,
932
- :public => private,
933
- :type => String,
934
- :allowed_from_server => true,
935
- :description => 'Type of JavaScript agent loader to use for browser monitoring instrumentation.'
1210
+ :disable_action_mailer => {
1211
+ :default => false,
1212
+ :public => true,
1213
+ :type => Boolean,
1214
+ :allowed_from_server => false,
1215
+ :description => 'If `true`, disables Action Mailer instrumentation.'
936
1216
  },
937
- :'browser_monitoring.loader_version' => {
938
- :default => '',
939
- :public => private,
940
- :type => String,
941
- :allowed_from_server => true,
942
- :description => 'Version of JavaScript agent loader (returned from the New Relic <a href="/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>).)'
1217
+ :disable_activejob => {
1218
+ :default => false,
1219
+ :public => true,
1220
+ :type => Boolean,
1221
+ :allowed_from_server => false,
1222
+ :description => 'If `true`, disables Active Job instrumentation.'
943
1223
  },
944
- :'browser_monitoring.debug' => {
1224
+ :disable_active_storage => {
945
1225
  :default => false,
946
- :public => false,
1226
+ :public => true,
947
1227
  :type => Boolean,
948
- :allowed_from_server => true,
949
- :description => 'Enable or disable debugging version of JavaScript agent loader for browser monitoring instrumentation.'
1228
+ :allowed_from_server => false,
1229
+ :description => 'If `true`, disables Active Storage instrumentation.'
950
1230
  },
951
- :'browser_monitoring.ssl_for_http' => {
952
- :default => nil,
953
- :allow_nil => true,
954
- :public => false,
1231
+ :disable_active_support => {
1232
+ :default => false,
1233
+ :public => true,
955
1234
  :type => Boolean,
956
- :allowed_from_server => true,
957
- :description => 'Enable or disable HTTPS instrumentation by JavaScript agent on HTTP pages.'
1235
+ :allowed_from_server => false,
1236
+ :description => 'If `true`, disables Active Support instrumentation.'
958
1237
  },
959
- :js_agent_loader => {
960
- :default => '',
961
- :public => false,
962
- :type => String,
963
- :allowed_from_server => true,
964
- :description => 'JavaScript agent loader content.'
1238
+ :disable_active_record_instrumentation => {
1239
+ :default => value_of(:skip_ar_instrumentation),
1240
+ :documentation_default => false,
1241
+ :public => true,
1242
+ :type => Boolean,
1243
+ :aliases => %i[disable_activerecord_instrumentation],
1244
+ :allowed_from_server => false,
1245
+ :description => 'If `true`, disables Active Record instrumentation.'
965
1246
  },
966
- :js_errors_beta => {
1247
+ :disable_active_record_notifications => {
967
1248
  :default => false,
968
- :public => false,
1249
+ :public => true,
969
1250
  :type => Boolean,
1251
+ :dynamic_name => true,
1252
+ :aliases => %i[disable_activerecord_notifications],
970
1253
  :allowed_from_server => false,
971
- :deprecated => true,
972
- :description => 'Enable or disable beta JavaScript error reporting.'
1254
+ :description => 'If `true`, disables instrumentation for Active Record 4+'
973
1255
  },
974
- :trusted_account_ids => {
975
- :default => [],
976
- :public => false,
977
- :type => Array,
978
- :allowed_from_server => true,
979
- :description => 'List of trusted New Relic account IDs for the purposes of cross-application tracing. Inbound requests from applications including cross-application headers that do not come from an account in this list will be ignored.'
1256
+ :disable_cpu_sampler => {
1257
+ :default => false,
1258
+ :public => true,
1259
+ :type => Boolean,
1260
+ :dynamic_name => true,
1261
+ :allowed_from_server => false,
1262
+ :description => 'If `true`, the agent won\'t sample the CPU usage of the host process.'
980
1263
  },
981
- :"cross_application_tracer.enabled" => {
982
- :default => true,
1264
+ :disable_delayed_job_sampler => {
1265
+ :default => false,
983
1266
  :public => true,
984
1267
  :type => Boolean,
985
- :allowed_from_server => true,
986
- :description => 'Enable or disable <a href="/docs/apm/traces/cross-application-traces/cross-application-traces">cross application tracing</a>.'
1268
+ :dynamic_name => true,
1269
+ :allowed_from_server => false,
1270
+ :description => 'If `true`, the agent won\'t measure the depth of Delayed Job queues.'
987
1271
  },
988
- :cross_application_tracing => {
989
- :default => nil,
990
- :allow_nil => true,
991
- :public => false,
1272
+ :disable_gc_profiler => {
1273
+ :default => false,
1274
+ :public => true,
992
1275
  :type => Boolean,
993
1276
  :allowed_from_server => false,
994
- :deprecated => true,
995
- :description => 'Deprecated in favor of cross_application_tracer.enabled'
1277
+ :description => 'If `true`, disables the use of `GC::Profiler` to measure time spent in garbage collection'
996
1278
  },
997
- :encoding_key => {
998
- :default => '',
999
- :public => false,
1000
- :type => String,
1001
- :allowed_from_server => true,
1002
- :description => 'Encoding key for cross-application tracing.'
1279
+ :disable_memory_sampler => {
1280
+ :default => false,
1281
+ :public => true,
1282
+ :type => Boolean,
1283
+ :dynamic_name => true,
1284
+ :allowed_from_server => false,
1285
+ :description => 'If `true`, the agent won\'t sample the memory usage of the host process.'
1003
1286
  },
1004
- :cross_process_id => {
1005
- :default => '',
1006
- :public => false,
1007
- :type => String,
1008
- :allowed_from_server => true,
1009
- :description => 'Cross process ID for cross-application tracing.'
1287
+ :disable_middleware_instrumentation => {
1288
+ :default => false,
1289
+ :public => true,
1290
+ :type => Boolean,
1291
+ :allowed_from_server => false,
1292
+ :description => <<~DESCRIPTION
1293
+ If `true`, the agent won't wrap third-party middlewares in instrumentation (regardless of whether they are installed via `Rack::Builder` or Rails).
1294
+
1295
+ <Callout variant="important">
1296
+ When middleware instrumentation is disabled, if an application is using middleware that could alter the response code, the HTTP status code reported on the transaction may not reflect the altered value.
1297
+ </Callout>
1298
+ DESCRIPTION
1010
1299
  },
1011
- :'thread_profiler.enabled' => {
1012
- :default => DefaultSource.thread_profiler_enabled,
1300
+ :disable_samplers => {
1301
+ :default => false,
1013
1302
  :public => true,
1014
1303
  :type => Boolean,
1015
- :allowed_from_server => true,
1016
- :description => 'Enable or disable the thread profiler.'
1304
+ :allowed_from_server => false,
1305
+ :description => 'If `true`, disables the collection of sampler metrics. Sampler metrics are metrics that are not event-based (such as CPU time or memory usage).'
1017
1306
  },
1018
- :'xray_session.enabled' => {
1019
- :default => true,
1307
+ :disable_sequel_instrumentation => {
1308
+ :default => false,
1020
1309
  :public => true,
1021
1310
  :type => Boolean,
1022
- :allowed_from_server => true,
1023
- :description => 'Enable or disable <a href="/docs/apm/transactions-menu/x-ray-sessions/x-ray-sessions">X-Ray sessions</a>.'
1311
+ :allowed_from_server => false,
1312
+ :description => 'If `true`, disables [Sequel instrumentation](/docs/agents/ruby-agent/frameworks/sequel-instrumentation).'
1024
1313
  },
1025
- :'xray_session.allow_traces' => {
1026
- :default => true,
1027
- :public => false,
1314
+ :disable_sidekiq => {
1315
+ :default => false,
1316
+ :public => true,
1028
1317
  :type => Boolean,
1029
- :allowed_from_server => true,
1030
- :description => 'Enable or disable X-Ray sessions recording transaction traces.'
1318
+ :allowed_from_server => false,
1319
+ :description => 'If `true`, disables [Sidekiq instrumentation](/docs/agents/ruby-agent/background-jobs/sidekiq-instrumentation).'
1031
1320
  },
1032
- :'xray_session.allow_profiles' => {
1033
- :default => true,
1034
- :public => false,
1321
+ :disable_roda_auto_middleware => {
1322
+ :default => false,
1323
+ :public => true,
1035
1324
  :type => Boolean,
1036
- :allowed_from_server => true,
1037
- :description => 'Enable or disable X-Ray sessions taking thread profiles.'
1325
+ :allowed_from_server => false,
1326
+ :description => 'If `true`, disables agent middleware for Roda. This middleware is responsible for advanced feature support such as [page load timing](/docs/browser/new-relic-browser/getting-started/new-relic-browser) and [error collection](/docs/apm/applications-menu/events/view-apm-error-analytics).'
1038
1327
  },
1039
- :'xray_session.max_samples' => {
1040
- :default => 10,
1041
- :public => false,
1042
- :type => Fixnum,
1043
- :allowed_from_server => true,
1044
- :description => 'Maximum number of transaction traces to buffer for active X-Ray sessions'
1328
+ :disable_sinatra_auto_middleware => {
1329
+ :default => false,
1330
+ :public => true,
1331
+ :type => Boolean,
1332
+ :allowed_from_server => false,
1333
+ :description => <<~DESCRIPTION
1334
+ If `true`, disables agent middleware for Sinatra. This middleware is responsible for advanced feature support such as [cross application tracing](/docs/apm/transactions/cross-application-traces/cross-application-tracing), [page load timing](/docs/browser/new-relic-browser/getting-started/new-relic-browser), and [error collection](/docs/apm/applications-menu/events/view-apm-error-analytics).
1335
+
1336
+ <Callout variant="important">
1337
+ Cross application tracing is deprecated in favor of [distributed tracing](/docs/apm/distributed-tracing/getting-started/introduction-distributed-tracing). Distributed tracing is on by default for Ruby agent versions 8.0.0 and above. Middlewares are not required to support distributed tracing.
1338
+
1339
+ To continue using cross application tracing, update the following options in your `newrelic.yml` configuration file:
1340
+
1341
+ ```yaml
1342
+ # newrelic.yml
1343
+
1344
+ cross_application_tracer:
1345
+ enabled: true
1346
+ distributed_tracing:
1347
+ enabled: false
1348
+ ```
1349
+ </Callout>
1350
+ DESCRIPTION
1045
1351
  },
1046
- :'xray_session.max_profile_overhead' => {
1047
- :default => 0.05,
1048
- :public => false,
1049
- :type => Float,
1050
- :allowed_from_server => true,
1051
- :description => 'Maximum overhead percentage for thread profiling before agent reduces polling frequency'
1352
+ :disable_view_instrumentation => {
1353
+ :default => false,
1354
+ :public => true,
1355
+ :type => Boolean,
1356
+ :allowed_from_server => false,
1357
+ :description => 'If `true`, disables view instrumentation.'
1052
1358
  },
1053
- :marshaller => {
1054
- :default => DefaultSource.marshaller,
1359
+ :disable_vm_sampler => {
1360
+ :default => false,
1055
1361
  :public => true,
1056
- :type => String,
1362
+ :type => Boolean,
1363
+ :dynamic_name => true,
1057
1364
  :allowed_from_server => false,
1058
- :description => 'Specifies a marshaller for transmitting data to the New Relic <a href="/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>) (e.g json, pruby).'
1365
+ :description => 'If `true`, the agent won\'t [sample performance measurements from the Ruby VM](/docs/agents/ruby-agent/features/ruby-vm-measurements).'
1059
1366
  },
1060
- :'analytics_events.enabled' => {
1367
+ # Distributed tracing
1368
+ :'distributed_tracing.enabled' => {
1061
1369
  :default => true,
1062
1370
  :public => true,
1063
1371
  :type => Boolean,
1064
1372
  :allowed_from_server => true,
1065
- :description => 'Enable or disable analytics event sampling.'
1373
+ :description => 'Distributed tracing lets you see the path that a request takes through your distributed system. Enabling distributed tracing changes the behavior of some New Relic features, so carefully consult the [transition guide](/docs/transition-guide-distributed-tracing) before you enable this feature.'
1066
1374
  },
1067
- :'analytics_events.max_samples_stored' => {
1068
- :default => 1200,
1375
+ # Elasticsearch
1376
+ :'elasticsearch.capture_queries' => {
1377
+ :default => true,
1069
1378
  :public => true,
1070
- :type => Fixnum,
1379
+ :type => Boolean,
1071
1380
  :allowed_from_server => true,
1072
- :description => 'Defines the maximum number of request events reported from a single harvest.'
1381
+ :description => 'If `true`, the agent captures Elasticsearch queries in transaction traces.'
1073
1382
  },
1074
- :'analytics_events.capture_attributes' => {
1383
+ :'elasticsearch.obfuscate_queries' => {
1075
1384
  :default => true,
1076
1385
  :public => true,
1077
1386
  :type => Boolean,
1078
- :deprecated => true,
1079
- :allowed_from_server => false,
1080
- :description => 'Use transaction_events.attributes.enabled instead.'
1387
+ :allowed_from_server => true,
1388
+ :description => 'If `true`, the agent obfuscates Elasticsearch queries in transaction traces.'
1081
1389
  },
1082
- :restart_thread_in_children => {
1390
+ # Heroku
1391
+ :'heroku.use_dyno_names' => {
1083
1392
  :default => true,
1084
- :public => false,
1393
+ :public => true,
1085
1394
  :type => Boolean,
1086
1395
  :allowed_from_server => false,
1087
- :description => 'Controls whether to check on running a transaction whether to respawn the harvest thread.'
1396
+ :description => 'If `true`, the agent uses Heroku dyno names as the hostname.'
1088
1397
  },
1089
- :normalize_json_string_encodings => {
1090
- :default => DefaultSource.normalize_json_string_encodings,
1091
- :public => false,
1092
- :type => Boolean,
1398
+ :'heroku.dyno_name_prefixes_to_shorten' => {
1399
+ :default => %w[scheduler run],
1400
+ :public => true,
1401
+ :type => Array,
1093
1402
  :allowed_from_server => false,
1094
- :description => 'Controls whether to normalize string encodings prior to serializing data for the collector to JSON.'
1403
+ :transform => DefaultSource.method(:convert_to_list),
1404
+ :description => 'Ordinarily the agent reports dyno names with a trailing dot and process ID (for example, `worker.3`). You can remove this trailing data by specifying the prefixes you want to report without trailing data (for example, `worker`).'
1095
1405
  },
1096
- :disable_vm_sampler => {
1097
- :default => false,
1098
- :public => true,
1099
- :type => Boolean,
1406
+ # Infinite tracing
1407
+ :'infinite_tracing.trace_observer.host' => {
1408
+ :default => '',
1409
+ :public => true,
1410
+ :type => String,
1411
+ :allowed_from_server => false,
1412
+ :external => :infinite_tracing,
1413
+ :description => 'Configures the hostname for the trace observer Host. ' \
1414
+ 'When configured, enables tail-based sampling by sending all recorded spans ' \
1415
+ 'to a trace observer for further sampling decisions, irrespective of any usual ' \
1416
+ 'agent sampling decision.'
1417
+ },
1418
+ :'infinite_tracing.trace_observer.port' => {
1419
+ :default => 443,
1420
+ :public => true,
1421
+ :type => Integer,
1422
+ :allowed_from_server => false,
1423
+ :external => :infinite_tracing,
1424
+ :description => 'Configures the TCP/IP port for the trace observer Host'
1425
+ },
1426
+ # Instrumentation
1427
+ :'instrumentation.active_support_broadcast_logger' => {
1428
+ :default => instrumentation_value_from_boolean(:'application_logging.enabled'),
1429
+ :documentation_default => 'auto',
1100
1430
  :dynamic_name => true,
1431
+ :public => true,
1432
+ :type => String,
1101
1433
  :allowed_from_server => false,
1102
- :description => 'Defines whether the agent will <a href="/docs/agents/ruby-agent/features/ruby-vm-measurements">sample performance measurements from the Ruby VM</a>.'
1434
+ :description => 'Controls auto-instrumentation of `ActiveSupport::BroadcastLogger` at start up. May be one of: `auto`, `prepend`, `chain`, `disabled`. Used in Rails versions >= 7.1.'
1103
1435
  },
1104
- :disable_memory_sampler => {
1105
- :default => false,
1106
- :public => true,
1107
- :type => Boolean,
1436
+ :'instrumentation.active_support_logger' => {
1437
+ :default => instrumentation_value_from_boolean(:'application_logging.enabled'),
1438
+ :documentation_default => 'auto',
1108
1439
  :dynamic_name => true,
1440
+ :public => true,
1441
+ :type => String,
1109
1442
  :allowed_from_server => false,
1110
- :description => 'Defines whether the agent will sample the memory usage of the host process.'
1443
+ :description => 'Controls auto-instrumentation of `ActiveSupport::Logger` at start up. May be one of: `auto`, `prepend`, `chain`, `disabled`. Used in Rails versions below 7.1.'
1111
1444
  },
1112
- :disable_cpu_sampler => {
1113
- :default => false,
1114
- :public => true,
1115
- :type => Boolean,
1445
+ :'instrumentation.async_http' => {
1446
+ :default => 'auto',
1447
+ :public => true,
1448
+ :type => String,
1116
1449
  :dynamic_name => true,
1117
1450
  :allowed_from_server => false,
1118
- :description => 'Defines whether the agent will sample the CPU usage of the host process.'
1451
+ :description => 'Controls auto-instrumentation of Async::HTTP at start up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1119
1452
  },
1120
- :disable_delayed_job_sampler => {
1121
- :default => false,
1122
- :public => true,
1123
- :type => Boolean,
1453
+ :'instrumentation.bunny' => {
1454
+ :default => 'auto',
1455
+ :public => true,
1456
+ :type => String,
1124
1457
  :dynamic_name => true,
1125
1458
  :allowed_from_server => false,
1126
- :description => 'Defines whether the agent will measure the depth of Delayed Job queues.'
1459
+ :description => 'Controls auto-instrumentation of bunny at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1127
1460
  },
1128
- :disable_active_record_4 => {
1129
- :default => false,
1130
- :public => true,
1131
- :type => Boolean,
1461
+ :'instrumentation.dynamodb' => {
1462
+ :default => 'auto',
1463
+ :public => true,
1464
+ :type => String,
1132
1465
  :dynamic_name => true,
1133
1466
  :allowed_from_server => false,
1134
- :description => 'Defines whether the agent will install instrumentation for ActiveRecord 4.'
1467
+ :description => 'Controls auto-instrumentation of the aws-sdk-dynamodb library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
1135
1468
  },
1136
- :disable_curb => {
1137
- :default => false,
1138
- :public => true,
1139
- :type => Boolean,
1469
+ :'instrumentation.fiber' => {
1470
+ :default => 'auto',
1471
+ :public => true,
1472
+ :type => String,
1140
1473
  :dynamic_name => true,
1141
1474
  :allowed_from_server => false,
1142
- :description => 'Defines whether the agent will install instrumentation for the curb gem.'
1475
+ :description => 'Controls auto-instrumentation of the Fiber class at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1143
1476
  },
1144
- :disable_excon => {
1145
- :default => false,
1146
- :public => true,
1147
- :type => Boolean,
1477
+ :'instrumentation.concurrent_ruby' => {
1478
+ :default => 'auto',
1479
+ :public => true,
1480
+ :type => String,
1148
1481
  :dynamic_name => true,
1149
1482
  :allowed_from_server => false,
1150
- :description => 'Defines whether the agent will install instrumentation for the excon gem.'
1483
+ :description => 'Controls auto-instrumentation of the concurrent-ruby library at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1151
1484
  },
1152
- :disable_httpclient => {
1153
- :default => false,
1154
- :public => true,
1155
- :type => Boolean,
1485
+ :'instrumentation.curb' => {
1486
+ :default => 'auto',
1487
+ :documentation_default => 'auto',
1488
+ :public => true,
1489
+ :type => String,
1156
1490
  :dynamic_name => true,
1157
1491
  :allowed_from_server => false,
1158
- :description => 'Defines whether the agent will install instrumentation for the httpclient gem.'
1492
+ :description => 'Controls auto-instrumentation of Curb at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1159
1493
  },
1160
- :disable_net_http => {
1161
- :default => false,
1162
- :public => true,
1163
- :type => Boolean,
1494
+ :'instrumentation.delayed_job' => {
1495
+ :default => 'auto',
1496
+ :documentation_default => 'auto',
1497
+ :public => true,
1498
+ :type => String,
1164
1499
  :dynamic_name => true,
1165
1500
  :allowed_from_server => false,
1166
- :description => 'Defines whether the agent will install instrumentation for Net::HTTP.'
1501
+ :description => 'Controls auto-instrumentation of Delayed Job at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1167
1502
  },
1168
- :disable_rack => {
1169
- :default => false,
1170
- :public => true,
1171
- :type => Boolean,
1503
+ :'instrumentation.elasticsearch' => {
1504
+ :default => 'auto',
1505
+ :public => true,
1506
+ :type => String,
1172
1507
  :dynamic_name => true,
1173
1508
  :allowed_from_server => false,
1174
- :description => 'Defines whether the agent will hook into Rack::Builder\'s <code>to_app</code> method to find gems to instrument during application startup.'
1509
+ :description => 'Controls auto-instrumentation of the elasticsearch library at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1175
1510
  },
1176
- :disable_rack_urlmap => {
1177
- :default => false,
1178
- :public => true,
1179
- :type => Boolean,
1511
+ :'instrumentation.ethon' => {
1512
+ :default => 'auto',
1513
+ :public => true,
1514
+ :type => String,
1180
1515
  :dynamic_name => true,
1181
1516
  :allowed_from_server => false,
1182
- :description => 'Defines whether the agent will hook into Rack::URLMap to install middleware tracing.'
1517
+ :description => 'Controls auto-instrumentation of ethon at start up. May be one of `auto`, `prepend`, `chain`, `disabled`'
1183
1518
  },
1184
- :disable_rubyprof => {
1185
- :default => false,
1186
- :public => true,
1187
- :type => Boolean,
1519
+ :'instrumentation.excon' => {
1520
+ :default => 'enabled',
1521
+ :documentation_default => 'enabled',
1522
+ :public => true,
1523
+ :type => String,
1188
1524
  :dynamic_name => true,
1189
1525
  :allowed_from_server => false,
1190
- :description => 'Defines whether the agent will use RubyProf in developer mode (if RubyProf is installed).'
1526
+ :description => 'Controls auto-instrumentation of Excon at start-up. May be one of: `enabled`, `disabled`.'
1191
1527
  },
1192
- :disable_typhoeus => {
1193
- :default => false,
1194
- :public => true,
1195
- :type => Boolean,
1528
+ :'instrumentation.grape' => {
1529
+ :default => 'auto',
1530
+ :public => true,
1531
+ :type => String,
1196
1532
  :dynamic_name => true,
1197
1533
  :allowed_from_server => false,
1198
- :description => 'Defines whether the agent will install instrumentation for the typhoeus gem.'
1534
+ :description => 'Controls auto-instrumentation of Grape at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1199
1535
  },
1200
- :disable_middleware_instrumentation => {
1201
- :default => false,
1202
- :public => true,
1203
- :type => Boolean,
1536
+ :'instrumentation.grpc_client' => {
1537
+ :default => 'auto',
1538
+ :documentation_default => 'auto',
1539
+ :public => true,
1540
+ :type => String,
1541
+ :dynamic_name => true,
1204
1542
  :allowed_from_server => false,
1205
- :description => 'Defines whether the agent will wrap third-party middlewares in instrumentation (regardless of whether they are installed via Rack::Builder or Rails).'
1543
+ :description => 'Controls auto-instrumentation of gRPC clients at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1206
1544
  },
1207
- :disable_rails_middleware => {
1208
- :default => false,
1209
- :public => false,
1210
- :type => Boolean,
1545
+ :'instrumentation.grpc.host_denylist' => {
1546
+ :default => [],
1547
+ :public => true,
1548
+ :type => Array,
1211
1549
  :allowed_from_server => false,
1212
- :description => 'Internal name for controlling Rails 3+ middleware instrumentation'
1550
+ :transform => DefaultSource.method(:convert_to_regexp_list),
1551
+ :description => %Q(Specifies a list of hostname patterns separated by commas that will match gRPC hostnames that traffic is to be ignored by New Relic for. New Relic's gRPC client instrumentation will ignore traffic streamed to a host matching any of these patterns, and New Relic's gRPC server instrumentation will ignore traffic for a server running on a host whose hostname matches any of these patterns. By default, no traffic is ignored when gRPC instrumentation is itself enabled. For example, `"private.com$,exception.*"`)
1213
1552
  },
1214
- :'heroku.use_dyno_names' => {
1215
- :default => true,
1216
- :public => true,
1217
- :type => Boolean,
1553
+ :'instrumentation.grpc_server' => {
1554
+ :default => 'auto',
1555
+ :documentation_default => 'auto',
1556
+ :public => true,
1557
+ :type => String,
1558
+ :dynamic_name => true,
1218
1559
  :allowed_from_server => false,
1219
- :description => 'Controls whether or not we use the heroku dyno name as the hostname.'
1560
+ :description => 'Controls auto-instrumentation of gRPC servers at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1220
1561
  },
1221
- :'heroku.dyno_name_prefixes_to_shorten' => {
1222
- :default => ['scheduler', 'run'],
1223
- :public => true,
1224
- :type => Array,
1562
+ :'instrumentation.httpclient' => {
1563
+ :default => 'auto',
1564
+ :documentation_default => 'auto',
1565
+ :public => true,
1566
+ :type => String,
1567
+ :dynamic_name => true,
1225
1568
  :allowed_from_server => false,
1226
- :transform => DefaultSource.method(:convert_to_list),
1227
- :description => 'List of prefixes for heroku dyno names (such as "scheduler") to report as hostname without trailing dot and process ID.'
1569
+ :description => 'Controls auto-instrumentation of HTTPClient at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1228
1570
  },
1229
- :labels => {
1230
- :default => '',
1231
- :public => true,
1232
- :type => String,
1571
+ :'instrumentation.httprb' => {
1572
+ :default => 'auto',
1573
+ :documentation_default => 'auto',
1574
+ :public => true,
1575
+ :type => String,
1576
+ :dynamic_name => true,
1233
1577
  :allowed_from_server => false,
1234
- :description => 'A dictionary of label names and values that will be applied to the data sent from this agent. May also be expressed as a semi-colon delimited string of colon-separated pairs (e.g. "Server:One;Data Center:Primary".'
1578
+ :description => 'Controls auto-instrumentation of http.rb gem at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1235
1579
  },
1236
- :aggressive_keepalive => {
1237
- :default => true,
1238
- :public => false,
1239
- :type => Boolean,
1240
- :allowed_from_server => true,
1241
- :description => 'If true, attempt to keep the TCP connection to the collector alive between harvests.'
1580
+ :'instrumentation.httpx' => {
1581
+ :default => 'auto',
1582
+ :documentation_default => 'auto',
1583
+ :public => true,
1584
+ :type => String,
1585
+ :dynamic_name => true,
1586
+ :allowed_from_server => false,
1587
+ :description => 'Controls auto-instrumentation of httpx at start up. May be one of `auto`, `prepend`, `chain`, `disabled`'
1242
1588
  },
1243
- :keep_alive_timeout => {
1244
- :default => 60,
1245
- :public => false,
1246
- :type => Fixnum,
1247
- :allowed_from_server => true,
1248
- :description => 'Timeout for keep alive on TCP connection to collector if supported by Ruby version. Only used in conjunction when aggressive_keepalive is enabled.'
1589
+ :'instrumentation.logger' => {
1590
+ :default => instrumentation_value_from_boolean(:'application_logging.enabled'),
1591
+ :documentation_default => 'auto',
1592
+ :public => true,
1593
+ :type => String,
1594
+ :dynamic_name => true,
1595
+ :allowed_from_server => false,
1596
+ :description => 'Controls auto-instrumentation of Ruby standard library Logger at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1249
1597
  },
1250
- :ca_bundle_path => {
1251
- :default => nil,
1252
- :allow_nil => true,
1253
- :public => true,
1254
- :type => String,
1598
+ :'instrumentation.memcache' => {
1599
+ :default => 'auto',
1600
+ :public => true,
1601
+ :type => String,
1602
+ :dynamic_name => true,
1255
1603
  :allowed_from_server => false,
1256
- :description => "Manual override for the path to your local CA bundle. This CA bundle will be used to validate the SSL certificate presented by New Relic's data collection service."
1604
+ :description => 'Controls auto-instrumentation of dalli gem for Memcache at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1257
1605
  },
1258
- :collect_utilization => {
1259
- :default => false,
1260
- :public => false,
1261
- :type => Boolean,
1262
- :allowed_from_server => true,
1263
- :description => "Controls whether to collect processor and instance sizing data and send it to New Relic"
1606
+ :'instrumentation.memcached' => {
1607
+ :default => 'auto',
1608
+ :documentation_default => 'auto',
1609
+ :public => true,
1610
+ :type => String,
1611
+ :dynamic_name => true,
1612
+ :allowed_from_server => false,
1613
+ :description => 'Controls auto-instrumentation of memcached gem for Memcache at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1264
1614
  },
1265
- :'rules.ignore_url_regexes' => {
1266
- :default => [],
1267
- :public => true,
1268
- :type => Array,
1269
- :allowed_from_server => true,
1270
- :transform => DefaultSource.method(:convert_to_regexp_list),
1271
- :description => 'A list of patterns that will cause a transaction to be ignored if any of them match the URI.'
1615
+ :'instrumentation.memcache_client' => {
1616
+ :default => 'auto',
1617
+ :documentation_default => 'auto',
1618
+ :public => true,
1619
+ :type => String,
1620
+ :dynamic_name => true,
1621
+ :allowed_from_server => false,
1622
+ :description => 'Controls auto-instrumentation of memcache-client gem for Memcache at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1272
1623
  },
1273
- :'synthetics.traces_limit' => {
1274
- :default => 20,
1275
- :public => false,
1276
- :type => Fixnum,
1277
- :allowed_from_server => true,
1278
- :description => 'Maximum number of synthetics transaction traces to hold for a given harvest'
1624
+ :'instrumentation.mongo' => {
1625
+ :default => 'enabled',
1626
+ :documentation_default => 'enabled',
1627
+ :public => true,
1628
+ :type => String,
1629
+ :dynamic_name => true,
1630
+ :allowed_from_server => false,
1631
+ :description => 'Controls auto-instrumentation of Mongo at start-up. May be one of: `enabled`, `disabled`.'
1279
1632
  },
1280
- :'synthetics.events_limit' => {
1281
- :default => 200,
1282
- :public => false,
1283
- :type => Fixnum,
1284
- :allowed_from_server => true,
1285
- :description => 'Maximum number of synthetics transaction events to hold for a given harvest'
1633
+ :'instrumentation.net_http' => {
1634
+ :default => 'auto',
1635
+ :documentation_default => 'auto',
1636
+ :public => true,
1637
+ :type => String,
1638
+ :dynamic_name => true,
1639
+ :allowed_from_server => false,
1640
+ :description => 'Controls auto-instrumentation of `Net::HTTP` at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1286
1641
  },
1287
- :'custom_insights_events.enabled' => {
1288
- :default => true,
1289
- :public => true,
1290
- :type => Boolean,
1291
- :allowed_from_server => true,
1292
- :description => 'Enable or disable custom Insights event recording.'
1642
+ :'instrumentation.ruby_openai' => {
1643
+ :default => 'auto',
1644
+ :documentation_default => 'auto',
1645
+ :public => true,
1646
+ :type => String,
1647
+ :dynamic_name => true,
1648
+ :allowed_from_server => false,
1649
+ :description => 'Controls auto-instrumentation of the ruby-openai gem at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`. Defaults to `disabled` in high security mode.'
1293
1650
  },
1294
- :'custom_insights_events.max_samples_stored' => {
1295
- :default => 1000,
1296
- :public => true,
1297
- :type => Fixnum,
1298
- :allowed_from_server => true,
1299
- :description => 'Maximum number of custom Insights events buffered in memory at a time.',
1300
- :dynamic_name => true
1651
+ :'instrumentation.puma_rack' => {
1652
+ :default => value_of(:'instrumentation.rack'),
1653
+ :documentation_default => 'auto',
1654
+ :public => true,
1655
+ :type => String,
1656
+ :dynamic_name => true,
1657
+ :allowed_from_server => false,
1658
+ :description => 'Controls auto-instrumentation of `Puma::Rack`. When enabled, the agent hooks into the ' \
1659
+ '`to_app` method in `Puma::Rack::Builder` to find gems to instrument during ' \
1660
+ 'application startup. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1301
1661
  },
1302
- :disable_grape_instrumentation => {
1303
- :default => false,
1304
- :public => true,
1305
- :type => Boolean,
1662
+ :'instrumentation.puma_rack_urlmap' => {
1663
+ :default => value_of(:'instrumentation.rack_urlmap'),
1664
+ :documentation_default => 'auto',
1665
+ :public => true,
1666
+ :type => String,
1667
+ :dynamic_name => true,
1306
1668
  :allowed_from_server => false,
1307
- :description => 'Disables installation of Grape instrumentation.'
1669
+ :description => 'Controls auto-instrumentation of `Puma::Rack::URLMap` at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1308
1670
  },
1309
- :disable_grape => {
1310
- :default => false,
1311
- :public => true,
1312
- :type => Boolean,
1671
+ :'instrumentation.rack' => {
1672
+ :default => 'auto',
1673
+ :documentation_default => 'auto',
1674
+ :public => true,
1675
+ :type => String,
1676
+ :dynamic_name => true,
1313
1677
  :allowed_from_server => false,
1314
- :description => 'Disables installation of Grape instrumentation.'
1678
+ :description => 'Controls auto-instrumentation of Rack. When enabled, the agent hooks into the ' \
1679
+ '`to_app` method in `Rack::Builder` to find gems to instrument during ' \
1680
+ 'application startup. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1315
1681
  },
1316
- :'attributes.enabled' => {
1317
- :default => true,
1318
- :public => false,
1319
- :type => Boolean,
1682
+ :'instrumentation.rack_urlmap' => {
1683
+ :default => 'auto',
1684
+ :documentation_default => 'auto',
1685
+ :public => true,
1686
+ :type => String,
1687
+ :dynamic_name => true,
1320
1688
  :allowed_from_server => false,
1321
- :description => 'Enable or disable capture of attributes for all destinations.'
1689
+ :description => 'Controls auto-instrumentation of `Rack::URLMap` at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1322
1690
  },
1323
- :'transaction_tracer.attributes.enabled' => {
1324
- :default => value_of(:'transaction_tracer.capture_attributes'),
1325
- :public => false,
1326
- :type => Boolean,
1691
+ :'instrumentation.rake' => {
1692
+ :default => 'auto',
1693
+ :public => true,
1694
+ :type => String,
1695
+ :dynamic_name => true,
1327
1696
  :allowed_from_server => false,
1328
- :description => 'Enable or disable capture of attributes for transaction traces.'
1697
+ :description => 'Controls auto-instrumentation of rake at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1329
1698
  },
1330
- :'transaction_events.attributes.enabled' => {
1331
- :default => value_of(:'analytics_events.capture_attributes'),
1332
- :public => false,
1333
- :type => Boolean,
1699
+ :'instrumentation.redis' => {
1700
+ :default => 'auto',
1701
+ :public => true,
1702
+ :type => String,
1703
+ :dynamic_name => true,
1334
1704
  :allowed_from_server => false,
1335
- :description => 'Enable or disable capture of attributes for transaction events.'
1705
+ :description => 'Controls auto-instrumentation of Redis at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1336
1706
  },
1337
- :'error_collector.attributes.enabled' => {
1338
- :default => value_of(:'error_collector.capture_attributes'),
1339
- :public => false,
1340
- :type => Boolean,
1707
+ :'instrumentation.resque' => {
1708
+ :default => 'auto',
1709
+ :documentation_default => 'auto',
1710
+ :public => true,
1711
+ :type => String,
1712
+ :dynamic_name => true,
1341
1713
  :allowed_from_server => false,
1342
- :description => 'Enable or disable capture of attributes for error collection.'
1714
+ :description => 'Controls auto-instrumentation of resque at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1343
1715
  },
1344
- :'browser_monitoring.attributes.enabled' => {
1345
- :default => value_of(:'browser_monitoring.capture_attributes'),
1346
- :public => false,
1347
- :type => Boolean,
1716
+ :'instrumentation.roda' => {
1717
+ :default => 'auto',
1718
+ :public => true,
1719
+ :type => String,
1720
+ :dynamic_name => true,
1348
1721
  :allowed_from_server => false,
1349
- :description => 'Enable or disable capture of attributes for browser monitoring.'
1722
+ :description => 'Controls auto-instrumentation of Roda at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1350
1723
  },
1351
- :'attributes.exclude' => {
1352
- :default => [],
1353
- :public => false,
1354
- :type => Array,
1724
+ :'instrumentation.sinatra' => {
1725
+ :default => 'auto',
1726
+ :public => true,
1727
+ :type => String,
1728
+ :dynamic_name => true,
1355
1729
  :allowed_from_server => false,
1356
- :transform => DefaultSource.method(:convert_to_list),
1357
- :description => 'Prefix of attributes to exclude from all destinations. Allows * as wildcard at end.'
1730
+ :description => 'Controls auto-instrumentation of Sinatra at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1358
1731
  },
1359
- :'transaction_tracer.attributes.exclude' => {
1360
- :default => [],
1361
- :public => false,
1362
- :type => Array,
1732
+ :'instrumentation.stripe' => {
1733
+ :default => 'enabled',
1734
+ :public => true,
1735
+ :type => String,
1363
1736
  :allowed_from_server => false,
1364
- :transform => DefaultSource.method(:convert_to_list),
1365
- :description => 'Prefix of attributes to exclude from transaction traces. Allows * as wildcard at end.'
1737
+ :description => 'Controls auto-instrumentation of Stripe at startup. May be one of: `enabled`, `disabled`.'
1366
1738
  },
1367
- :'transaction_events.attributes.exclude' => {
1368
- :default => [],
1369
- :public => false,
1370
- :type => Array,
1739
+ :'instrumentation.view_component' => {
1740
+ :default => 'auto',
1741
+ :public => true,
1742
+ :type => String,
1743
+ :dynamic_name => true,
1371
1744
  :allowed_from_server => false,
1372
- :transform => DefaultSource.method(:convert_to_list),
1373
- :description => 'Prefix of attributes to exclude from transaction events. Allows * as wildcard at end.'
1745
+ :description => 'Controls auto-instrumentation of ViewComponent at startup. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1746
+ },
1747
+ :'stripe.user_data.include' => {
1748
+ default: NewRelic::EMPTY_ARRAY,
1749
+ public: true,
1750
+ type: Array,
1751
+ dynamic_name: true,
1752
+ allowed_from_server: false,
1753
+ :transform => DefaultSource.method(:convert_to_list),
1754
+ :description => <<~DESCRIPTION
1755
+ An array of strings to specify which keys inside a Stripe event's `user_data` hash should be reported
1756
+ to New Relic. Each string in this array will be turned into a regular expression via `Regexp.new` to
1757
+ permit advanced matching. Setting the value to `["."]` will report all `user_data`.
1758
+ DESCRIPTION
1759
+ },
1760
+ :'stripe.user_data.exclude' => {
1761
+ default: NewRelic::EMPTY_ARRAY,
1762
+ public: true,
1763
+ type: Array,
1764
+ dynamic_name: true,
1765
+ allowed_from_server: false,
1766
+ :transform => DefaultSource.method(:convert_to_list),
1767
+ :description => <<~DESCRIPTION
1768
+ An array of strings to specify which keys and/or values inside a Stripe event's `user_data` hash should
1769
+ not be reported to New Relic. Each string in this array will be turned into a regular expression via
1770
+ `Regexp.new` to permit advanced matching. For each hash pair, if either the key or value is matched the
1771
+ pair will not be reported. By default, no `user_data` is reported, so this option should only be used if
1772
+ the `stripe.user_data.include` option is being used.
1773
+ DESCRIPTION
1774
+ },
1775
+ :'instrumentation.thread' => {
1776
+ :default => 'auto',
1777
+ :public => true,
1778
+ :type => String,
1779
+ :dynamic_name => true,
1780
+ :allowed_from_server => false,
1781
+ :description => 'Controls auto-instrumentation of the Thread class at start-up to allow the agent to correctly nest spans inside of an asynchronous transaction. This does not enable the agent to automatically trace all threads created (see `instrumentation.thread.tracing`). May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1374
1782
  },
1375
- :'error_collector.attributes.exclude' => {
1376
- :default => [],
1377
- :public => false,
1378
- :type => Array,
1783
+ :'instrumentation.thread.tracing' => {
1784
+ :default => true,
1785
+ :public => true,
1786
+ :type => Boolean,
1379
1787
  :allowed_from_server => false,
1380
- :transform => DefaultSource.method(:convert_to_list),
1381
- :description => 'Prefix of attributes to exclude from error collection. Allows * as wildcard at end.'
1788
+ :description => 'Controls auto-instrumentation of the Thread class at start-up to automatically add tracing to all Threads created in the application.'
1382
1789
  },
1383
- :'browser_monitoring.attributes.exclude' => {
1384
- :default => [],
1385
- :public => false,
1386
- :type => Array,
1790
+ :'thread_ids_enabled' => {
1791
+ :default => false,
1792
+ :public => false,
1793
+ :type => Boolean,
1387
1794
  :allowed_from_server => false,
1388
- :transform => DefaultSource.method(:convert_to_list),
1389
- :description => 'Prefix of attributes to exclude from browser monitoring. Allows * as wildcard at end.'
1795
+ :description => 'If enabled, will append the current Thread and Fiber object ids onto the segment names of segments created in Threads and concurrent-ruby'
1390
1796
  },
1391
- :'attributes.include' => {
1392
- :default => [],
1393
- :public => false,
1394
- :type => Array,
1797
+ :'instrumentation.tilt' => {
1798
+ :default => 'auto',
1799
+ :public => true,
1800
+ :type => String,
1801
+ :dynamic_name => true,
1395
1802
  :allowed_from_server => false,
1396
- :transform => DefaultSource.method(:convert_to_list),
1397
- :description => 'Prefix of attributes to include in all destinations. Allows * as wildcard at end.'
1803
+ :description => 'Controls auto-instrumentation of the Tilt template rendering library at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1398
1804
  },
1399
- :'transaction_tracer.attributes.include' => {
1400
- :default => [],
1401
- :public => false,
1402
- :type => Array,
1805
+ :'instrumentation.typhoeus' => {
1806
+ :default => 'auto',
1807
+ :documentation_default => 'auto',
1808
+ :public => true,
1809
+ :type => String,
1810
+ :dynamic_name => true,
1403
1811
  :allowed_from_server => false,
1404
- :transform => DefaultSource.method(:convert_to_list),
1405
- :description => 'Prefix of attributes to include in transaction traces. Allows * as wildcard at end.'
1812
+ :description => 'Controls auto-instrumentation of Typhoeus at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1406
1813
  },
1407
- :'transaction_events.attributes.include' => {
1408
- :default => [],
1409
- :public => false,
1410
- :type => Array,
1814
+ # Message tracer
1815
+ :'message_tracer.segment_parameters.enabled' => {
1816
+ :default => true,
1817
+ :public => true,
1818
+ :type => Boolean,
1819
+ :allowed_from_server => true,
1820
+ :description => 'If `true`, the agent will collect metadata about messages and attach them as segment parameters.'
1821
+ },
1822
+ # Mongo
1823
+ :'mongo.capture_queries' => {
1824
+ :default => true,
1825
+ :public => true,
1826
+ :type => Boolean,
1827
+ :allowed_from_server => true,
1828
+ :description => 'If `true`, the agent captures Mongo queries in transaction traces.'
1829
+ },
1830
+ :'mongo.obfuscate_queries' => {
1831
+ :default => true,
1832
+ :public => true,
1833
+ :type => Boolean,
1834
+ :allowed_from_server => true,
1835
+ :description => 'If `true`, the agent obfuscates Mongo queries in transaction traces.'
1836
+ },
1837
+ # Process host
1838
+ :'process_host.display_name' => {
1839
+ :default => proc { NewRelic::Agent::Hostname.get },
1840
+ :public => true,
1841
+ :type => String,
1411
1842
  :allowed_from_server => false,
1412
- :transform => DefaultSource.method(:convert_to_list),
1413
- :description => 'Prefix of attributes to include in transaction events. Allows * as wildcard at end.'
1843
+ :description => 'Specify a custom host name for [display in the New Relic UI](/docs/apm/new-relic-apm/maintenance/add-rename-remove-hosts#display_name).'
1414
1844
  },
1415
- :'error_collector.attributes.include' => {
1416
- :default => [],
1417
- :public => false,
1418
- :type => Array,
1845
+ # Rails
1846
+ :'defer_rails_initialization' => {
1847
+ :default => false,
1848
+ :public => true,
1849
+ :type => Boolean,
1850
+ :external => true, # this config is used directly from the ENV variables
1419
1851
  :allowed_from_server => false,
1420
- :transform => DefaultSource.method(:convert_to_list),
1421
- :description => 'Prefix of attributes to include in error collection. Allows * as wildcard at end.'
1852
+ :description => <<-DESCRIPTION
1853
+ If `true`, when the agent is in an application using Ruby on Rails, it will start after `config/initializers` run.
1854
+
1855
+ <Callout variant="caution">
1856
+ This option may only be set by environment variable.
1857
+ </Callout>
1858
+ DESCRIPTION
1422
1859
  },
1423
- :'browser_monitoring.attributes.include' => {
1424
- :default => [],
1425
- :public => false,
1426
- :type => Array,
1860
+ # Rake
1861
+ :'rake.tasks' => {
1862
+ :default => [],
1863
+ :public => true,
1864
+ :type => Array,
1865
+ :allowed_from_server => false,
1866
+ :transform => DefaultSource.method(:convert_to_regexp_list),
1867
+ :description => 'Specify an Array of Rake tasks to automatically instrument. ' \
1868
+ 'This configuration option converts the Array to a RegEx list. If you\'d like ' \
1869
+ 'to allow all tasks by default, use `rake.tasks: [.+]`. No rake tasks will be ' \
1870
+ 'instrumented unless they\'re added to this list. For more information, ' \
1871
+ 'visit the [New Relic Rake Instrumentation docs](/docs/apm/agents/ruby-agent/background-jobs/rake-instrumentation).'
1872
+ },
1873
+ :'rake.connect_timeout' => {
1874
+ :default => 10,
1875
+ :public => true,
1876
+ :type => Integer,
1877
+ :allowed_from_server => false,
1878
+ :description => 'Timeout for waiting on connect to complete before a rake task'
1879
+ },
1880
+ # Rules
1881
+ :'rules.ignore_url_regexes' => {
1882
+ :default => [],
1883
+ :public => true,
1884
+ :type => Array,
1885
+ :allowed_from_server => true,
1886
+ :transform => DefaultSource.method(:convert_to_regexp_list),
1887
+ :description => 'Define transactions you want the agent to ignore, by specifying a list of patterns matching the URI you want to ignore. For more detail, see [the docs on ignoring specific transactions](/docs/agents/ruby-agent/api-guides/ignoring-specific-transactions/#config-ignoring).'
1888
+ },
1889
+ # Serverless
1890
+ :'serverless_mode.enabled' => {
1891
+ :default => false,
1892
+ :public => true,
1893
+ :type => Boolean,
1894
+ :allowed_from_server => false,
1895
+ :transform => proc { |bool| NewRelic::Agent::ServerlessHandler.env_var_set? || bool },
1896
+ :description => 'If `true`, the agent will operate in a streamlined mode suitable for use with short-lived ' \
1897
+ 'serverless functions. NOTE: Only AWS Lambda functions are supported currently and this ' \
1898
+ "option is not intended for use without [New Relic's Ruby Lambda layer](https://docs.newrelic.com/docs/serverless-function-monitoring/aws-lambda-monitoring/get-started/monitoring-aws-lambda-serverless-monitoring/) offering."
1899
+ },
1900
+ # Sidekiq
1901
+ :'sidekiq.args.include' => {
1902
+ default: NewRelic::EMPTY_ARRAY,
1903
+ public: true,
1904
+ type: Array,
1905
+ dynamic_name: true,
1906
+ allowed_from_server: false,
1907
+ description: <<~SIDEKIQ_ARGS_INCLUDE.chomp.tr("\n", ' ')
1908
+ An array of strings that will collectively serve as an allowlist for filtering which Sidekiq
1909
+ job arguments get reported to New Relic. To capture any Sidekiq arguments,
1910
+ 'job.sidekiq.args.*' must be added to the separate `:'attributes.include'` configuration option. Each
1911
+ string in this array will be turned into a regular expression via `Regexp.new` to permit advanced
1912
+ matching. For job argument hashes, if either a key or value matches the pair will be included. All
1913
+ matching job argument array elements and job argument scalars will be included.
1914
+ SIDEKIQ_ARGS_INCLUDE
1915
+ },
1916
+ :'sidekiq.args.exclude' => {
1917
+ default: NewRelic::EMPTY_ARRAY,
1918
+ public: true,
1919
+ type: Array,
1920
+ dynamic_name: true,
1921
+ allowed_from_server: false,
1922
+ description: <<~SIDEKIQ_ARGS_EXCLUDE.chomp.tr("\n", ' ')
1923
+ An array of strings that will collectively serve as a denylist for filtering which Sidekiq
1924
+ job arguments get reported to New Relic. To capture any Sidekiq arguments,
1925
+ 'job.sidekiq.args.*' must be added to the separate `:'attributes.include'` configuration option. Each string
1926
+ in this array will be turned into a regular expression via `Regexp.new` to permit advanced matching.
1927
+ For job argument hashes, if either a key or value matches the pair will be excluded. All matching job
1928
+ argument array elements and job argument scalars will be excluded.
1929
+ SIDEKIQ_ARGS_EXCLUDE
1930
+ },
1931
+ # Slow SQL
1932
+ :'slow_sql.enabled' => {
1933
+ :default => value_of(:'transaction_tracer.enabled'),
1934
+ :documentation_default => true,
1935
+ :public => true,
1936
+ :type => Boolean,
1937
+ :allowed_from_server => true,
1938
+ :description => 'If `true`, the agent collects [slow SQL queries](/docs/apm/applications-menu/monitoring/viewing-slow-query-details).'
1939
+ },
1940
+ :'slow_sql.explain_threshold' => {
1941
+ :default => value_of(:'transaction_tracer.explain_threshold'),
1942
+ :documentation_default => 0.5,
1943
+ :public => true,
1944
+ :type => Float,
1945
+ :allowed_from_server => true,
1946
+ :description => 'Specify a threshold in seconds. The agent collects [slow SQL queries](/docs/apm/applications-menu/monitoring/viewing-slow-query-details) and explain plans that exceed this threshold.'
1947
+ },
1948
+ :'slow_sql.explain_enabled' => {
1949
+ :default => value_of(:'transaction_tracer.explain_enabled'),
1950
+ :documentation_default => true,
1951
+ :public => true,
1952
+ :type => Boolean,
1953
+ :allowed_from_server => true,
1954
+ :description => 'If `true`, the agent collects explain plans in slow SQL queries. If this setting is omitted, the [`transaction_tracer.explain_enabled`](#transaction_tracer-explain_enabled) setting will be applied as the default setting for explain plans in slow SQL as well.'
1955
+ },
1956
+ :'slow_sql.record_sql' => {
1957
+ :default => value_of(:'transaction_tracer.record_sql'),
1958
+ :documentation_default => 'obfuscated',
1959
+ :public => true,
1960
+ :type => String,
1961
+ :allowed_from_server => true,
1962
+ :description => 'Defines an obfuscation level for slow SQL queries. Valid options are `obfuscated`, `raw`, or `none`.'
1963
+ },
1964
+ :'slow_sql.use_longer_sql_id' => {
1965
+ :default => false,
1966
+ :public => true,
1967
+ :type => Boolean,
1968
+ :allowed_from_server => true,
1969
+ :description => 'Generate a longer `sql_id` for slow SQL traces. `sql_id` is used for aggregation of similar queries.'
1970
+ },
1971
+ # Span events
1972
+ :'span_events.enabled' => {
1973
+ :default => true,
1974
+ :public => true,
1975
+ :type => Boolean,
1976
+ :allowed_from_server => true,
1977
+ :description => 'If `true`, enables span event sampling.'
1978
+ },
1979
+ :'span_events.queue_size' => {
1980
+ :default => 10_000,
1981
+ :public => true,
1982
+ :type => Integer,
1983
+ :allowed_from_server => false,
1984
+ :external => :infinite_tracing,
1985
+ :description => 'Sets the maximum number of span events to buffer when streaming to the trace observer.'
1986
+ },
1987
+ :'span_events.max_samples_stored' => {
1988
+ :default => 2000,
1989
+ :public => true,
1990
+ :type => Integer,
1991
+ :allowed_from_server => true,
1992
+ :description => <<~DESC
1993
+ * Defines the maximum number of span events reported from a single harvest. Any Integer between `1` and `10000` is valid.'
1994
+ * When configuring the agent for [AI monitoring](/docs/ai-monitoring/intro-to-ai-monitoring), set to max value `10000`.\
1995
+ This ensures the agent captures the maximum amount of distributed traces.
1996
+ DESC
1997
+ },
1998
+ # Strip exception messages
1999
+ :'strip_exception_messages.enabled' => {
2000
+ :default => value_of(:high_security),
2001
+ :documentation_default => false,
2002
+ :public => true,
2003
+ :type => Boolean,
2004
+ :allowed_from_server => false,
2005
+ :description => 'If true, the agent strips messages from all exceptions except those in the [allowlist](#strip_exception_messages-allowlist). Enabled automatically in [high security mode](/docs/accounts-partnerships/accounts/security/high-security).'
2006
+ },
2007
+ :'strip_exception_messages.allowed_classes' => {
2008
+ :default => '',
2009
+ :public => true,
2010
+ :type => String,
2011
+ :allowed_from_server => false,
2012
+ :transform => DefaultSource.method(:convert_to_constant_list),
2013
+ :description => 'Specify a list of exceptions you do not want the agent to strip when [strip_exception_messages](#strip_exception_messages-enabled) is `true`. Separate exceptions with a comma. For example, `"ImportantException,PreserveMessageException"`.'
2014
+ },
2015
+ # Thread profiler
2016
+ :'thread_profiler.enabled' => {
2017
+ :default => DefaultSource.thread_profiler_enabled,
2018
+ :documentation_default => false,
2019
+ :public => true,
2020
+ :type => Boolean,
2021
+ :allowed_from_server => true,
2022
+ :description => 'If `true`, enables use of the [thread profiler](/docs/apm/applications-menu/events/thread-profiler-tool).'
2023
+ },
2024
+ # Utilization
2025
+ :'utilization.detect_aws' => {
2026
+ :default => true,
2027
+ :public => true,
2028
+ :type => Boolean,
2029
+ :allowed_from_server => false,
2030
+ :dynamic_name => true,
2031
+ :description => 'If `true`, the agent automatically detects that it is running in an AWS environment.'
2032
+ },
2033
+ :'utilization.detect_azure' => {
2034
+ :default => true,
2035
+ :public => true,
2036
+ :type => Boolean,
2037
+ :allowed_from_server => false,
2038
+ :dynamic_name => true,
2039
+ :description => 'If `true`, the agent automatically detects that it is running in an Azure environment.'
2040
+ },
2041
+ :'utilization.detect_docker' => {
2042
+ :default => true,
2043
+ :public => true,
2044
+ :type => Boolean,
2045
+ :allowed_from_server => false,
2046
+ :description => 'If `true`, the agent automatically detects that it is running in Docker.'
2047
+ },
2048
+ :'utilization.detect_gcp' => {
2049
+ :default => true,
2050
+ :public => true,
2051
+ :type => Boolean,
2052
+ :allowed_from_server => false,
2053
+ :dynamic_name => true,
2054
+ :description => 'If `true`, the agent automatically detects that it is running in an Google Cloud Platform environment.'
2055
+ },
2056
+ :'utilization.detect_kubernetes' => {
2057
+ :default => true,
2058
+ :public => true,
2059
+ :type => Boolean,
2060
+ :allowed_from_server => false,
2061
+ :description => 'If `true`, the agent automatically detects that it is running in Kubernetes.'
2062
+ },
2063
+ :'utilization.detect_pcf' => {
2064
+ :default => true,
2065
+ :public => true,
2066
+ :type => Boolean,
2067
+ :allowed_from_server => false,
2068
+ :dynamic_name => true,
2069
+ :description => 'If `true`, the agent automatically detects that it is running in a Pivotal Cloud Foundry environment.'
2070
+ },
2071
+ # Private
2072
+ :account_id => {
2073
+ :default => nil,
2074
+ :allow_nil => true,
2075
+ :public => false,
2076
+ :type => String,
2077
+ :allowed_from_server => true,
2078
+ :description => 'The account id associated with your application.'
2079
+ },
2080
+ :aggressive_keepalive => {
2081
+ :default => true,
2082
+ :public => false,
2083
+ :type => Boolean,
2084
+ :allowed_from_server => true,
2085
+ :description => 'If true, attempt to keep the TCP connection to the collector alive between harvests.'
2086
+ },
2087
+ :api_host => {
2088
+ :default => DefaultSource.api_host,
2089
+ :public => false,
2090
+ :type => String,
2091
+ :allowed_from_server => false,
2092
+ :description => 'API host for New Relic.'
2093
+ },
2094
+ :api_port => {
2095
+ :default => value_of(:port),
2096
+ :public => false,
2097
+ :type => Integer,
2098
+ :allowed_from_server => false,
2099
+ :description => 'Port for the New Relic API host.'
2100
+ },
2101
+ :application_id => {
2102
+ :default => '',
2103
+ :public => false,
2104
+ :type => String,
2105
+ :allowed_from_server => true,
2106
+ :description => 'Application ID for real user monitoring.'
2107
+ },
2108
+ :beacon => {
2109
+ :default => '',
2110
+ :public => false,
2111
+ :type => String,
2112
+ :allowed_from_server => true,
2113
+ :description => 'Beacon for real user monitoring.'
2114
+ },
2115
+ :browser_key => {
2116
+ :default => '',
2117
+ :public => false,
2118
+ :type => String,
2119
+ :allowed_from_server => true,
2120
+ :description => 'Real user monitoring license key for the browser timing header.'
2121
+ },
2122
+ :'browser_monitoring.loader' => {
2123
+ :default => 'rum',
2124
+ :public => false,
2125
+ :type => String,
2126
+ :allowed_from_server => true,
2127
+ :description => 'Type of JavaScript agent loader to use for browser monitoring instrumentation.'
2128
+ },
2129
+ :'browser_monitoring.loader_version' => {
2130
+ :default => '',
2131
+ :public => false,
2132
+ :type => String,
2133
+ :allowed_from_server => true,
2134
+ :description => 'Version of JavaScript agent loader (returned from the New Relic [collector](/docs/apm/new-relic-apm/getting-started/glossary#collector).)'
2135
+ },
2136
+ :'browser_monitoring.debug' => {
2137
+ :default => false,
2138
+ :public => false,
2139
+ :type => Boolean,
2140
+ :allowed_from_server => true,
2141
+ :description => 'Enable or disable debugging version of JavaScript agent loader for browser monitoring instrumentation.'
2142
+ },
2143
+ :'browser_monitoring.ssl_for_http' => {
2144
+ :default => nil,
2145
+ :allow_nil => true,
2146
+ :public => false,
2147
+ :type => Boolean,
2148
+ :allowed_from_server => true,
2149
+ :description => 'Enable or disable HTTPS instrumentation by JavaScript agent on HTTP pages.'
2150
+ },
2151
+ :compressed_content_encoding => {
2152
+ :default => 'gzip',
2153
+ :public => false,
2154
+ :type => String,
2155
+ :allowed_from_server => false,
2156
+ :description => 'Encoding to use if data needs to be compressed. The options are deflate and gzip.'
2157
+ },
2158
+ :config_search_paths => {
2159
+ :default => DefaultSource.config_search_paths,
2160
+ :public => false,
2161
+ :type => Array,
2162
+ :allowed_from_server => false,
2163
+ :description => "An array of candidate locations for the agent's configuration file."
2164
+ },
2165
+ :cross_process_id => {
2166
+ :default => '',
2167
+ :public => false,
2168
+ :type => String,
2169
+ :allowed_from_server => true,
2170
+ :description => 'Cross process ID for cross-application tracing.'
2171
+ },
2172
+ :data_report_period => {
2173
+ :default => 60,
2174
+ :public => false,
2175
+ :type => Integer,
2176
+ :allowed_from_server => true,
2177
+ :description => 'Number of seconds betwixt connections to the New Relic data collection service.'
2178
+ },
2179
+ :dispatcher => {
2180
+ :default => DefaultSource.dispatcher,
2181
+ :public => false,
2182
+ :type => Symbol,
2183
+ :allowed_from_server => false,
2184
+ :description => 'Autodetected application component that reports metrics to New Relic.'
2185
+ },
2186
+ :disable_harvest_thread => {
2187
+ :default => false,
2188
+ :public => false,
2189
+ :type => Boolean,
2190
+ :allowed_from_server => false,
2191
+ :description => 'Enable or disable the harvest thread.'
2192
+ },
2193
+ :disable_rails_middleware => {
2194
+ :default => false,
2195
+ :public => false,
2196
+ :type => Boolean,
2197
+ :allowed_from_server => false,
2198
+ :description => 'Internal name for controlling Rails 3+ middleware instrumentation'
2199
+ },
2200
+ :enabled => {
2201
+ :default => true,
2202
+ :public => false,
2203
+ :type => Boolean,
2204
+ :aliases => [:enable],
2205
+ :allowed_from_server => false,
2206
+ :description => 'Enable or disable the agent.'
2207
+ },
2208
+ :encoding_key => {
2209
+ :default => '',
2210
+ :public => false,
2211
+ :type => String,
2212
+ :allowed_from_server => true,
2213
+ :description => 'Encoding key for cross-application tracing.'
2214
+ },
2215
+ :entity_guid => {
2216
+ :default => nil,
2217
+ :allow_nil => true,
2218
+ :public => false,
2219
+ :type => String,
2220
+ :allowed_from_server => true,
2221
+ :description => 'The [Entity GUID](/attribute-dictionary/span/entityguid) for the entity running your agent.'
2222
+ },
2223
+ :error_beacon => {
2224
+ :default => '',
2225
+ :public => false,
2226
+ :type => String,
2227
+ :allowed_from_server => true,
2228
+ :description => 'Error beacon for real user monitoring.'
2229
+ },
2230
+ :event_report_period => {
2231
+ :default => 60,
2232
+ :public => false,
2233
+ :type => Integer,
2234
+ :allowed_from_server => true,
2235
+ :description => 'Number of seconds betwixt connections to the New Relic event collection services.'
2236
+ },
2237
+ :'event_report_period.transaction_event_data' => {
2238
+ :default => 60,
2239
+ :public => false,
2240
+ :type => Integer,
2241
+ :dynamic_name => true,
2242
+ :allowed_from_server => true,
2243
+ :description => 'Number of seconds betwixt connections to the New Relic transaction event collection services.'
2244
+ },
2245
+ :'event_report_period.custom_event_data' => {
2246
+ :default => 60,
2247
+ :public => false,
2248
+ :type => Integer,
2249
+ :dynamic_name => true,
2250
+ :allowed_from_server => true,
2251
+ :description => 'Number of seconds betwixt connections to the New Relic custom event collection services.'
2252
+ },
2253
+ :'event_report_period.error_event_data' => {
2254
+ :default => 60,
2255
+ :public => false,
2256
+ :type => Integer,
2257
+ :dynamic_name => true,
2258
+ :allowed_from_server => true,
2259
+ :description => 'Number of seconds betwixt connections to the New Relic error event collection services.'
2260
+ },
2261
+ :'event_report_period.log_event_data' => {
2262
+ :default => 60,
2263
+ :public => false,
2264
+ :type => Integer,
2265
+ :dynamic_name => true,
2266
+ :allowed_from_server => true,
2267
+ :description => 'Number of seconds betwixt connections to the New Relic log event collection services.'
2268
+ },
2269
+ :'event_report_period.span_event_data' => {
2270
+ :default => 60,
2271
+ :public => false,
2272
+ :type => Integer,
2273
+ :dynamic_name => true,
2274
+ :allowed_from_server => true,
2275
+ :description => 'Number of seconds betwixt connections to the New Relic span event collection services.'
2276
+ },
2277
+ :force_reconnect => {
2278
+ :default => false,
2279
+ :public => false,
2280
+ :type => Boolean,
2281
+ :allowed_from_server => false,
2282
+ :description => 'Force a new connection to the server before running the worker loop. Creates a separate agent run and is recorded as a separate instance by the New Relic data collection service.'
2283
+ },
2284
+ :framework => {
2285
+ :default => DefaultSource.framework,
2286
+ :public => false,
2287
+ :type => Symbol,
2288
+ :allowed_from_server => false,
2289
+ :description => 'Autodetected application framework used to enable framework-specific functionality.'
2290
+ },
2291
+ :host => {
2292
+ :default => DefaultSource.host,
2293
+ :public => false,
2294
+ :type => String,
2295
+ :allowed_from_server => false,
2296
+ :description => 'URI for the New Relic data collection service.'
2297
+ },
2298
+ :'infinite_tracing.batching' => {
2299
+ :default => true,
2300
+ :public => true,
2301
+ :type => Boolean,
2302
+ :allowed_from_server => false,
2303
+ :external => :infinite_tracing,
2304
+ :description => 'If `true` (the default), data sent to the trace observer is batched instead of ' \
2305
+ 'sending each span individually.'
2306
+ },
2307
+ :'infinite_tracing.compression_level' => {
2308
+ :default => :high,
2309
+ :public => true,
2310
+ :type => Symbol,
2311
+ :allowed_from_server => false,
2312
+ :allowlist => %i[none low medium high],
2313
+ :external => :infinite_tracing,
2314
+ :description => <<~DESC
2315
+ Configure the compression level for data sent to the trace observer.
2316
+
2317
+ May be one of: `:none`, `:low`, `:medium`, `:high`.
2318
+
2319
+ Set the level to `:none` to disable compression.
2320
+ DESC
2321
+ },
2322
+ :js_agent_file => {
2323
+ :default => '',
2324
+ :public => false,
2325
+ :type => String,
2326
+ :allowed_from_server => true,
2327
+ :description => 'JavaScript agent file for real user monitoring.'
2328
+ },
2329
+ :js_agent_loader => {
2330
+ :default => '',
2331
+ :public => false,
2332
+ :type => String,
2333
+ :allowed_from_server => true,
2334
+ :description => 'JavaScript agent loader content.',
2335
+ :exclude_from_reported_settings => true
2336
+ },
2337
+ :keep_alive_timeout => {
2338
+ :default => 60,
2339
+ :public => false,
2340
+ :type => Integer,
2341
+ :allowed_from_server => true,
2342
+ :description => 'Timeout for keep alive on TCP connection to collector if supported by Ruby version. Only used in conjunction when aggressive_keepalive is enabled.'
2343
+ },
2344
+ :max_payload_size_in_bytes => {
2345
+ :default => 1000000,
2346
+ :public => false,
2347
+ :type => Integer,
2348
+ :allowed_from_server => true,
2349
+ :description => 'Maximum number of bytes to send to the New Relic data collection service.'
2350
+ },
2351
+ :normalize_json_string_encodings => {
2352
+ :default => true,
2353
+ :public => false,
2354
+ :type => Boolean,
2355
+ :allowed_from_server => false,
2356
+ :description => 'Controls whether to normalize string encodings prior to serializing data for the collector to JSON.'
2357
+ },
2358
+ :port => {
2359
+ :default => 443,
2360
+ :public => false,
2361
+ :type => Integer,
2362
+ :allowed_from_server => false,
2363
+ :description => 'Port for the New Relic data collection service.'
2364
+ },
2365
+ :primary_application_id => {
2366
+ :default => nil,
2367
+ :allow_nil => true,
2368
+ :public => false,
2369
+ :type => String,
2370
+ :allowed_from_server => true,
2371
+ :description => 'The primary id associated with your application.'
2372
+ },
2373
+ :put_for_data_send => {
2374
+ :default => false,
2375
+ :public => false,
2376
+ :type => Boolean,
2377
+ :allowed_from_server => false,
2378
+ :description => 'Use HTTP PUT requests instead of POST.'
2379
+ },
2380
+ :report_instance_busy => {
2381
+ :default => true,
2382
+ :public => false,
2383
+ :type => Boolean,
2384
+ :allowed_from_server => false,
2385
+ :description => 'Enable or disable transmission of metrics recording the percentage of time application instances spend servicing requests (duty cycle metrics).'
2386
+ },
2387
+ :restart_thread_in_children => {
2388
+ :default => true,
2389
+ :public => false,
2390
+ :type => Boolean,
2391
+ :allowed_from_server => false,
2392
+ :description => 'Controls whether to check on running a transaction whether to respawn the harvest thread.'
2393
+ },
2394
+ :'resque.use_ruby_dns' => {
2395
+ :default => true,
2396
+ :public => false,
2397
+ :type => Boolean,
2398
+ :allowed_from_server => false,
2399
+ :description => 'Replace the libc DNS resolver with the all Ruby resolver Resolv'
2400
+ },
2401
+ :'rum.enabled' => {
2402
+ :default => true,
2403
+ :public => false,
2404
+ :type => Boolean,
2405
+ :allowed_from_server => true,
2406
+ :description => 'Enable or disable page load timing (sometimes referred to as real user monitoring or RUM).'
2407
+ },
2408
+ :sampling_target => {
2409
+ :default => 10,
2410
+ :public => false,
2411
+ :type => Integer,
2412
+ :allowed_from_server => true,
2413
+ :description => 'The target number of transactions to mark as sampled during a sampled period.'
2414
+ },
2415
+ :sampling_target_period_in_seconds => {
2416
+ :default => 60,
2417
+ :public => false,
2418
+ :type => Integer,
2419
+ :allowed_from_server => true,
2420
+ :description => 'The period during which a target number of transactions should be marked as sampled.'
2421
+ },
2422
+ :send_environment_info => {
2423
+ :default => true,
2424
+ :public => false,
2425
+ :type => Boolean,
2426
+ :allowed_from_server => false,
2427
+ :description => 'Enable or disable transmission of application environment information to the New Relic data collection service.'
2428
+ },
2429
+ :simple_compression => {
2430
+ :default => false,
2431
+ :public => false,
2432
+ :type => Boolean,
2433
+ :allowed_from_server => false,
2434
+ :description => 'When enabled the agent will compress payloads destined for the collector, but will not pre-compress parts of the payload.'
2435
+ },
2436
+ :skip_ar_instrumentation => {
2437
+ :default => false,
2438
+ :public => false,
2439
+ :type => Boolean,
2440
+ :allowed_from_server => false,
2441
+ :description => 'Enable or disable active record instrumentation.'
2442
+ },
2443
+ :'synthetics.traces_limit' => {
2444
+ :default => 20,
2445
+ :public => false,
2446
+ :type => Integer,
2447
+ :allowed_from_server => true,
2448
+ :description => 'Maximum number of synthetics transaction traces to hold for a given harvest'
2449
+ },
2450
+ :'synthetics.events_limit' => {
2451
+ :default => 200,
2452
+ :public => false,
2453
+ :type => Integer,
2454
+ :allowed_from_server => true,
2455
+ :description => 'Maximum number of synthetics transaction events to hold for a given harvest'
2456
+ },
2457
+ :test_mode => {
2458
+ :default => false,
2459
+ :public => false,
2460
+ :type => Boolean,
2461
+ :allowed_from_server => false,
2462
+ :description => 'Used in tests for the agent to start-up, but not connect to the collector. Formerly used `developer_mode` in test config for this purpose.'
2463
+ },
2464
+ :'thread_profiler.max_profile_overhead' => {
2465
+ :default => 0.05,
2466
+ :public => false,
2467
+ :type => Float,
2468
+ :allowed_from_server => true,
2469
+ :description => 'Maximum overhead percentage for thread profiling before agent reduces polling frequency'
2470
+ },
2471
+ :trusted_account_ids => {
2472
+ :default => [],
2473
+ :public => false,
2474
+ :type => Array,
2475
+ :allowed_from_server => true,
2476
+ :description => 'List of trusted New Relic account IDs for the purposes of cross-application tracing. Inbound requests from applications including cross-application headers that do not come from an account in this list will be ignored.'
2477
+ },
2478
+ :trusted_account_key => {
2479
+ :default => nil,
2480
+ :allow_nil => true,
2481
+ :public => false,
2482
+ :type => String,
2483
+ :allowed_from_server => true,
2484
+ :description => 'A shared key to validate that a distributed trace payload came from a trusted account.'
2485
+ },
2486
+ :'utilization.billing_hostname' => {
2487
+ :default => nil,
2488
+ :allow_nil => true,
2489
+ :public => false,
2490
+ :type => String,
2491
+ :allowed_from_server => false,
2492
+ :description => 'The configured server name by a customer.'
2493
+ },
2494
+ :'utilization.logical_processors' => {
2495
+ :default => nil,
2496
+ :allow_nil => true,
2497
+ :public => false,
2498
+ :type => Integer,
2499
+ :allowed_from_server => false,
2500
+ :description => 'The total number of hyper-threaded execution contexts available.'
2501
+ },
2502
+ :'utilization.total_ram_mib' => {
2503
+ :default => nil,
2504
+ :allow_nil => true,
2505
+ :public => false,
2506
+ :type => Integer,
1427
2507
  :allowed_from_server => false,
1428
- :transform => DefaultSource.method(:convert_to_list),
1429
- :description => 'Prefix of attributes to include in browser monitoring. Allows * as wildcard at end.'
2508
+ :description => 'This value represents the total amount of memory available to the host (not the process), in mebibytes (1024 squared or 1,048,576 bytes).'
1430
2509
  }
1431
2510
  }.freeze
2511
+ # rubocop:enable Metrics/CollectionLiteralLength
1432
2512
  end
1433
2513
  end
1434
2514
  end