newrelic_rpm 5.7.0.350 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (360) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -0
  3. data/.yardopts +1 -0
  4. data/CHANGELOG.md +788 -0
  5. data/CONTRIBUTING.md +106 -19
  6. data/Gemfile +6 -2
  7. data/Guardfile +18 -1
  8. data/LICENSE +208 -38
  9. data/README.md +80 -84
  10. data/ROADMAP.md +24 -0
  11. data/Rakefile +2 -0
  12. data/THIRD_PARTY_NOTICES.md +213 -0
  13. data/bin/nrdebug +1 -1
  14. data/init.rb +1 -1
  15. data/install.rb +1 -1
  16. data/lib/new_relic/agent/adaptive_sampler.rb +1 -1
  17. data/lib/new_relic/agent/agent.rb +176 -191
  18. data/lib/new_relic/agent/agent_logger.rb +5 -1
  19. data/lib/new_relic/agent/attribute_filter.rb +8 -8
  20. data/lib/new_relic/agent/attribute_processing.rb +1 -1
  21. data/lib/new_relic/agent/attributes.rb +152 -0
  22. data/lib/new_relic/agent/audit_logger.rb +11 -1
  23. data/lib/new_relic/agent/autostart.rb +19 -15
  24. data/lib/new_relic/agent/chained_call.rb +1 -1
  25. data/lib/new_relic/agent/commands/agent_command.rb +1 -1
  26. data/lib/new_relic/agent/commands/agent_command_router.rb +3 -22
  27. data/lib/new_relic/agent/commands/thread_profiler_session.rb +1 -1
  28. data/lib/new_relic/agent/configuration/default_source.rb +447 -89
  29. data/lib/new_relic/agent/configuration/dotted_hash.rb +1 -1
  30. data/lib/new_relic/agent/configuration/environment_source.rb +5 -3
  31. data/lib/new_relic/agent/configuration/event_harvest_config.rb +45 -0
  32. data/lib/new_relic/agent/configuration/high_security_source.rb +2 -1
  33. data/lib/new_relic/agent/configuration/manager.rb +16 -12
  34. data/lib/new_relic/agent/configuration/manual_source.rb +1 -1
  35. data/lib/new_relic/agent/configuration/mask_defaults.rb +1 -1
  36. data/lib/new_relic/agent/configuration/security_policy_source.rb +1 -1
  37. data/lib/new_relic/agent/configuration/server_source.rb +39 -4
  38. data/lib/new_relic/agent/configuration/yaml_source.rb +12 -7
  39. data/lib/new_relic/agent/configuration.rb +1 -1
  40. data/lib/new_relic/agent/connect/request_builder.rb +61 -0
  41. data/lib/new_relic/agent/connect/response_handler.rb +61 -0
  42. data/lib/new_relic/agent/custom_event_aggregator.rb +1 -1
  43. data/lib/new_relic/agent/database/explain_plan_helpers.rb +1 -1
  44. data/lib/new_relic/agent/database/obfuscation_helpers.rb +2 -2
  45. data/lib/new_relic/agent/database/obfuscator.rb +1 -1
  46. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +1 -1
  47. data/lib/new_relic/agent/database.rb +2 -3
  48. data/lib/new_relic/agent/database_adapter.rb +33 -0
  49. data/lib/new_relic/agent/datastores/metric_helper.rb +2 -3
  50. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +3 -3
  51. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +1 -1
  52. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +9 -9
  53. data/lib/new_relic/agent/datastores/mongo/statement_formatter.rb +1 -1
  54. data/lib/new_relic/agent/datastores/mongo.rb +2 -2
  55. data/lib/new_relic/agent/datastores/redis.rb +1 -5
  56. data/lib/new_relic/agent/datastores.rb +7 -9
  57. data/lib/new_relic/agent/deprecator.rb +1 -1
  58. data/lib/new_relic/agent/{cross_app_payload.rb → distributed_tracing/cross_app_payload.rb} +3 -2
  59. data/lib/new_relic/agent/{cross_app_tracing.rb → distributed_tracing/cross_app_tracing.rb} +61 -46
  60. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +84 -0
  61. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +75 -0
  62. data/lib/new_relic/agent/{distributed_trace_payload.rb → distributed_tracing/distributed_trace_payload.rb} +32 -113
  63. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +39 -0
  64. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +246 -0
  65. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +126 -0
  66. data/lib/new_relic/agent/distributed_tracing.rb +115 -32
  67. data/lib/new_relic/agent/encoding_normalizer.rb +1 -1
  68. data/lib/new_relic/agent/error_collector.rb +37 -20
  69. data/lib/new_relic/agent/error_event_aggregator.rb +10 -7
  70. data/lib/new_relic/agent/error_trace_aggregator.rb +2 -1
  71. data/lib/new_relic/agent/event_aggregator.rb +27 -33
  72. data/lib/new_relic/agent/event_buffer.rb +1 -1
  73. data/lib/new_relic/agent/event_listener.rb +1 -1
  74. data/lib/new_relic/agent/event_loop.rb +1 -1
  75. data/lib/new_relic/agent/external.rb +13 -11
  76. data/lib/new_relic/agent/guid_generator.rb +28 -0
  77. data/lib/new_relic/agent/harvester.rb +1 -1
  78. data/lib/new_relic/agent/heap.rb +1 -1
  79. data/lib/new_relic/agent/hostname.rb +16 -2
  80. data/lib/new_relic/agent/http_clients/abstract.rb +82 -0
  81. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +25 -20
  82. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +29 -14
  83. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +18 -22
  84. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +11 -12
  85. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +17 -5
  86. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +5 -7
  87. data/lib/new_relic/agent/http_clients/uri_util.rb +12 -11
  88. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +26 -43
  89. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +53 -73
  90. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +81 -56
  91. data/lib/new_relic/agent/instrumentation/active_job.rb +7 -8
  92. data/lib/new_relic/agent/instrumentation/active_merchant.rb +1 -1
  93. data/lib/new_relic/agent/instrumentation/active_record.rb +85 -38
  94. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +17 -6
  95. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +152 -0
  96. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +35 -11
  97. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +47 -49
  98. data/lib/new_relic/agent/instrumentation/active_storage.rb +1 -1
  99. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +13 -9
  100. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +10 -9
  101. data/lib/new_relic/agent/instrumentation/authlogic.rb +1 -1
  102. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +45 -0
  103. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +152 -0
  104. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +35 -0
  105. data/lib/new_relic/agent/instrumentation/bunny.rb +13 -132
  106. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +10 -4
  107. data/lib/new_relic/agent/instrumentation/curb/chain.rb +93 -0
  108. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +222 -0
  109. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +63 -0
  110. data/lib/new_relic/agent/instrumentation/curb.rb +11 -183
  111. data/lib/new_relic/agent/instrumentation/data_mapper.rb +5 -3
  112. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +38 -0
  113. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +53 -0
  114. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +34 -0
  115. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +9 -49
  116. data/lib/new_relic/agent/instrumentation/excon/connection.rb +8 -5
  117. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +3 -2
  118. data/lib/new_relic/agent/instrumentation/excon.rb +4 -3
  119. data/lib/new_relic/agent/instrumentation/grape/chain.rb +25 -0
  120. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +100 -0
  121. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +17 -0
  122. data/lib/new_relic/agent/instrumentation/grape.rb +14 -118
  123. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +25 -0
  124. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +38 -0
  125. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +17 -0
  126. data/lib/new_relic/agent/instrumentation/httpclient.rb +10 -30
  127. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +22 -0
  128. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +30 -0
  129. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +15 -0
  130. data/lib/new_relic/agent/instrumentation/httprb.rb +29 -0
  131. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +1 -1
  132. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +16 -0
  133. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +39 -118
  134. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +56 -0
  135. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +88 -0
  136. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +88 -0
  137. data/lib/new_relic/agent/instrumentation/memcache.rb +55 -68
  138. data/lib/new_relic/agent/instrumentation/merb/controller.rb +1 -1
  139. data/lib/new_relic/agent/instrumentation/merb/errors.rb +1 -1
  140. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +4 -2
  141. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +20 -11
  142. data/lib/new_relic/agent/instrumentation/mongo.rb +17 -4
  143. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +36 -3
  144. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +25 -0
  145. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +40 -0
  146. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +21 -0
  147. data/lib/new_relic/agent/instrumentation/net_http.rb +39 -0
  148. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +100 -0
  149. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +34 -0
  150. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +27 -0
  151. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +20 -0
  152. data/lib/new_relic/agent/instrumentation/padrino.rb +19 -52
  153. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +1 -1
  154. data/lib/new_relic/agent/instrumentation/queue_time.rb +1 -1
  155. data/lib/new_relic/agent/instrumentation/rack/chain.rb +57 -0
  156. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +32 -0
  157. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +73 -0
  158. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +36 -0
  159. data/lib/new_relic/agent/instrumentation/rack.rb +30 -138
  160. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +1 -1
  161. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +1 -1
  162. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +1 -1
  163. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +1 -1
  164. data/lib/new_relic/agent/instrumentation/{rails5 → rails_notifications}/action_cable.rb +6 -7
  165. data/lib/new_relic/agent/instrumentation/{rails5 → rails_notifications}/action_controller.rb +4 -4
  166. data/lib/new_relic/agent/instrumentation/{rails4 → rails_notifications}/action_view.rb +4 -4
  167. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +1 -1
  168. data/lib/new_relic/agent/instrumentation/rake/chain.rb +25 -0
  169. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +144 -0
  170. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +14 -0
  171. data/lib/new_relic/agent/instrumentation/rake.rb +14 -155
  172. data/lib/new_relic/agent/instrumentation/redis/chain.rb +34 -0
  173. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +65 -0
  174. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +24 -0
  175. data/lib/new_relic/agent/instrumentation/redis.rb +11 -104
  176. data/lib/new_relic/agent/instrumentation/resque/chain.rb +22 -0
  177. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +33 -0
  178. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +16 -0
  179. data/lib/new_relic/agent/instrumentation/resque.rb +9 -26
  180. data/lib/new_relic/agent/instrumentation/sequel.rb +1 -1
  181. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +1 -1
  182. data/lib/new_relic/agent/instrumentation/sidekiq.rb +48 -24
  183. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +55 -0
  184. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +30 -35
  185. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +118 -0
  186. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +33 -0
  187. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +1 -1
  188. data/lib/new_relic/agent/instrumentation/sinatra.rb +21 -160
  189. data/lib/new_relic/agent/instrumentation/sunspot.rb +1 -1
  190. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +22 -0
  191. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +82 -0
  192. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +14 -0
  193. data/lib/new_relic/agent/instrumentation/typhoeus.rb +12 -74
  194. data/lib/new_relic/agent/instrumentation.rb +1 -1
  195. data/lib/new_relic/agent/internal_agent_error.rb +1 -1
  196. data/lib/new_relic/agent/javascript_instrumentor.rb +3 -3
  197. data/lib/new_relic/agent/log_once.rb +1 -1
  198. data/lib/new_relic/agent/logging.rb +139 -0
  199. data/lib/new_relic/agent/memory_logger.rb +1 -1
  200. data/lib/new_relic/agent/messaging.rb +15 -82
  201. data/lib/new_relic/agent/method_tracer.rb +10 -8
  202. data/lib/new_relic/agent/method_tracer_helpers.rb +5 -5
  203. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +110 -0
  204. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +27 -0
  205. data/lib/new_relic/agent/{inbound_request_monitor.rb → monitors/inbound_request_monitor.rb} +4 -4
  206. data/lib/new_relic/agent/{synthetics_monitor.rb → monitors/synthetics_monitor.rb} +4 -7
  207. data/lib/new_relic/agent/monitors.rb +27 -0
  208. data/lib/new_relic/agent/new_relic_service/encoders.rb +1 -1
  209. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +1 -2
  210. data/lib/new_relic/agent/new_relic_service/marshaller.rb +6 -27
  211. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +1 -1
  212. data/lib/new_relic/agent/new_relic_service.rb +95 -40
  213. data/lib/new_relic/agent/noticible_error.rb +22 -0
  214. data/lib/new_relic/agent/null_logger.rb +1 -1
  215. data/lib/new_relic/agent/obfuscator.rb +1 -1
  216. data/lib/new_relic/agent/parameter_filtering.rb +19 -6
  217. data/lib/new_relic/agent/payload_metric_mapping.rb +1 -1
  218. data/lib/new_relic/agent/pipe_channel_manager.rb +1 -1
  219. data/lib/new_relic/agent/pipe_service.rb +1 -1
  220. data/lib/new_relic/agent/prepend_supportability.rb +1 -1
  221. data/lib/new_relic/agent/priority_sampled_buffer.rb +9 -4
  222. data/lib/new_relic/agent/range_extensions.rb +1 -1
  223. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +1 -1
  224. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +1 -1
  225. data/lib/new_relic/agent/rules_engine.rb +1 -1
  226. data/lib/new_relic/agent/sampler.rb +1 -1
  227. data/lib/new_relic/agent/sampler_collection.rb +1 -1
  228. data/lib/new_relic/agent/samplers/cpu_sampler.rb +1 -1
  229. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +1 -1
  230. data/lib/new_relic/agent/samplers/memory_sampler.rb +2 -2
  231. data/lib/new_relic/agent/samplers/object_sampler.rb +1 -1
  232. data/lib/new_relic/agent/samplers/vm_sampler.rb +1 -1
  233. data/lib/new_relic/agent/span_event_aggregator.rb +3 -5
  234. data/lib/new_relic/agent/span_event_primitive.rb +108 -54
  235. data/lib/new_relic/agent/sql_sampler.rb +10 -10
  236. data/lib/new_relic/agent/stats.rb +1 -1
  237. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +2 -2
  238. data/lib/new_relic/agent/stats_engine/stats_hash.rb +1 -1
  239. data/lib/new_relic/agent/stats_engine.rb +3 -3
  240. data/lib/new_relic/agent/supported_versions.rb +3 -3
  241. data/lib/new_relic/agent/synthetics_event_aggregator.rb +1 -1
  242. data/lib/new_relic/agent/system_info.rb +18 -4
  243. data/lib/new_relic/agent/threading/agent_thread.rb +2 -2
  244. data/lib/new_relic/agent/threading/backtrace_node.rb +1 -1
  245. data/lib/new_relic/agent/threading/backtrace_service.rb +4 -4
  246. data/lib/new_relic/agent/threading/thread_profile.rb +10 -24
  247. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +1 -1
  248. data/lib/new_relic/agent/tracer.rb +509 -0
  249. data/lib/new_relic/agent/transaction/abstract_segment.rb +33 -6
  250. data/lib/new_relic/agent/transaction/datastore_segment.rb +1 -1
  251. data/lib/new_relic/agent/transaction/distributed_tracer.rb +177 -0
  252. data/lib/new_relic/agent/transaction/distributed_tracing.rb +59 -149
  253. data/lib/new_relic/agent/transaction/external_request_segment.rb +32 -39
  254. data/lib/new_relic/agent/transaction/message_broker_segment.rb +5 -12
  255. data/lib/new_relic/agent/transaction/request_attributes.rb +1 -1
  256. data/lib/new_relic/agent/transaction/segment.rb +28 -2
  257. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +1 -1
  258. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +1 -1
  259. data/lib/new_relic/agent/transaction/trace.rb +6 -13
  260. data/lib/new_relic/agent/transaction/trace_builder.rb +1 -2
  261. data/lib/new_relic/agent/transaction/trace_context.rb +168 -0
  262. data/lib/new_relic/agent/transaction/trace_node.rb +11 -9
  263. data/lib/new_relic/agent/transaction/tracing.rb +1 -100
  264. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +1 -1
  265. data/lib/new_relic/agent/transaction.rb +140 -170
  266. data/lib/new_relic/agent/transaction_error_primitive.rb +11 -16
  267. data/lib/new_relic/agent/transaction_event_aggregator.rb +1 -1
  268. data/lib/new_relic/agent/transaction_event_primitive.rb +29 -40
  269. data/lib/new_relic/agent/transaction_event_recorder.rb +4 -4
  270. data/lib/new_relic/agent/transaction_metrics.rb +1 -1
  271. data/lib/new_relic/agent/transaction_sampler.rb +2 -6
  272. data/lib/new_relic/agent/transaction_time_aggregator.rb +20 -6
  273. data/lib/new_relic/agent/utilization/aws.rb +1 -1
  274. data/lib/new_relic/agent/utilization/azure.rb +1 -1
  275. data/lib/new_relic/agent/utilization/gcp.rb +1 -1
  276. data/lib/new_relic/agent/utilization/pcf.rb +1 -1
  277. data/lib/new_relic/agent/utilization/vendor.rb +1 -1
  278. data/lib/new_relic/agent/utilization_data.rb +37 -2
  279. data/lib/new_relic/agent/vm/jruby_vm.rb +1 -1
  280. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +1 -1
  281. data/lib/new_relic/agent/vm/mri_vm.rb +7 -5
  282. data/lib/new_relic/agent/vm/snapshot.rb +1 -1
  283. data/lib/new_relic/agent/vm.rb +1 -1
  284. data/lib/new_relic/agent/worker_loop.rb +1 -1
  285. data/lib/new_relic/agent.rb +106 -18
  286. data/lib/new_relic/cli/command.rb +1 -1
  287. data/lib/new_relic/cli/commands/deployments.rb +2 -3
  288. data/lib/new_relic/cli/commands/install.rb +4 -3
  289. data/lib/new_relic/coerce.rb +32 -7
  290. data/lib/new_relic/collection_helper.rb +1 -1
  291. data/lib/new_relic/constants.rb +42 -0
  292. data/lib/new_relic/control/class_methods.rb +8 -2
  293. data/lib/new_relic/control/frameworks/external.rb +1 -1
  294. data/lib/new_relic/control/frameworks/merb.rb +1 -1
  295. data/lib/new_relic/control/frameworks/rails.rb +12 -10
  296. data/lib/new_relic/control/frameworks/rails3.rb +1 -1
  297. data/lib/new_relic/control/frameworks/rails4.rb +1 -1
  298. data/lib/new_relic/control/frameworks/{rails5.rb → rails_notifications.rb} +2 -2
  299. data/lib/new_relic/control/frameworks/ruby.rb +1 -1
  300. data/lib/new_relic/control/frameworks/sinatra.rb +1 -1
  301. data/lib/new_relic/control/frameworks.rb +1 -1
  302. data/lib/new_relic/control/instance_methods.rb +12 -2
  303. data/lib/new_relic/control/instrumentation.rb +1 -1
  304. data/lib/new_relic/control/server_methods.rb +1 -1
  305. data/lib/new_relic/control.rb +1 -1
  306. data/lib/new_relic/delayed_job_injection.rb +1 -1
  307. data/lib/new_relic/dependency_detection.rb +124 -14
  308. data/lib/new_relic/environment_report.rb +2 -4
  309. data/lib/new_relic/helper.rb +1 -1
  310. data/lib/new_relic/language_support.rb +1 -1
  311. data/lib/new_relic/latest_changes.rb +2 -2
  312. data/lib/new_relic/local_environment.rb +1 -1
  313. data/lib/new_relic/metric_data.rb +1 -1
  314. data/lib/new_relic/metric_spec.rb +1 -1
  315. data/lib/new_relic/noticed_error.rb +35 -18
  316. data/lib/new_relic/rack/agent_hooks.rb +1 -1
  317. data/lib/new_relic/rack/agent_middleware.rb +2 -2
  318. data/lib/new_relic/rack/browser_monitoring.rb +16 -9
  319. data/lib/new_relic/rack.rb +1 -1
  320. data/lib/new_relic/recipes/capistrano3.rb +1 -1
  321. data/lib/new_relic/recipes/capistrano_legacy.rb +1 -1
  322. data/lib/new_relic/recipes.rb +1 -1
  323. data/lib/new_relic/supportability_helper.rb +16 -1
  324. data/lib/new_relic/version.rb +3 -3
  325. data/lib/newrelic_rpm.rb +1 -1
  326. data/lib/sequel/extensions/newrelic_instrumentation.rb +1 -1
  327. data/lib/sequel/plugins/newrelic_instrumentation.rb +1 -1
  328. data/lib/tasks/all.rb +1 -1
  329. data/lib/tasks/config.rake +1 -2
  330. data/lib/tasks/multiverse.rb +35 -1
  331. data/lib/tasks/newrelic.rb +1 -1
  332. data/lib/tasks/tests.rake +6 -1
  333. data/newrelic_rpm.gemspec +22 -17
  334. data/recipes/newrelic.rb +1 -1
  335. data/test/agent_helper.rb +358 -78
  336. metadata +147 -66
  337. data/.travis.yml +0 -228
  338. data/cert/cacert.pem +0 -1177
  339. data/lib/new_relic/agent/commands/xray_session.rb +0 -55
  340. data/lib/new_relic/agent/commands/xray_session_collection.rb +0 -161
  341. data/lib/new_relic/agent/cross_app_monitor.rb +0 -110
  342. data/lib/new_relic/agent/distributed_trace_monitor.rb +0 -41
  343. data/lib/new_relic/agent/http_clients/abstract_request.rb +0 -31
  344. data/lib/new_relic/agent/instrumentation/active_record_4.rb +0 -42
  345. data/lib/new_relic/agent/instrumentation/active_record_5.rb +0 -41
  346. data/lib/new_relic/agent/instrumentation/evented_subscriber.rb +0 -104
  347. data/lib/new_relic/agent/instrumentation/http.rb +0 -46
  348. data/lib/new_relic/agent/instrumentation/net.rb +0 -50
  349. data/lib/new_relic/agent/instrumentation/rails4/action_controller.rb +0 -32
  350. data/lib/new_relic/agent/instrumentation/rails5/action_view.rb +0 -27
  351. data/lib/new_relic/agent/transaction/attributes.rb +0 -154
  352. data/lib/new_relic/agent/transaction/xray_sample_buffer.rb +0 -64
  353. data/lib/new_relic/agent/transaction_state.rb +0 -186
  354. data/lib/new_relic/build.rb +0 -2
  355. data/lib/new_relic/metrics.rb +0 -13
  356. data/lib/tasks/versions.html.erb +0 -28
  357. data/lib/tasks/versions.postface.html +0 -8
  358. data/lib/tasks/versions.preface.html +0 -9
  359. data/lib/tasks/versions.rake +0 -65
  360. data/lib/tasks/versions.txt.erb +0 -14
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
 
5
5
  require 'forwardable'
6
6
 
@@ -15,6 +15,35 @@ module NewRelic
15
15
  end
16
16
  end
17
17
 
18
+ # Combines potentially two properties into one.
19
+ # Given the example:
20
+ # :disable_net_http and :prepend_net_instrumentation
21
+ # if :disable_net_http is true, then returned value is "disabled"
22
+ # if :prepend_net_instrumentation is false, then returned value is "chain"
23
+ # otherwise, "auto" is returned.
24
+ #
25
+ # Intent is:
26
+ # - if user sets disable_xxx property, then don't instrument
27
+ # - if user set prepend to `false` then we use method_alias chaining
28
+ # - auto, when returned means, try to use prepend unless conflicting gems discovered
29
+ #
30
+ def self.instrumentation_value_of(disable_key, prepend_key=nil)
31
+ Proc.new do
32
+ if NewRelic::Agent.config[disable_key]
33
+ "disabled"
34
+ elsif prepend_key && !NewRelic::Agent.config[prepend_key]
35
+ "chain"
36
+ else
37
+ "auto"
38
+ end
39
+ end
40
+ end
41
+
42
+ def self.deprecated_description new_setting, description
43
+ link_ref = new_setting.to_s.gsub(".", "-")
44
+ %{<a href="##{link_ref}"><code>#{new_setting}</code>}
45
+ end
46
+
18
47
  class Boolean
19
48
  def self.===(o)
20
49
  TrueClass === o or FalseClass === o
@@ -48,23 +77,30 @@ module NewRelic
48
77
  Proc.new {
49
78
  paths = [
50
79
  File.join("config","newrelic.yml"),
51
- File.join("newrelic.yml")
80
+ File.join("newrelic.yml"),
81
+ File.join("config","newrelic.yml.erb"),
82
+ File.join("newrelic.yml.erb")
52
83
  ]
53
84
 
54
85
  if NewRelic::Control.instance.root
55
86
  paths << File.join(NewRelic::Control.instance.root, "config", "newrelic.yml")
56
87
  paths << File.join(NewRelic::Control.instance.root, "newrelic.yml")
88
+ paths << File.join(NewRelic::Control.instance.root, "config", "newrelic.yml.erb")
89
+ paths << File.join(NewRelic::Control.instance.root, "newrelic.yml.erb")
57
90
  end
58
91
 
59
92
  if ENV["HOME"]
60
93
  paths << File.join(ENV["HOME"], ".newrelic", "newrelic.yml")
61
94
  paths << File.join(ENV["HOME"], "newrelic.yml")
95
+ paths << File.join(ENV["HOME"], ".newrelic", "newrelic.yml.erb")
96
+ paths << File.join(ENV["HOME"], "newrelic.yml.erb")
62
97
  end
63
98
 
64
99
  # If we're packaged for warbler, we can tell from GEM_HOME
65
100
  if ENV["GEM_HOME"] && ENV["GEM_HOME"].end_with?(".jar!")
66
101
  app_name = File.basename(ENV["GEM_HOME"], ".jar!")
67
102
  paths << File.join(ENV["GEM_HOME"], app_name, "config", "newrelic.yml")
103
+ paths << File.join(ENV["GEM_HOME"], app_name, "config", "newrelic.yml.erb")
68
104
  end
69
105
 
70
106
  paths
@@ -91,12 +127,11 @@ module NewRelic
91
127
  :rails
92
128
  when 3
93
129
  :rails3
94
- when 4
95
- :rails4
96
- when 5
97
- :rails5
130
+ when 4..6
131
+ :rails_notifications
98
132
  else
99
- ::NewRelic::Agent.logger.error "Detected unsupported Rails version #{Rails::VERSION::STRING}"
133
+ ::NewRelic::Agent.logger.warn "Detected untested Rails version #{Rails::VERSION::STRING}"
134
+ :rails_notifications
100
135
  end
101
136
  when defined?(::Sinatra) && defined?(::Sinatra::Base) then :sinatra
102
137
  when defined?(::NewRelic::IA) then :external
@@ -170,6 +205,16 @@ module NewRelic
170
205
  end
171
206
  end
172
207
 
208
+ def self.api_host
209
+ Proc.new do
210
+ if String(NewRelic::Agent.config[:license_key]).start_with? 'eu'
211
+ 'rpm.eu.newrelic.com'
212
+ else
213
+ 'rpm.newrelic.com'
214
+ end
215
+ end
216
+ end
217
+
173
218
  def self.convert_to_regexp_list(raw_value)
174
219
  value_list = convert_to_list(raw_value)
175
220
  value_list.map do |value|
@@ -188,6 +233,15 @@ module NewRelic
188
233
  end
189
234
  end
190
235
 
236
+ SEMICOLON = ';'.freeze
237
+ def self.convert_to_list_on_semicolon value
238
+ case value
239
+ when Array then value
240
+ when String then value.split(SEMICOLON)
241
+ else []
242
+ end
243
+ end
244
+
191
245
  def self.convert_to_constant_list(raw_value)
192
246
  const_names = convert_to_list(raw_value)
193
247
  const_names.map! do |class_name|
@@ -201,9 +255,19 @@ module NewRelic
201
255
  end
202
256
  const_names.compact
203
257
  end
258
+
259
+ def self.enforce_fallback(allowed_values: nil, fallback: nil)
260
+ Proc.new do |configured_value|
261
+ if allowed_values.any? { |v| v =~ /#{configured_value}/i }
262
+ configured_value
263
+ else
264
+ fallback
265
+ end
266
+ end
267
+ end
204
268
  end
205
269
 
206
- AUTOSTART_BLACKLISTED_RAKE_TASKS = [
270
+ AUTOSTART_DENYLISTED_RAKE_TASKS = [
207
271
  'about',
208
272
  'assets:clean',
209
273
  'assets:clobber',
@@ -283,8 +347,17 @@ module NewRelic
283
347
  :public => true,
284
348
  :type => String,
285
349
  :allowed_from_server => false,
350
+ :transform => DefaultSource.method(:convert_to_list_on_semicolon),
286
351
  :description => 'Specify the <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/installation-configuration/name-your-application">application name</a> used to aggregate data in the New Relic UI. To report data to <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/installation-configuration/using-multiple-names-app">multiple apps at the same time</a>, specify a list of names separated by a semicolon <code>;</code>. For example, <code>MyApp</code> or <code>MyStagingApp;Instance1</code>.'
287
352
  },
353
+ :entity_guid => {
354
+ :default => nil,
355
+ :allow_nil => true,
356
+ :public => true,
357
+ :type => String,
358
+ :allowed_from_server => true,
359
+ :description => 'The <a href="https://docs.newrelic.com/attribute-dictionary/span/entityguid">Entity GUID</a> for the entity running this agent.'
360
+ },
288
361
  :monitor_mode => {
289
362
  :default => value_of(:enabled),
290
363
  :public => true,
@@ -359,7 +432,21 @@ module NewRelic
359
432
  :public => true,
360
433
  :type => Boolean,
361
434
  :allowed_from_server => false,
362
- :description => 'When <code>true</code>, the agent captures HTTP request parameters and attaches them to transaction traces, traced errors, and <a href="https://docs.newrelic.com/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights">TransactionError events</a>.'
435
+ :description => 'When <code>true</code>, the agent captures HTTP request parameters ' \
436
+ 'and attaches them to transaction traces, traced errors, and ' \
437
+ '<a href="https://docs.newrelic.com/attribute-dictionary?attribute_name=&events_tids%5B%5D=8241">'\
438
+ '<code>TransactionError</code> events.' \
439
+ "\n" \
440
+ '<div class="callout-warning">' \
441
+ "\n" \
442
+ '<p>When using the <code>capture_params</code> setting, the Ruby agent will not attempt ' \
443
+ 'to filter secret information. <b>Recommendation:</b> To filter secret information from ' \
444
+ 'request parameters, use the <a href="/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby">' \
445
+ '<code>attributes.include</code> setting</a> instead. For more information, see the ' \
446
+ '<a href="/docs/agents/ruby-agent/attributes/ruby-attribute-examples#ex_req_params">' \
447
+ 'Ruby attribute examples</a>.' \
448
+ "</p>\n" \
449
+ '</div>'
363
450
  },
364
451
  :config_path => {
365
452
  :default => DefaultSource.config_path,
@@ -389,40 +476,43 @@ module NewRelic
389
476
  :allowed_from_server => false,
390
477
  :description => 'Autodetected application framework used to enable framework-specific functionality.'
391
478
  },
392
- :'autostart.blacklisted_constants' => {
479
+ :'autostart.denylisted_constants' => {
393
480
  :default => 'Rails::Console',
394
481
  :public => true,
395
482
  :type => String,
396
483
  :allowed_from_server => false,
397
484
  :description => 'Specify a list of constants that should prevent the agent from starting automatically. Separate individual constants with a comma <code>,</code>. For example, <code>Rails::Console,UninstrumentedBackgroundJob</code>.'
398
485
  },
399
- :'autostart.blacklisted_executables' => {
486
+ :'autostart.denylisted_executables' => {
400
487
  :default => 'irb,rspec',
401
488
  :public => true,
402
489
  :type => String,
403
490
  :allowed_from_server => false,
404
491
  :description => 'Defines a comma-delimited list of executables that the agent should not instrument. For example, <code>rake,my_ruby_script.rb</code>.'
405
492
  },
406
- :'autostart.blacklisted_rake_tasks' => {
407
- :default => AUTOSTART_BLACKLISTED_RAKE_TASKS,
493
+ :'autostart.denylisted_rake_tasks' => {
494
+ :default => AUTOSTART_DENYLISTED_RAKE_TASKS,
408
495
  :public => true,
409
496
  :type => String,
410
497
  :allowed_from_server => false,
411
498
  :description => 'Defines a comma-delimited list of Rake tasks that the agent should not instrument. For example, <code>assets:precompile,db:migrate</code>.'
412
499
  },
500
+
413
501
  :disable_rake => {
414
502
  :default => false,
415
503
  :public => true,
416
504
  :type => Boolean,
417
505
  :allowed_from_server => false,
418
- :description => 'If <code>true</code>, disables Rake instrumentation.'
506
+ :deprecated => true,
507
+ :description => deprecated_description(:'instrumentation.rake', 'If <code>true</code>, disables Rake instrumentation.')
419
508
  },
420
509
  :disable_rake_instrumentation => {
421
510
  :default => false,
422
511
  :public => false,
423
512
  :type => Boolean,
424
513
  :allowed_from_server => false,
425
- :description => 'Enable or disable Rake instrumentation. Preferred key is `disable_rake`'
514
+ :deprecated => true,
515
+ :description => deprecated_description(:'instrumentation.rake', 'Enable or disable Rake instrumentation. Preferred key is `disable_rake`')
426
516
  },
427
517
  :'rake.tasks' => {
428
518
  :default => [],
@@ -452,15 +542,15 @@ module NewRelic
452
542
  :public => true,
453
543
  :type => Boolean,
454
544
  :allowed_from_server => false,
455
- :description => 'If true, the agent strips messages from all exceptions except those in the <a href="#strip_exception_messages-whitelist">whitelist</a>. Enabled automatically in <a href="https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security">high security mode</a>.'
545
+ :description => 'If true, the agent strips messages from all exceptions except those in the <a href="#strip_exception_messages-allowlist">allowlist</a>. Enabled automatically in <a href="https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security">high security mode</a>.'
456
546
  },
457
- :'strip_exception_messages.whitelist' => {
547
+ :'strip_exception_messages.allowed_classes' => {
458
548
  :default => '',
459
549
  :public => true,
460
550
  :type => String,
461
551
  :allowed_from_server => false,
462
552
  :transform => DefaultSource.method(:convert_to_constant_list),
463
- :description => 'Specify a whitelist of exceptions you do not want the agent to strip when <a href="#strip_exception_messages-enabled">strip_exception_messages</a> is <code>true</code>. Separate exceptions with a comma. For example, <code>"ImportantException,PreserveMessageException"</code>.'
553
+ :description => 'Specify a list of exceptions you do not want the agent to strip when <a href="#strip_exception_messages-enabled">strip_exception_messages</a> is <code>true</code>. Separate exceptions with a comma. For example, <code>"ImportantException,PreserveMessageException"</code>.'
464
554
  },
465
555
  :host => {
466
556
  :default => DefaultSource.host,
@@ -470,7 +560,7 @@ module NewRelic
470
560
  :description => "URI for the New Relic data collection service."
471
561
  },
472
562
  :api_host => {
473
- :default => 'rpm.newrelic.com',
563
+ :default => DefaultSource.api_host,
474
564
  :public => false,
475
565
  :type => String,
476
566
  :allowed_from_server => false,
@@ -519,7 +609,7 @@ module NewRelic
519
609
  :description => 'Use HTTP PUT requests instead of POST.'
520
610
  },
521
611
  :compressed_content_encoding => {
522
- :default => 'deflate',
612
+ :default => 'gzip',
523
613
  :public => false,
524
614
  :type => String,
525
615
  :allowed_from_server => false,
@@ -551,15 +641,46 @@ module NewRelic
551
641
  :public => false,
552
642
  :type => Integer,
553
643
  :allowed_from_server => true,
554
- :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.'
644
+ :description => 'Number of seconds betwixt connections to the New Relic data collection service.'
645
+ },
646
+ :event_report_period => {
647
+ :default => 60,
648
+ :public => false,
649
+ :type => Integer,
650
+ :allowed_from_server => true,
651
+ :description => 'Number of seconds betwixt connections to the New Relic event collection services.'
555
652
  },
556
- :'data_report_periods.analytic_event_data' => {
653
+ :'event_report_period.analytic_event_data' => {
557
654
  :default => 60,
558
655
  :public => false,
559
656
  :type => Integer,
560
657
  :dynamic_name => true,
561
658
  :allowed_from_server => true,
562
- :description => 'Number of seconds between connections to the New Relic data collection service for sending transaction event data.'
659
+ :description => 'Number of seconds betwixt connections to the New Relic analytic event collection services.'
660
+ },
661
+ :'event_report_period.custom_event_data' => {
662
+ :default => 60,
663
+ :public => false,
664
+ :type => Integer,
665
+ :dynamic_name => true,
666
+ :allowed_from_server => true,
667
+ :description => 'Number of seconds betwixt connections to the New Relic custom event collection services.'
668
+ },
669
+ :'event_report_period.error_event_data' => {
670
+ :default => 60,
671
+ :public => false,
672
+ :type => Integer,
673
+ :dynamic_name => true,
674
+ :allowed_from_server => true,
675
+ :description => 'Number of seconds betwixt connections to the New Relic error event collection services.'
676
+ },
677
+ :'event_report_period.span_event_data' => {
678
+ :default => 60,
679
+ :public => false,
680
+ :type => Integer,
681
+ :dynamic_name => true,
682
+ :allowed_from_server => true,
683
+ :description => 'Number of seconds betwixt connections to the New Relic span event collection services.'
563
684
  },
564
685
  :keep_retrying => {
565
686
  :default => true,
@@ -569,6 +690,18 @@ module NewRelic
569
690
  :allowed_from_server => false,
570
691
  :description => 'Enable or disable retrying failed connections to the New Relic data collection service.'
571
692
  },
693
+ :force_install_exit_handler => {
694
+ :default => false,
695
+ :public => true,
696
+ :type => Boolean,
697
+ :allowed_from_server => false,
698
+ :description => 'Forces the exit handler that sends all cached data to collector ' \
699
+ 'before shuttng down to be installed regardless of detecting scenarios where it generally should not be. ' \
700
+ 'Known use-case for this option is where Sinatra is running as an embedded service within another framework ' \
701
+ 'and the agent is detecting the Sinatra app and skipping the at_exit handler as a result. Sinatra classically ' \
702
+ 'runs the entire application in an at_exit block and would otherwise misbehave if the Agent\'s at_exit handler ' \
703
+ 'is also installed in those circumstances. Note: `send_data_on_exit` should also be set to `true` in tandem with this setting.'
704
+ },
572
705
  :force_reconnect => {
573
706
  :default => false,
574
707
  :public => false,
@@ -630,8 +763,9 @@ module NewRelic
630
763
  :default => false,
631
764
  :public => true,
632
765
  :type => Boolean,
766
+ :deprecated => true,
633
767
  :allowed_from_server => false,
634
- :description => 'If <code>true</code>, disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/resque-instrumentation">Resque instrumentation</a>.'
768
+ :description => deprecated_description(:'instrumentation.resque', 'If <code>true</code>, disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/resque-instrumentation">Resque instrumentation</a>.')
635
769
  },
636
770
  :disable_sidekiq => {
637
771
  :default => false,
@@ -643,16 +777,18 @@ module NewRelic
643
777
  :disable_dj => {
644
778
  :default => false,
645
779
  :public => true,
780
+ :deprecated => true,
646
781
  :type => Boolean,
647
782
  :allowed_from_server => false,
648
- :description => 'If <code>true</code>, disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/delayedjob">Delayed::Job instrumentation</a>.'
783
+ :description => deprecated_description(:'instrumentation.delayed_job', 'If <code>true</code>, disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/delayedjob">Delayed::Job instrumentation</a>.'
784
+ )
649
785
  },
650
786
  :disable_sinatra => {
651
787
  :default => false,
652
788
  :public => true,
653
789
  :type => Boolean,
654
790
  :allowed_from_server => false,
655
- :description => 'If <code>true</code> , disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/frameworks/sinatra-support">Sinatra instrumentation</a>.'
791
+ :description => deprecated_description(:'instrumentation.sinatra', 'If <code>true</code> , disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/frameworks/sinatra-support">Sinatra instrumentation</a>.' )
656
792
  },
657
793
  :disable_sinatra_auto_middleware => {
658
794
  :default => false,
@@ -696,6 +832,172 @@ module NewRelic
696
832
  :allowed_from_server => false,
697
833
  :description => 'If <code>true</code>, uses Module.prepend rather than alias_method for ActiveRecord instrumentation.'
698
834
  },
835
+ :prepend_net_instrumentation => {
836
+ :default => true,
837
+ :public => false,
838
+ :type => Boolean,
839
+ :allowed_from_server => false,
840
+ :deprecated => true,
841
+ :description => deprecated_description(:'instrumentation.net_http',
842
+ 'If <code>true</code>, uses Module.prepend rather than alias_method for Net::HTTP instrumentation.'
843
+ )
844
+ },
845
+ :'instrumentation.net_http' => {
846
+ :default => instrumentation_value_of(:disable_net_http, :prepend_net_instrumentation),
847
+ :public => true,
848
+ :type => String,
849
+ :dynamic_name => true,
850
+ :allowed_from_server => false,
851
+ :description => "Controls auto-instrumentation of Net::HTTP at start up. May be one of [auto|prepend|chain|disabled]."
852
+ },
853
+ :'instrumentation.typhoeus' => {
854
+ :default => instrumentation_value_of(:disable_typhoeus),
855
+ :public => true,
856
+ :type => String,
857
+ :dynamic_name => true,
858
+ :allowed_from_server => false,
859
+ :description => "Controls auto-instrumentation of Typhoeus at start up. May be one of [auto|prepend|chain|disabled]."
860
+ },
861
+ :'instrumentation.bunny' => {
862
+ :default => instrumentation_value_of(:disable_bunny),
863
+ :public => true,
864
+ :type => String,
865
+ :dynamic_name => true,
866
+ :allowed_from_server => false,
867
+ :description => 'Controls auto-instrumentation of bunny at start up. May be one of [auto|prepend|chain|disabled].'
868
+ },
869
+ :'instrumentation.httprb' => {
870
+ :default => instrumentation_value_of(:disable_httprb),
871
+ :public => true,
872
+ :type => String,
873
+ :dynamic_name => true,
874
+ :allowed_from_server => false,
875
+ :description => 'Controls auto-instrumentation of http.rb gem at start up. May be one of [auto|prepend|chain|disabled].'
876
+ },
877
+ :'instrumentation.resque' => {
878
+ :default => instrumentation_value_of(:disable_resque),
879
+ :public => true,
880
+ :type => String,
881
+ :dynamic_name => true,
882
+ :allowed_from_server => false,
883
+ :description => "Controls auto-instrumentation of resque at start up. May be one of [auto|prepend|chain|disabled]."
884
+ },
885
+ :'instrumentation.redis' => {
886
+ :default => instrumentation_value_of(:disable_redis),
887
+ :public => true,
888
+ :type => String,
889
+ :dynamic_name => true,
890
+ :allowed_from_server => false,
891
+ :description => "Controls auto-instrumentation of Redis at start up. May be one of [auto|prepend|chain|disabled]."
892
+ },
893
+ :'instrumentation.rake' => {
894
+ :default => instrumentation_value_of(:disable_rake),
895
+ :public => :true,
896
+ :type => String,
897
+ :dynamic_name => true,
898
+ :allowed_from_server => false,
899
+ :description => "Controls auto-instrumentation of rake at start up. May be one of [auto|prepend|chain|disabled]."
900
+ },
901
+ :'instrumentation.mongo' => {
902
+ :default => instrumentation_value_of(:disable_mongo),
903
+ :public => :true,
904
+ :type => String,
905
+ :dynamic_name => true,
906
+ :allowed_from_server => false,
907
+ :description => "Controls auto-instrumentation of Mongo at start up. May be one of [enabled|disabled]."
908
+ },
909
+ :'instrumentation.delayed_job' => {
910
+ :default => instrumentation_value_of(:disable_dj),
911
+ :public => true,
912
+ :type => String,
913
+ :dynamic_name => true,
914
+ :allowed_from_server => false,
915
+ :description => 'Controls auto-instrumentation of Delayed Job at start up. May be one of [auto|prepend|chain|disabled].'
916
+ },
917
+ :'instrumentation.httpclient' => {
918
+ :default => instrumentation_value_of(:disable_httpclient),
919
+ :public => true,
920
+ :type => String,
921
+ :dynamic_name => true,
922
+ :allowed_from_server => false,
923
+ :description => "Controls auto-instrumentation of HTTPClient at start up. May be one of [auto|prepend|chain|disabled]."
924
+ },
925
+ :'instrumentation.curb' => {
926
+ :default => instrumentation_value_of(:disable_curb),
927
+ :public => true,
928
+ :type => String,
929
+ :dynamic_name => true,
930
+ :allowed_from_server => false,
931
+ :description => 'Controls auto-instrumentation of Curb at start up. May be one of [auto|prepend|chain|disabled].'
932
+ },
933
+ :'instrumentation.sinatra' => {
934
+ :default => instrumentation_value_of(:disable_sinatra),
935
+ :public => :true,
936
+ :type => String,
937
+ :dynamic_name => true,
938
+ :allowed_from_server => false,
939
+ :description => "Controls auto-instrumentation of Sinatra at start up. May be one of [auto|prepend|chain|disabled]."
940
+ },
941
+ :'instrumentation.rack' => {
942
+ :default => instrumentation_value_of(:disable_rack),
943
+ :public => true,
944
+ :type => String,
945
+ :dynamic_name => true,
946
+ :allowed_from_server => false,
947
+ :description => "Controls auto-instrumentation of Rack. When enabled, the agent hooks into the " \
948
+ "<code>to_app</code> method in Rack::Builder to find gems to instrument during " \
949
+ "application startup. May be one of [auto|prepend|chain|disabled]."
950
+ },
951
+ :'instrumentation.rack_urlmap' => {
952
+ :default => instrumentation_value_of(:disable_rack_urlmap),
953
+ :public => true,
954
+ :type => String,
955
+ :dynamic_name => true,
956
+ :allowed_from_server => false,
957
+ :description => 'Controls auto-instrumentation of Rack::URLMap at start up. May be one of [auto|prepend|chain|disabled].'
958
+ },
959
+ :'instrumentation.puma_rack' => {
960
+ :default => instrumentation_value_of(:disable_puma_rack), # TODO: change to value_of(:'instrumentation.rack') when we remove :disable_puma_rack in 8.0)
961
+ :public => true,
962
+ :type => String,
963
+ :dynamic_name => true,
964
+ :allowed_from_server => false,
965
+ :description => "Controls auto-instrumentation of Puma::Rack. When enabled, the agent hooks into the " \
966
+ "<code>to_app</code> method in Puma::Rack::Builder to find gems to instrument during " \
967
+ "application startup. May be one of [auto|prepend|chain|disabled]."
968
+ },
969
+ :'instrumentation.puma_rack_urlmap' => {
970
+ :default => instrumentation_value_of(:disable_puma_rack_urlmap), # TODO: change to value_of(:'instrumentation.rack_urlmap') when we remove :disable_puma_rack_urlmap in 8.0)
971
+ :public => true,
972
+ :type => String,
973
+ :dynamic_name => true,
974
+ :allowed_from_server => false,
975
+ :description => 'Controls auto-instrumentation of Puma::Rack::URLMap at start up. May be one of [auto|prepend|chain|disabled].'
976
+ },
977
+ :'instrumentation.memcached' => {
978
+ :default => instrumentation_value_of(:disable_memcached),
979
+ :public => true,
980
+ :type => String,
981
+ :dynamic_name => true,
982
+ :allowed_from_server => false,
983
+ :description => 'Controls auto-instrumentation of memcached gem for Memcache at start up. May be one of [auto|prepend|chain|disabled].'
984
+ },
985
+ :'instrumentation.memcache_client' => {
986
+ :default => instrumentation_value_of(:disable_memcache_client),
987
+ :public => true,
988
+ :type => String,
989
+ :dynamic_name => true,
990
+ :allowed_from_server => false,
991
+ :description => 'Controls auto-instrumentation of memcache-client gem for Memcache at start up. May be one of [auto|prepend|chain|disabled].'
992
+ },
993
+ :'instrumentation.memcache' => {
994
+ :default => instrumentation_value_of(:disable_dalli),
995
+ :public => true,
996
+ :type => String,
997
+ :dynamic_name => true,
998
+ :allowed_from_server => false,
999
+ :description => 'Controls auto-instrumentation of dalli gem for Memcache at start up. May be one of [auto|prepend|chain|disabled].'
1000
+ },
699
1001
  :disable_data_mapper => {
700
1002
  :default => false,
701
1003
  :public => true,
@@ -731,36 +1033,41 @@ module NewRelic
731
1033
  :default => value_of(:disable_memcache_instrumentation),
732
1034
  :public => true,
733
1035
  :type => Boolean,
1036
+ :deprecated => true,
734
1037
  :allowed_from_server => false,
735
- :description => 'If <code>true</code>, disables instrumentation for the memcached gem.'
1038
+ :description => deprecated_description(:'instrumentation.memcached', 'If <code>true</code>, disables instrumentation for the memcached gem.')
736
1039
  },
737
1040
  :disable_memcache_client => {
738
1041
  :default => value_of(:disable_memcache_instrumentation),
739
1042
  :public => true,
740
1043
  :type => Boolean,
1044
+ :deprecated => true,
741
1045
  :allowed_from_server => false,
742
- :description => 'If <code>true</code>, disables instrumentation for the memcache-client gem.'
1046
+ :description => deprecated_description(:'instrumentation.memcache-client', 'If <code>true</code>, disables instrumentation for the memcache-client gem.')
743
1047
  },
744
1048
  :disable_dalli => {
745
1049
  :default => value_of(:disable_memcache_instrumentation),
746
1050
  :public => true,
747
1051
  :type => Boolean,
1052
+ :deprecated => true,
748
1053
  :allowed_from_server => false,
749
- :description => 'If <code>true</code>, disables instrumentation for the dalli gem.'
1054
+ :description => deprecated_description(:'instrumentation.memcache', 'If <code>true</code>, disables instrumentation for the dalli gem.')
750
1055
  },
751
1056
  :disable_dalli_cas_client => {
752
1057
  :default => value_of(:disable_memcache_instrumentation),
753
1058
  :public => true,
754
1059
  :type => Boolean,
1060
+ :deprecated => true,
755
1061
  :allowed_from_server => false,
756
- :description => "If <code>true</code>, disables instrumentation for the dalli gem\'s additional CAS client support."
1062
+ :description => deprecated_description(:'instrumentation.memcache', "If <code>true</code>, disables instrumentation for the dalli gem\'s additional CAS client support.")
757
1063
  },
758
1064
  :disable_memcache_instrumentation => {
759
1065
  :default => false,
760
1066
  :public => true,
761
1067
  :type => Boolean,
1068
+ :deprecated => true,
762
1069
  :allowed_from_server => false,
763
- :description => 'If <code>true</code>, disables memcache instrumentation.'
1070
+ :description => deprecated_description(:'instrumentation.memcache', 'If <code>true</code>, disables memcache instrumentation.')
764
1071
  },
765
1072
  :disable_gc_profiler => {
766
1073
  :default => false,
@@ -895,21 +1202,24 @@ module NewRelic
895
1202
  :type => Boolean,
896
1203
  :allowed_from_server => false,
897
1204
  :dynamic_name => true,
898
- :description => 'If <code>true</code>, the agent won\'t install <a href="https://docs.newrelic.com/docs/agents/ruby-agent/frameworks/mongo-instrumentation">instrumentation for the Mongo gem</a>.'
1205
+ :deprecated => true,
1206
+ :description => deprecated_description(:'instrumentation.mongo', 'If <code>true</code>, the agent won\'t install <a href="https://docs.newrelic.com/docs/agents/ruby-agent/frameworks/mongo-instrumentation">instrumentation for the Mongo gem</a>.')
899
1207
  },
900
1208
  :disable_redis => {
901
1209
  :default => false,
902
1210
  :public => true,
903
1211
  :type => Boolean,
1212
+ :deprecated => true,
904
1213
  :allowed_from_server => false,
905
- :description => 'If <code>true</code>, the agent won\'t install <a href="https://docs.newrelic.com/docs/agents/ruby-agent/frameworks/redis-instrumentation">instrumentation for Redis</a>.'
1214
+ :description => deprecated_description(:'instrumentation.redis', 'If <code>true</code>, the agent won\'t install <a href="https://docs.newrelic.com/docs/agents/ruby-agent/frameworks/redis-instrumentation">instrumentation for Redis</a>.')
906
1215
  },
907
1216
  :disable_redis_instrumentation => {
908
1217
  :default => false,
909
1218
  :public => false,
910
1219
  :type => Boolean,
1220
+ :deprecated => true,
911
1221
  :allowed_from_server => false,
912
- :description => 'Disables installation of Redis instrumentation. Standard key to use is disable_redis.'
1222
+ :description => deprecated_description(:'instrumentation.redis', 'Disables installation of Redis instrumentation. Standard key to use is disable_redis.')
913
1223
  },
914
1224
  :'message_tracer.segment_parameters.enabled' => {
915
1225
  :default => true,
@@ -1001,6 +1311,7 @@ module NewRelic
1001
1311
  :public => true,
1002
1312
  :type => Boolean,
1003
1313
  :allowed_from_server => true,
1314
+ :dynamic_name => true,
1004
1315
  :description => 'If <code>true</code>, the agent collects <a href="https://docs.newrelic.com/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights">TransactionError events</a>.'
1005
1316
  },
1006
1317
  :'error_collector.max_event_samples_stored' => {
@@ -1155,35 +1466,7 @@ module NewRelic
1155
1466
  :allowed_from_server => true,
1156
1467
  :description => 'If <code>true</code>, enables use of the <a href="https://docs.newrelic.com/docs/apm/applications-menu/events/thread-profiler-tool">thread profiler</a>.'
1157
1468
  },
1158
- :'xray_session.enabled' => {
1159
- :default => true,
1160
- :public => true,
1161
- :type => Boolean,
1162
- :allowed_from_server => true,
1163
- :description => 'If <code>true</code>, enables <a href="https://docs.newrelic.com/docs/apm/transactions-menu/x-ray-sessions/x-ray-sessions">X-Ray sessions</a>.'
1164
- },
1165
- :'xray_session.allow_traces' => {
1166
- :default => true,
1167
- :public => false,
1168
- :type => Boolean,
1169
- :allowed_from_server => true,
1170
- :description => 'Enable or disable X-Ray sessions recording transaction traces.'
1171
- },
1172
- :'xray_session.allow_profiles' => {
1173
- :default => true,
1174
- :public => false,
1175
- :type => Boolean,
1176
- :allowed_from_server => true,
1177
- :description => 'Enable or disable X-Ray sessions taking thread profiles.'
1178
- },
1179
- :'xray_session.max_samples' => {
1180
- :default => 10,
1181
- :public => false,
1182
- :type => Integer,
1183
- :allowed_from_server => true,
1184
- :description => 'Maximum number of transaction traces to buffer for active X-Ray sessions'
1185
- },
1186
- :'xray_session.max_profile_overhead' => {
1469
+ :'thread_profiler.max_profile_overhead' => {
1187
1470
  :default => 0.05,
1188
1471
  :public => false,
1189
1472
  :type => Float,
@@ -1233,6 +1516,13 @@ module NewRelic
1233
1516
  :allowed_from_server => false,
1234
1517
  :description => 'Controls whether to normalize string encodings prior to serializing data for the collector to JSON.'
1235
1518
  },
1519
+ :backport_fast_active_record_connection_lookup => {
1520
+ :default => false,
1521
+ :public => true,
1522
+ :type => Boolean,
1523
+ :allowed_from_server => false,
1524
+ :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.'
1525
+ },
1236
1526
  :disable_vm_sampler => {
1237
1527
  :default => false,
1238
1528
  :public => true,
@@ -1265,53 +1555,57 @@ module NewRelic
1265
1555
  :allowed_from_server => false,
1266
1556
  :description => 'If <code>true</code>, the agent won\'t measure the depth of Delayed Job queues.'
1267
1557
  },
1268
- :disable_active_record_4 => {
1558
+ :disable_active_record_notifications => {
1269
1559
  :default => false,
1270
1560
  :public => true,
1271
1561
  :type => Boolean,
1272
1562
  :dynamic_name => true,
1273
1563
  :allowed_from_server => false,
1274
- :description => 'If <code>true</code>, disables instrumentation for ActiveRecord 4.'
1275
- },
1276
- :disable_active_record_5 => {
1277
- :default => false,
1278
- :public => true,
1279
- :type => Boolean,
1280
- :dynamic_name => true,
1281
- :allowed_from_server => false,
1282
- :description => 'If <code>true</code>, disables instrumentation for ActiveRecord 5.'
1564
+ :description => 'If <code>true</code>, disables instrumentation for ActiveRecord 4, 5, and 6.'
1283
1565
  },
1284
1566
  :disable_bunny => {
1285
1567
  :default => false,
1286
1568
  :public => true,
1287
1569
  :type => Boolean,
1570
+ :deprecated => true,
1288
1571
  :dynamic_name => true,
1289
1572
  :allowed_from_server => false,
1290
- :description => 'If <code>true</code>, disables instrumentation for the bunny gem.'
1573
+ :description => deprecated_description(:'instrumentation.bunny', 'If <code>true</code>, disables instrumentation for the bunny gem.')
1291
1574
  },
1292
1575
  :disable_curb => {
1293
1576
  :default => false,
1294
1577
  :public => true,
1295
1578
  :type => Boolean,
1579
+ :deprecated => true,
1296
1580
  :dynamic_name => true,
1297
1581
  :allowed_from_server => false,
1298
- :description => 'If <code>true</code>, disables instrumentation for the curb gem.'
1582
+ :description => deprecated_description(:'instrumentation.curb', 'If <code>true</code>, disables instrumentation for the curb gem.' )
1299
1583
  },
1300
1584
  :disable_excon => {
1301
1585
  :default => false,
1302
1586
  :public => true,
1303
1587
  :type => Boolean,
1304
1588
  :dynamic_name => true,
1589
+ :deprecated => true,
1305
1590
  :allowed_from_server => false,
1306
- :description => 'If <code>true</code>, disables instrumentation for the excon gem.'
1591
+ :description => deprecated_description(:'instrumentation.excon', 'If <code>true</code>, disables instrumentation for the excon gem.')
1592
+ },
1593
+ :'instrumentation.excon' => {
1594
+ :default => instrumentation_value_of(:disable_excon),
1595
+ :public => :true,
1596
+ :type => String,
1597
+ :dynamic_name => true,
1598
+ :allowed_from_server => false,
1599
+ :description => "Controls auto-instrumentation of Excon at start up. May be one of [enabled|disabled]."
1307
1600
  },
1308
1601
  :disable_httpclient => {
1309
1602
  :default => false,
1310
1603
  :public => true,
1311
1604
  :type => Boolean,
1312
1605
  :dynamic_name => true,
1606
+ :deprecated => true,
1313
1607
  :allowed_from_server => false,
1314
- :description => 'If <code>true</code>, disables instrumentation for the httpclient gem.'
1608
+ :description => deprecated_description(:'instrumentation.httpclient', 'If <code>true</code>, disables instrumentation for the httpclient gem.')
1315
1609
  },
1316
1610
  :disable_net_http => {
1317
1611
  :default => false,
@@ -1319,7 +1613,10 @@ module NewRelic
1319
1613
  :type => Boolean,
1320
1614
  :dynamic_name => true,
1321
1615
  :allowed_from_server => false,
1322
- :description => 'If <code>true</code>, disables instrumentation for Net::HTTP.'
1616
+ :deprecated => true,
1617
+ :description => deprecated_description(:'instrumentation.net_http',
1618
+ 'If <code>true</code>, disables instrumentation for Net::HTTP.'
1619
+ )
1323
1620
  },
1324
1621
  :disable_rack => {
1325
1622
  :default => false,
@@ -1327,7 +1624,8 @@ module NewRelic
1327
1624
  :type => Boolean,
1328
1625
  :dynamic_name => true,
1329
1626
  :allowed_from_server => false,
1330
- :description => 'If <code>true</code>, prevents the agent from hooking into the <code>to_app</code> method in Rack::Builder to find gems to instrument during application startup.'
1627
+ :deprecated => true,
1628
+ :description => deprecated_description(:'instrumentation.rack', 'If <code>true</code>, prevents the agent from hooking into the <code>to_app</code> method in Rack::Builder to find gems to instrument during application startup.')
1331
1629
  },
1332
1630
  :disable_rack_urlmap => {
1333
1631
  :default => false,
@@ -1335,7 +1633,8 @@ module NewRelic
1335
1633
  :type => Boolean,
1336
1634
  :dynamic_name => true,
1337
1635
  :allowed_from_server => false,
1338
- :description => 'If <code>true</code>, prevents the agent from hooking into Rack::URLMap to install middleware tracing.'
1636
+ :deprecated => true,
1637
+ :description => deprecated_description(:'instrumentation.rack_urlmap', 'If <code>true</code>, prevents the agent from hooking into Rack::URLMap to install middleware tracing.')
1339
1638
  },
1340
1639
  :disable_puma_rack => {
1341
1640
  :default => value_of(:disable_rack),
@@ -1343,7 +1642,8 @@ module NewRelic
1343
1642
  :type => Boolean,
1344
1643
  :dynamic_name => true,
1345
1644
  :allowed_from_server => false,
1346
- :description => 'If <code>true</code>, prevents the agent from hooking into the <code>to_app</code> method in Puma::Rack::Builder to find gems to instrument during application startup.'
1645
+ :deprecated => true,
1646
+ :description => deprecated_description(:'instrumentation.puma_rack', 'If <code>true</code>, prevents the agent from hooking into the <code>to_app</code> method in Puma::Rack::Builder to find gems to instrument during application startup.')
1347
1647
  },
1348
1648
  :disable_puma_rack_urlmap => {
1349
1649
  :default => value_of(:disable_rack_urlmap),
@@ -1351,23 +1651,26 @@ module NewRelic
1351
1651
  :type => Boolean,
1352
1652
  :dynamic_name => true,
1353
1653
  :allowed_from_server => false,
1354
- :description => 'If <code>true</code>, prevents the agent from hooking into Puma::Rack::URLMap to install middleware tracing.'
1654
+ :deprecated => true,
1655
+ :description => deprecated_description(:'instrumentation.puma_rack_urlmap', 'If <code>true</code>, prevents the agent from hooking into Puma::Rack::URLMap to install middleware tracing.')
1355
1656
  },
1356
1657
  :disable_typhoeus => {
1357
1658
  :default => false,
1358
1659
  :public => true,
1359
1660
  :type => Boolean,
1360
1661
  :dynamic_name => true,
1662
+ :deprecated => true,
1361
1663
  :allowed_from_server => false,
1362
- :description => 'If <code>true</code>, the agent won\'t install instrumentation for the typhoeus gem.'
1664
+ :description => deprecated_description(:'instrumentation.typhoeus', 'If <code>true</code>, the agent won\'t install instrumentation for the typhoeus gem.' )
1363
1665
  },
1364
1666
  :disable_httprb => {
1365
1667
  :default => false,
1366
1668
  :public => true,
1367
1669
  :type => Boolean,
1368
1670
  :dynamic_name => true,
1671
+ :deprecated => true,
1369
1672
  :allowed_from_server => false,
1370
- :description => 'If <code>true</code>, the agent won\'t install instrumentation for the http.rb gem.'
1673
+ :description => deprecated_description(:'instrumentation.httprb', 'If <code>true</code>, the agent won\'t install instrumentation for the http.rb gem.' )
1371
1674
  },
1372
1675
  :disable_middleware_instrumentation => {
1373
1676
  :default => false,
@@ -1476,14 +1779,28 @@ module NewRelic
1476
1779
  :public => false,
1477
1780
  :type => Boolean,
1478
1781
  :allowed_from_server => false,
1479
- :description => 'If <code>true</code>, the agent won\'t install Grape instrumentation.'
1782
+ :deprecated => true,
1783
+ :description => deprecated_description(:'instrumentation.grape',
1784
+ 'If <code>true</code>, the agent won\'t install Grape instrumentation.'
1785
+ )
1480
1786
  },
1481
1787
  :disable_grape => {
1482
1788
  :default => false,
1483
1789
  :public => true,
1484
1790
  :type => Boolean,
1485
1791
  :allowed_from_server => false,
1486
- :description => 'If <code>true</code>, the agent won\'t install Grape instrumentation.'
1792
+ :deprecated => true,
1793
+ :description => deprecated_description(:'instrumentation.grape',
1794
+ 'If <code>true</code>, the agent won\'t install Grape instrumentation.'
1795
+ )
1796
+ },
1797
+ :'instrumentation.grape' => {
1798
+ :default => instrumentation_value_of(:disable_grape_instrumentation),
1799
+ :public => :true,
1800
+ :type => String,
1801
+ :dynamic_name => true,
1802
+ :allowed_from_server => false,
1803
+ :description => "Controls auto-instrumentation of Grape at start up. May be one of [auto|prepend|chain|disabled]."
1487
1804
  },
1488
1805
  :'attributes.enabled' => {
1489
1806
  :default => true,
@@ -1692,6 +2009,13 @@ module NewRelic
1692
2009
  :allowed_from_server => false,
1693
2010
  :description => 'If <code>true</code>, the agent automatically detects that it is running in Docker.'
1694
2011
  },
2012
+ :'utilization.detect_kubernetes' => {
2013
+ :default => true,
2014
+ :public => true,
2015
+ :type => Boolean,
2016
+ :allowed_from_server => false,
2017
+ :description => 'If <code>true</code>, the agent automatically detects that it is running in Kubernetes.'
2018
+ },
1695
2019
  :'utilization.billing_hostname' => {
1696
2020
  :default => nil,
1697
2021
  :allow_nil => true,
@@ -1735,7 +2059,7 @@ module NewRelic
1735
2059
  :public => true,
1736
2060
  :type => Boolean,
1737
2061
  :allowed_from_server => false,
1738
- :description => 'If <code>true</code>, the agent will clear <code>TransactionState</code> in <code>Agent.drop_buffered_data</code>.'
2062
+ :description => 'If <code>true</code>, the agent will clear <code>Tracer::State</code> in <code>Agent.drop_buffered_data</code>.'
1739
2063
  },
1740
2064
  :account_id => {
1741
2065
  :default => nil,
@@ -1784,17 +2108,51 @@ module NewRelic
1784
2108
  },
1785
2109
  :'span_events.enabled' => {
1786
2110
  :default => true,
1787
- :public => false,
2111
+ :public => true,
1788
2112
  :type => Boolean,
1789
2113
  :allowed_from_server => true,
1790
2114
  :description => 'If <code>true</code>, enables span event sampling.'
1791
2115
  },
2116
+ :'span_events.queue_size' => {
2117
+ :default => 10_000,
2118
+ :public => true,
2119
+ :type => Integer,
2120
+ :allowed_from_server => false,
2121
+ :external => :infinite_tracing,
2122
+ :description => "Sets the maximum number of span events to buffer when streaming to the trace observer."
2123
+ },
1792
2124
  :'span_events.max_samples_stored' => {
1793
2125
  :default => 1000,
1794
- :public => false,
2126
+ :public => true,
1795
2127
  :type => Integer,
1796
2128
  :allowed_from_server => true,
1797
2129
  :description => 'Defines the maximum number of span events reported from a single harvest.'
2130
+ },
2131
+ :'exclude_newrelic_header' => {
2132
+ :default => false,
2133
+ :public => true,
2134
+ :type => Boolean,
2135
+ :allowed_from_server => true,
2136
+ :description => "Allows newrelic distributed tracing headers to be suppressed on outbound requests."
2137
+ },
2138
+ :'infinite_tracing.trace_observer.host' => {
2139
+ :default => '',
2140
+ :public => true,
2141
+ :type => String,
2142
+ :allowed_from_server => false,
2143
+ :external => :infinite_tracing,
2144
+ :description => "Configures the hostname for the Trace Observer Host. " \
2145
+ "When configured, enables tail-based sampling by sending all recorded spans " \
2146
+ "to a Trace Observer for further sampling decisions, irrespective of any usual " \
2147
+ "agent sampling decision."
2148
+ },
2149
+ :'infinite_tracing.trace_observer.port' => {
2150
+ :default => 443,
2151
+ :public => true,
2152
+ :type => Integer,
2153
+ :allowed_from_server => false,
2154
+ :external => :infinite_tracing,
2155
+ :description => "Configures the TCP/IP port for the Trace Observer Host"
1798
2156
  }
1799
2157
  }.freeze
1800
2158
  end