newrelic_rpm 4.8.0.341 → 6.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (343) hide show
  1. checksums.yaml +5 -5
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
  3. data/.github/ISSUE_TEMPLATE/config.yml +5 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
  5. data/.github/actions/annotate/README.md +79 -0
  6. data/.github/actions/annotate/action.yml +6 -0
  7. data/.github/actions/annotate/dist/index.js +433 -0
  8. data/.github/actions/annotate/index.js +25 -0
  9. data/.github/actions/annotate/package-lock.json +172 -0
  10. data/.github/actions/annotate/package.json +30 -0
  11. data/.github/actions/annotate/pre-commit +5 -0
  12. data/.github/actions/build-ruby/README.md +79 -0
  13. data/.github/actions/build-ruby/action.yml +15 -0
  14. data/.github/actions/build-ruby/dist/index.js +52683 -0
  15. data/.github/actions/build-ruby/index.js +514 -0
  16. data/.github/actions/build-ruby/package-lock.json +581 -0
  17. data/.github/actions/build-ruby/package.json +32 -0
  18. data/.github/actions/build-ruby/pre-commit +5 -0
  19. data/.github/pull_request_template.md +16 -0
  20. data/.github/workflows/ci.yml +212 -0
  21. data/.github/workflows/pr_review_checklist.yml +22 -0
  22. data/.github/workflows/release.yml +78 -0
  23. data/.github/workflows/scripts/rubygems-authenticate.py +13 -0
  24. data/.github/workflows/scripts/rubygems-publish.rb +32 -0
  25. data/.github/workflows/snyk.yml +27 -0
  26. data/.github/workflows/stale.yml +21 -0
  27. data/.gitignore +9 -0
  28. data/.yardopts +4 -1
  29. data/CHANGELOG.md +868 -3
  30. data/CONTRIBUTING.md +106 -19
  31. data/Gemfile +6 -2
  32. data/Guardfile +18 -1
  33. data/LICENSE +208 -38
  34. data/README.md +81 -88
  35. data/ROADMAP.md +24 -0
  36. data/Rakefile +2 -0
  37. data/THIRD_PARTY_NOTICES.md +213 -0
  38. data/bin/nrdebug +1 -1
  39. data/config.dot +3 -12
  40. data/init.rb +1 -1
  41. data/install.rb +1 -1
  42. data/lib/new_relic/agent.rb +145 -31
  43. data/lib/new_relic/agent/adaptive_sampler.rb +104 -0
  44. data/lib/new_relic/agent/agent.rb +192 -190
  45. data/lib/new_relic/agent/agent_logger.rb +5 -1
  46. data/lib/new_relic/agent/attribute_filter.rb +85 -25
  47. data/lib/new_relic/agent/attribute_processing.rb +1 -1
  48. data/lib/new_relic/agent/attributes.rb +152 -0
  49. data/lib/new_relic/agent/audit_logger.rb +1 -1
  50. data/lib/new_relic/agent/autostart.rb +20 -15
  51. data/lib/new_relic/agent/chained_call.rb +1 -1
  52. data/lib/new_relic/agent/commands/agent_command.rb +1 -1
  53. data/lib/new_relic/agent/commands/agent_command_router.rb +3 -22
  54. data/lib/new_relic/agent/commands/thread_profiler_session.rb +1 -1
  55. data/lib/new_relic/agent/configuration.rb +1 -1
  56. data/lib/new_relic/agent/configuration/default_source.rb +375 -67
  57. data/lib/new_relic/agent/configuration/dotted_hash.rb +1 -1
  58. data/lib/new_relic/agent/configuration/environment_source.rb +5 -3
  59. data/lib/new_relic/agent/configuration/event_harvest_config.rb +45 -0
  60. data/lib/new_relic/agent/configuration/high_security_source.rb +2 -3
  61. data/lib/new_relic/agent/configuration/manager.rb +54 -43
  62. data/lib/new_relic/agent/configuration/manual_source.rb +1 -1
  63. data/lib/new_relic/agent/configuration/mask_defaults.rb +1 -1
  64. data/lib/new_relic/agent/configuration/security_policy_source.rb +238 -0
  65. data/lib/new_relic/agent/configuration/server_source.rb +46 -5
  66. data/lib/new_relic/agent/configuration/yaml_source.rb +12 -7
  67. data/lib/new_relic/agent/connect/request_builder.rb +61 -0
  68. data/lib/new_relic/agent/connect/response_handler.rb +61 -0
  69. data/lib/new_relic/agent/custom_event_aggregator.rb +17 -6
  70. data/lib/new_relic/agent/database.rb +21 -3
  71. data/lib/new_relic/agent/database/explain_plan_helpers.rb +12 -1
  72. data/lib/new_relic/agent/database/obfuscation_helpers.rb +2 -2
  73. data/lib/new_relic/agent/database/obfuscator.rb +1 -1
  74. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +1 -1
  75. data/lib/new_relic/agent/datastores.rb +12 -11
  76. data/lib/new_relic/agent/datastores/metric_helper.rb +2 -3
  77. data/lib/new_relic/agent/datastores/mongo.rb +2 -2
  78. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +3 -3
  79. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +1 -1
  80. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +9 -9
  81. data/lib/new_relic/agent/datastores/mongo/statement_formatter.rb +1 -1
  82. data/lib/new_relic/agent/datastores/redis.rb +1 -1
  83. data/lib/new_relic/agent/deprecator.rb +1 -1
  84. data/lib/new_relic/agent/distributed_tracing.rb +216 -0
  85. data/lib/new_relic/agent/distributed_tracing/cross_app_payload.rb +44 -0
  86. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +248 -0
  87. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +84 -0
  88. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +75 -0
  89. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +165 -0
  90. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +39 -0
  91. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +246 -0
  92. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +126 -0
  93. data/lib/new_relic/agent/encoding_normalizer.rb +1 -1
  94. data/lib/new_relic/agent/error_collector.rb +51 -20
  95. data/lib/new_relic/agent/error_event_aggregator.rb +14 -7
  96. data/lib/new_relic/agent/error_trace_aggregator.rb +2 -1
  97. data/lib/new_relic/agent/event_aggregator.rb +34 -15
  98. data/lib/new_relic/agent/event_buffer.rb +1 -1
  99. data/lib/new_relic/agent/event_listener.rb +1 -1
  100. data/lib/new_relic/agent/event_loop.rb +1 -1
  101. data/lib/new_relic/agent/external.rb +31 -29
  102. data/lib/new_relic/agent/guid_generator.rb +28 -0
  103. data/lib/new_relic/agent/harvester.rb +1 -1
  104. data/lib/new_relic/agent/heap.rb +140 -0
  105. data/lib/new_relic/agent/hostname.rb +16 -2
  106. data/lib/new_relic/agent/http_clients/abstract.rb +82 -0
  107. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +25 -20
  108. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +29 -14
  109. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +18 -22
  110. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +11 -12
  111. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +17 -5
  112. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +5 -7
  113. data/lib/new_relic/agent/http_clients/uri_util.rb +12 -11
  114. data/lib/new_relic/agent/instrumentation.rb +1 -1
  115. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +26 -43
  116. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +56 -74
  117. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +82 -56
  118. data/lib/new_relic/agent/instrumentation/active_job.rb +19 -17
  119. data/lib/new_relic/agent/instrumentation/active_merchant.rb +1 -1
  120. data/lib/new_relic/agent/instrumentation/active_record.rb +85 -38
  121. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +82 -24
  122. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +168 -0
  123. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +102 -31
  124. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +47 -57
  125. data/lib/new_relic/agent/instrumentation/active_storage.rb +23 -0
  126. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +63 -0
  127. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +24 -8
  128. data/lib/new_relic/agent/instrumentation/authlogic.rb +1 -1
  129. data/lib/new_relic/agent/instrumentation/bunny.rb +115 -44
  130. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +18 -12
  131. data/lib/new_relic/agent/instrumentation/curb.rb +121 -35
  132. data/lib/new_relic/agent/instrumentation/data_mapper.rb +6 -4
  133. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +61 -25
  134. data/lib/new_relic/agent/instrumentation/excon.rb +2 -2
  135. data/lib/new_relic/agent/instrumentation/excon/connection.rb +8 -5
  136. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +4 -3
  137. data/lib/new_relic/agent/instrumentation/grape.rb +46 -35
  138. data/lib/new_relic/agent/instrumentation/http.rb +8 -5
  139. data/lib/new_relic/agent/instrumentation/httpclient.rb +7 -5
  140. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +1 -1
  141. data/lib/new_relic/agent/instrumentation/memcache.rb +5 -3
  142. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +10 -6
  143. data/lib/new_relic/agent/instrumentation/merb/controller.rb +1 -1
  144. data/lib/new_relic/agent/instrumentation/merb/errors.rb +1 -1
  145. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +13 -5
  146. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +20 -11
  147. data/lib/new_relic/agent/instrumentation/mongo.rb +11 -5
  148. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +39 -7
  149. data/lib/new_relic/agent/instrumentation/net.rb +60 -23
  150. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +100 -0
  151. data/lib/new_relic/agent/instrumentation/padrino.rb +40 -16
  152. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +1 -1
  153. data/lib/new_relic/agent/instrumentation/queue_time.rb +1 -1
  154. data/lib/new_relic/agent/instrumentation/rack.rb +36 -13
  155. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +1 -1
  156. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +1 -1
  157. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +1 -1
  158. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +1 -1
  159. data/lib/new_relic/agent/instrumentation/{rails5 → rails_notifications}/action_cable.rb +8 -5
  160. data/lib/new_relic/agent/instrumentation/{rails5 → rails_notifications}/action_controller.rb +4 -4
  161. data/lib/new_relic/agent/instrumentation/{rails4 → rails_notifications}/action_view.rb +4 -4
  162. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +1 -1
  163. data/lib/new_relic/agent/instrumentation/rake.rb +56 -22
  164. data/lib/new_relic/agent/instrumentation/redis.rb +141 -56
  165. data/lib/new_relic/agent/instrumentation/resque.rb +21 -37
  166. data/lib/new_relic/agent/instrumentation/sequel.rb +2 -3
  167. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +1 -1
  168. data/lib/new_relic/agent/instrumentation/sidekiq.rb +48 -24
  169. data/lib/new_relic/agent/instrumentation/sinatra.rb +62 -23
  170. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +1 -1
  171. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +1 -1
  172. data/lib/new_relic/agent/instrumentation/sunspot.rb +1 -1
  173. data/lib/new_relic/agent/instrumentation/typhoeus.rb +27 -10
  174. data/lib/new_relic/agent/internal_agent_error.rb +1 -1
  175. data/lib/new_relic/agent/javascript_instrumentor.rb +19 -16
  176. data/lib/new_relic/agent/log_once.rb +1 -1
  177. data/lib/new_relic/agent/logging.rb +139 -0
  178. data/lib/new_relic/agent/memory_logger.rb +1 -1
  179. data/lib/new_relic/agent/messaging.rb +15 -59
  180. data/lib/new_relic/agent/method_tracer.rb +42 -25
  181. data/lib/new_relic/agent/method_tracer_helpers.rb +5 -5
  182. data/lib/new_relic/agent/monitors.rb +27 -0
  183. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +110 -0
  184. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +27 -0
  185. data/lib/new_relic/agent/{inbound_request_monitor.rb → monitors/inbound_request_monitor.rb} +4 -4
  186. data/lib/new_relic/agent/{synthetics_monitor.rb → monitors/synthetics_monitor.rb} +4 -7
  187. data/lib/new_relic/agent/new_relic_service.rb +174 -63
  188. data/lib/new_relic/agent/new_relic_service/encoders.rb +1 -1
  189. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +1 -2
  190. data/lib/new_relic/agent/new_relic_service/marshaller.rb +6 -27
  191. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +61 -0
  192. data/lib/new_relic/agent/noticible_error.rb +22 -0
  193. data/lib/new_relic/agent/null_logger.rb +1 -1
  194. data/lib/new_relic/agent/obfuscator.rb +1 -1
  195. data/lib/new_relic/agent/parameter_filtering.rb +19 -6
  196. data/lib/new_relic/agent/payload_metric_mapping.rb +1 -1
  197. data/lib/new_relic/agent/pipe_channel_manager.rb +1 -1
  198. data/lib/new_relic/agent/pipe_service.rb +5 -1
  199. data/lib/new_relic/agent/prepend_supportability.rb +1 -1
  200. data/lib/new_relic/agent/priority_sampled_buffer.rb +95 -0
  201. data/lib/new_relic/agent/range_extensions.rb +1 -1
  202. data/lib/new_relic/agent/rules_engine.rb +1 -1
  203. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +1 -1
  204. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +1 -1
  205. data/lib/new_relic/agent/sampler.rb +1 -1
  206. data/lib/new_relic/agent/sampler_collection.rb +1 -1
  207. data/lib/new_relic/agent/samplers/cpu_sampler.rb +1 -1
  208. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +1 -1
  209. data/lib/new_relic/agent/samplers/memory_sampler.rb +1 -1
  210. data/lib/new_relic/agent/samplers/object_sampler.rb +1 -1
  211. data/lib/new_relic/agent/samplers/vm_sampler.rb +1 -1
  212. data/lib/new_relic/agent/span_event_aggregator.rb +49 -0
  213. data/lib/new_relic/agent/span_event_primitive.rb +206 -0
  214. data/lib/new_relic/agent/sql_sampler.rb +23 -7
  215. data/lib/new_relic/agent/stats.rb +1 -1
  216. data/lib/new_relic/agent/stats_engine.rb +4 -4
  217. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +1 -1
  218. data/lib/new_relic/agent/stats_engine/stats_hash.rb +1 -1
  219. data/lib/new_relic/agent/supported_versions.rb +3 -3
  220. data/lib/new_relic/agent/synthetics_event_aggregator.rb +6 -13
  221. data/lib/new_relic/agent/system_info.rb +18 -8
  222. data/lib/new_relic/agent/threading/agent_thread.rb +6 -4
  223. data/lib/new_relic/agent/threading/backtrace_node.rb +1 -1
  224. data/lib/new_relic/agent/threading/backtrace_service.rb +4 -4
  225. data/lib/new_relic/agent/threading/thread_profile.rb +10 -24
  226. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +19 -0
  227. data/lib/new_relic/agent/tracer.rb +509 -0
  228. data/lib/new_relic/agent/transaction.rb +191 -278
  229. data/lib/new_relic/agent/transaction/abstract_segment.rb +38 -5
  230. data/lib/new_relic/agent/transaction/datastore_segment.rb +30 -5
  231. data/lib/new_relic/agent/transaction/distributed_tracer.rb +171 -0
  232. data/lib/new_relic/agent/transaction/distributed_tracing.rb +123 -71
  233. data/lib/new_relic/agent/transaction/external_request_segment.rb +41 -89
  234. data/lib/new_relic/agent/transaction/message_broker_segment.rb +7 -8
  235. data/lib/new_relic/agent/transaction/request_attributes.rb +1 -1
  236. data/lib/new_relic/agent/transaction/segment.rb +42 -2
  237. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +1 -1
  238. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +1 -1
  239. data/lib/new_relic/agent/transaction/trace.rb +7 -23
  240. data/lib/new_relic/agent/transaction/trace_builder.rb +1 -2
  241. data/lib/new_relic/agent/transaction/trace_context.rb +168 -0
  242. data/lib/new_relic/agent/transaction/trace_node.rb +12 -8
  243. data/lib/new_relic/agent/transaction/tracing.rb +2 -100
  244. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +1 -1
  245. data/lib/new_relic/agent/transaction_error_primitive.rb +13 -22
  246. data/lib/new_relic/agent/transaction_event_aggregator.rb +7 -16
  247. data/lib/new_relic/agent/transaction_event_primitive.rb +31 -42
  248. data/lib/new_relic/agent/transaction_event_recorder.rb +8 -16
  249. data/lib/new_relic/agent/transaction_metrics.rb +1 -1
  250. data/lib/new_relic/agent/transaction_sampler.rb +3 -14
  251. data/lib/new_relic/agent/transaction_time_aggregator.rb +155 -0
  252. data/lib/new_relic/agent/utilization/aws.rb +1 -1
  253. data/lib/new_relic/agent/utilization/azure.rb +1 -1
  254. data/lib/new_relic/agent/utilization/gcp.rb +1 -1
  255. data/lib/new_relic/agent/utilization/pcf.rb +1 -1
  256. data/lib/new_relic/agent/utilization/vendor.rb +1 -1
  257. data/lib/new_relic/agent/utilization_data.rb +37 -2
  258. data/lib/new_relic/agent/vm.rb +1 -1
  259. data/lib/new_relic/agent/vm/jruby_vm.rb +1 -1
  260. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +1 -1
  261. data/lib/new_relic/agent/vm/mri_vm.rb +1 -1
  262. data/lib/new_relic/agent/vm/snapshot.rb +1 -1
  263. data/lib/new_relic/agent/worker_loop.rb +1 -1
  264. data/lib/new_relic/cli/command.rb +1 -1
  265. data/lib/new_relic/cli/commands/deployments.rb +2 -2
  266. data/lib/new_relic/cli/commands/install.rb +4 -3
  267. data/lib/new_relic/coerce.rb +32 -7
  268. data/lib/new_relic/collection_helper.rb +1 -1
  269. data/lib/new_relic/constants.rb +38 -0
  270. data/lib/new_relic/control.rb +1 -1
  271. data/lib/new_relic/control/class_methods.rb +8 -2
  272. data/lib/new_relic/control/frameworks.rb +1 -1
  273. data/lib/new_relic/control/frameworks/external.rb +1 -1
  274. data/lib/new_relic/control/frameworks/merb.rb +1 -1
  275. data/lib/new_relic/control/frameworks/rails.rb +1 -1
  276. data/lib/new_relic/control/frameworks/rails3.rb +1 -1
  277. data/lib/new_relic/control/frameworks/rails4.rb +1 -1
  278. data/lib/new_relic/control/frameworks/{rails5.rb → rails_notifications.rb} +2 -2
  279. data/lib/new_relic/control/frameworks/ruby.rb +1 -1
  280. data/lib/new_relic/control/frameworks/sinatra.rb +1 -1
  281. data/lib/new_relic/control/instance_methods.rb +30 -4
  282. data/lib/new_relic/control/instrumentation.rb +1 -1
  283. data/lib/new_relic/control/server_methods.rb +1 -1
  284. data/lib/new_relic/delayed_job_injection.rb +1 -1
  285. data/lib/new_relic/dependency_detection.rb +5 -5
  286. data/lib/new_relic/environment_report.rb +6 -2
  287. data/lib/new_relic/helper.rb +1 -1
  288. data/lib/new_relic/language_support.rb +1 -1
  289. data/lib/new_relic/latest_changes.rb +4 -4
  290. data/lib/new_relic/local_environment.rb +1 -1
  291. data/lib/new_relic/metric_data.rb +1 -1
  292. data/lib/new_relic/metric_spec.rb +1 -1
  293. data/lib/new_relic/noticed_error.rb +39 -18
  294. data/lib/new_relic/rack.rb +1 -1
  295. data/lib/new_relic/rack/agent_hooks.rb +1 -1
  296. data/lib/new_relic/rack/agent_middleware.rb +2 -2
  297. data/lib/new_relic/rack/browser_monitoring.rb +16 -9
  298. data/lib/new_relic/recipes.rb +1 -1
  299. data/lib/new_relic/recipes/capistrano3.rb +6 -3
  300. data/lib/new_relic/recipes/capistrano_legacy.rb +1 -1
  301. data/lib/new_relic/supportability_helper.rb +15 -1
  302. data/lib/new_relic/version.rb +4 -4
  303. data/lib/newrelic_rpm.rb +1 -1
  304. data/lib/sequel/extensions/newrelic_instrumentation.rb +3 -3
  305. data/lib/sequel/plugins/newrelic_instrumentation.rb +2 -2
  306. data/lib/tasks/all.rb +1 -1
  307. data/lib/tasks/config.rake +1 -2
  308. data/lib/tasks/multiverse.rb +35 -1
  309. data/lib/tasks/newrelic.rb +1 -1
  310. data/lib/tasks/tests.rake +6 -1
  311. data/newrelic_rpm.gemspec +23 -17
  312. data/recipes/newrelic.rb +1 -1
  313. data/test/agent_helper.rb +357 -78
  314. metadata +154 -60
  315. data/.travis.yml +0 -173
  316. data/lib/new_relic/agent/busy_calculator.rb +0 -117
  317. data/lib/new_relic/agent/commands/xray_session.rb +0 -55
  318. data/lib/new_relic/agent/commands/xray_session_collection.rb +0 -161
  319. data/lib/new_relic/agent/cross_app_monitor.rb +0 -140
  320. data/lib/new_relic/agent/cross_app_tracing.rb +0 -143
  321. data/lib/new_relic/agent/distributed_trace_monitor.rb +0 -29
  322. data/lib/new_relic/agent/distributed_trace_payload.rb +0 -223
  323. data/lib/new_relic/agent/distributed_trace_priority_sampled_buffer.rb +0 -72
  324. data/lib/new_relic/agent/http_clients/abstract_request.rb +0 -31
  325. data/lib/new_relic/agent/instrumentation/active_record_4.rb +0 -42
  326. data/lib/new_relic/agent/instrumentation/active_record_5.rb +0 -36
  327. data/lib/new_relic/agent/instrumentation/evented_subscriber.rb +0 -104
  328. data/lib/new_relic/agent/instrumentation/rails4/action_controller.rb +0 -32
  329. data/lib/new_relic/agent/instrumentation/rails5/action_view.rb +0 -27
  330. data/lib/new_relic/agent/sampled_buffer.rb +0 -68
  331. data/lib/new_relic/agent/sized_buffer.rb +0 -23
  332. data/lib/new_relic/agent/synthetics_event_buffer.rb +0 -40
  333. data/lib/new_relic/agent/throughput_monitor.rb +0 -59
  334. data/lib/new_relic/agent/transaction/attributes.rb +0 -153
  335. data/lib/new_relic/agent/transaction/xray_sample_buffer.rb +0 -64
  336. data/lib/new_relic/agent/transaction_state.rb +0 -145
  337. data/lib/new_relic/agent/transaction_timings.rb +0 -57
  338. data/lib/new_relic/metrics.rb +0 -13
  339. data/lib/tasks/versions.html.erb +0 -28
  340. data/lib/tasks/versions.postface.html +0 -8
  341. data/lib/tasks/versions.preface.html +0 -9
  342. data/lib/tasks/versions.rake +0 -65
  343. 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 'new_relic/agent/threading/agent_thread'
6
6
  require 'new_relic/agent/threading/backtrace_service'
@@ -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 'new_relic/agent/configuration/manager'
6
6
  require 'new_relic/agent/configuration/dotted_hash'
@@ -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
 
@@ -91,10 +91,8 @@ module NewRelic
91
91
  :rails
92
92
  when 3
93
93
  :rails3
94
- when 4
95
- :rails4
96
- when 5
97
- :rails5
94
+ when 4..6
95
+ :rails_notifications
98
96
  else
99
97
  ::NewRelic::Agent.logger.error "Detected unsupported Rails version #{Rails::VERSION::STRING}"
100
98
  end
@@ -113,9 +111,15 @@ module NewRelic
113
111
  }
114
112
  end
115
113
 
114
+ DEFAULT_LOG_DIR = 'log/'.freeze
115
+
116
116
  def self.audit_log_path
117
117
  Proc.new {
118
- File.join(NewRelic::Agent.config[:log_file_path], 'newrelic_audit.log')
118
+ log_file_path = NewRelic::Agent.config[:log_file_path]
119
+ wants_stdout = (log_file_path.upcase == 'STDOUT')
120
+ audit_log_dir = wants_stdout ? DEFAULT_LOG_DIR : log_file_path
121
+
122
+ File.join(audit_log_dir, 'newrelic_audit.log')
119
123
  }
120
124
  end
121
125
 
@@ -142,10 +146,6 @@ module NewRelic
142
146
  Proc.new { NewRelic::Agent.config[:apdex_t] * 4 }
143
147
  end
144
148
 
145
- def self.port
146
- Proc.new { NewRelic::Agent.config[:ssl] ? 443 : 80 }
147
- end
148
-
149
149
  def self.profiling_available
150
150
  Proc.new {
151
151
  begin
@@ -157,6 +157,27 @@ module NewRelic
157
157
  }
158
158
  end
159
159
 
160
+ def self.host
161
+ Proc.new do
162
+ regex = /\A(?<identifier>.+?)x/
163
+ if matches = regex.match(String(NewRelic::Agent.config[:license_key]))
164
+ "collector.#{matches['identifier']}.nr-data.net"
165
+ else
166
+ 'collector.newrelic.com'
167
+ end
168
+ end
169
+ end
170
+
171
+ def self.api_host
172
+ Proc.new do
173
+ if String(NewRelic::Agent.config[:license_key]).start_with? 'eu'
174
+ 'rpm.eu.newrelic.com'
175
+ else
176
+ 'rpm.newrelic.com'
177
+ end
178
+ end
179
+ end
180
+
160
181
  def self.convert_to_regexp_list(raw_value)
161
182
  value_list = convert_to_list(raw_value)
162
183
  value_list.map do |value|
@@ -175,6 +196,15 @@ module NewRelic
175
196
  end
176
197
  end
177
198
 
199
+ SEMICOLON = ';'.freeze
200
+ def self.convert_to_list_on_semicolon value
201
+ case value
202
+ when Array then value
203
+ when String then value.split(SEMICOLON)
204
+ else []
205
+ end
206
+ end
207
+
178
208
  def self.convert_to_constant_list(raw_value)
179
209
  const_names = convert_to_list(raw_value)
180
210
  const_names.map! do |class_name|
@@ -188,9 +218,19 @@ module NewRelic
188
218
  end
189
219
  const_names.compact
190
220
  end
221
+
222
+ def self.enforce_fallback(allowed_values: nil, fallback: nil)
223
+ Proc.new do |configured_value|
224
+ if allowed_values.any? { |v| v =~ /#{configured_value}/i }
225
+ configured_value
226
+ else
227
+ fallback
228
+ end
229
+ end
230
+ end
191
231
  end
192
232
 
193
- AUTOSTART_BLACKLISTED_RAKE_TASKS = [
233
+ AUTOSTART_DENYLISTED_RAKE_TASKS = [
194
234
  'about',
195
235
  'assets:clean',
196
236
  'assets:clobber',
@@ -238,7 +278,8 @@ module NewRelic
238
278
  'test:uncommitted',
239
279
  'time:zones:all',
240
280
  'tmp:clear',
241
- 'tmp:create'
281
+ 'tmp:create',
282
+ 'webpacker:compile'
242
283
  ].join(',').freeze
243
284
 
244
285
  DEFAULTS = {
@@ -269,8 +310,17 @@ module NewRelic
269
310
  :public => true,
270
311
  :type => String,
271
312
  :allowed_from_server => false,
313
+ :transform => DefaultSource.method(:convert_to_list_on_semicolon),
272
314
  :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>.'
273
315
  },
316
+ :entity_guid => {
317
+ :default => nil,
318
+ :allow_nil => true,
319
+ :public => true,
320
+ :type => String,
321
+ :allowed_from_server => true,
322
+ :description => 'The <a href="https://docs.newrelic.com/attribute-dictionary/span/entityguid">Entity GUID</a> for the entity running this agent.'
323
+ },
274
324
  :monitor_mode => {
275
325
  :default => value_of(:enabled),
276
326
  :public => true,
@@ -299,13 +349,12 @@ module NewRelic
299
349
  :allowed_from_server => false,
300
350
  :description => 'If <code>true</code>, enables <a href="https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security">high security mode</a>. Ensure you understand the implications of high security mode before enabling this setting.'
301
351
  },
302
- :ssl => {
303
- :default => true,
304
- :allow_nil => true,
352
+ :security_policies_token => {
353
+ :default => '',
305
354
  :public => true,
306
- :type => Boolean,
355
+ :type => String,
307
356
  :allowed_from_server => false,
308
- :description => 'If <code>true</code>, enables SSL for transmissions to the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>.'
357
+ :description => 'Applies Language Agent Security Policy settings.'
309
358
  },
310
359
  :proxy_host => {
311
360
  :default => nil,
@@ -346,7 +395,21 @@ module NewRelic
346
395
  :public => true,
347
396
  :type => Boolean,
348
397
  :allowed_from_server => false,
349
- :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>.'
398
+ :description => 'When <code>true</code>, the agent captures HTTP request parameters ' \
399
+ 'and attaches them to transaction traces, traced errors, and ' \
400
+ '<a href="https://docs.newrelic.com/attribute-dictionary?attribute_name=&events_tids%5B%5D=8241">'\
401
+ '<code>TransactionError</code> events.' \
402
+ "\n" \
403
+ '<div class="callout-warning">' \
404
+ "\n" \
405
+ '<p>When using the <code>capture_params</code> setting, the Ruby agent will not attempt ' \
406
+ 'to filter secret information. <b>Recommendation:</b> To filter secret information from ' \
407
+ 'request parameters, use the <a href="/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby">' \
408
+ '<code>attributes.include</code> setting</a> instead. For more information, see the ' \
409
+ '<a href="/docs/agents/ruby-agent/attributes/ruby-attribute-examples#ex_req_params">' \
410
+ 'Ruby attribute examples</a>.' \
411
+ "</p>\n" \
412
+ '</div>'
350
413
  },
351
414
  :config_path => {
352
415
  :default => DefaultSource.config_path,
@@ -377,6 +440,17 @@ module NewRelic
377
440
  :description => 'Autodetected application framework used to enable framework-specific functionality.'
378
441
  },
379
442
  :'autostart.blacklisted_constants' => {
443
+ :default => 'Rails::Console',
444
+ :public => true,
445
+ :type => String,
446
+ :allowed_from_server => false,
447
+ :description => 'Deprecated. ' \
448
+ 'For agent versions 6.8.0 or higher, ' \
449
+ 'use <a href="#autostart-denylisted_constants"><code>' \
450
+ 'autostart.denylisted_constants' \
451
+ '</code></a> instead.'
452
+ },
453
+ :'autostart.denylisted_constants' => {
380
454
  :default => 'Rails::Console',
381
455
  :public => true,
382
456
  :type => String,
@@ -388,10 +462,32 @@ module NewRelic
388
462
  :public => true,
389
463
  :type => String,
390
464
  :allowed_from_server => false,
465
+ :description => 'Deprecated. ' \
466
+ 'For agent versions 6.8.0 or higher, ' \
467
+ 'use <a href="#autostart-denylisted_executables"><code>' \
468
+ 'autostart.denylisted_executables' \
469
+ '</code></a> instead.'
470
+ },
471
+ :'autostart.denylisted_executables' => {
472
+ :default => value_of(:'autostart.blacklisted_executables'),
473
+ :public => true,
474
+ :type => String,
475
+ :allowed_from_server => false,
391
476
  :description => 'Defines a comma-delimited list of executables that the agent should not instrument. For example, <code>rake,my_ruby_script.rb</code>.'
392
477
  },
393
478
  :'autostart.blacklisted_rake_tasks' => {
394
- :default => AUTOSTART_BLACKLISTED_RAKE_TASKS,
479
+ :default => AUTOSTART_DENYLISTED_RAKE_TASKS,
480
+ :public => true,
481
+ :type => String,
482
+ :allowed_from_server => false,
483
+ :description => 'Deprecated. ' \
484
+ 'For agent versions 6.8.0 or higher, ' \
485
+ 'use <a href="#autostart-denylisted_rake_tasks"><code>' \
486
+ 'autostart.denylisted_rake_tasks' \
487
+ '</code></a> instead.'
488
+ },
489
+ :'autostart.denylisted_rake_tasks' => {
490
+ :default => value_of(:'autostart.blacklisted_rake_tasks'),
395
491
  :public => true,
396
492
  :type => String,
397
493
  :allowed_from_server => false,
@@ -439,32 +535,45 @@ module NewRelic
439
535
  :public => true,
440
536
  :type => Boolean,
441
537
  :allowed_from_server => false,
442
- :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>.'
538
+ :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>.'
443
539
  },
444
540
  :'strip_exception_messages.whitelist' => {
445
541
  :default => '',
446
542
  :public => true,
447
543
  :type => String,
544
+ :deprecated => true,
448
545
  :allowed_from_server => false,
449
546
  :transform => DefaultSource.method(:convert_to_constant_list),
450
- :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>.'
547
+ :description => 'Deprecated. ' \
548
+ 'For agent versions 6.8.0 or higher, ' \
549
+ 'use <a href="#strip_exception_messages.allowed_classes"><code>' \
550
+ 'strip_exception_messages.allowed_classes' \
551
+ '</code></a> instead.'
552
+ },
553
+ :'strip_exception_messages.allowed_classes' => {
554
+ :default => '',
555
+ :public => true,
556
+ :type => String,
557
+ :allowed_from_server => false,
558
+ :transform => DefaultSource.method(:convert_to_constant_list),
559
+ :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>.'
451
560
  },
452
561
  :host => {
453
- :default => 'collector.newrelic.com',
562
+ :default => DefaultSource.host,
454
563
  :public => false,
455
564
  :type => String,
456
565
  :allowed_from_server => false,
457
566
  :description => "URI for the New Relic data collection service."
458
567
  },
459
568
  :api_host => {
460
- :default => 'rpm.newrelic.com',
569
+ :default => DefaultSource.api_host,
461
570
  :public => false,
462
571
  :type => String,
463
572
  :allowed_from_server => false,
464
573
  :description => 'API host for New Relic.'
465
574
  },
466
575
  :port => {
467
- :default => DefaultSource.port,
576
+ :default => 443,
468
577
  :public => false,
469
578
  :type => Integer,
470
579
  :allowed_from_server => false,
@@ -491,8 +600,8 @@ module NewRelic
491
600
  :allowed_from_server => false,
492
601
  :description => 'If <code>true</code>, enables the exit handler that sends data to the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a> before shutting down.'
493
602
  },
494
- :post_size_limit => {
495
- :default => 2 * 1024 * 1024, # 2MB
603
+ :max_payload_size_in_bytes => {
604
+ :default => 1000000,
496
605
  :public => false,
497
606
  :type => Integer,
498
607
  :allowed_from_server => true,
@@ -506,7 +615,7 @@ module NewRelic
506
615
  :description => 'Use HTTP PUT requests instead of POST.'
507
616
  },
508
617
  :compressed_content_encoding => {
509
- :default => 'deflate',
618
+ :default => 'gzip',
510
619
  :public => false,
511
620
  :type => String,
512
621
  :allowed_from_server => false,
@@ -538,15 +647,46 @@ module NewRelic
538
647
  :public => false,
539
648
  :type => Integer,
540
649
  :allowed_from_server => true,
541
- :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.'
650
+ :description => 'Number of seconds betwixt connections to the New Relic data collection service.'
651
+ },
652
+ :event_report_period => {
653
+ :default => 60,
654
+ :public => false,
655
+ :type => Integer,
656
+ :allowed_from_server => true,
657
+ :description => 'Number of seconds betwixt connections to the New Relic event collection services.'
658
+ },
659
+ :'event_report_period.analytic_event_data' => {
660
+ :default => 60,
661
+ :public => false,
662
+ :type => Integer,
663
+ :dynamic_name => true,
664
+ :allowed_from_server => true,
665
+ :description => 'Number of seconds betwixt connections to the New Relic analytic event collection services.'
666
+ },
667
+ :'event_report_period.custom_event_data' => {
668
+ :default => 60,
669
+ :public => false,
670
+ :type => Integer,
671
+ :dynamic_name => true,
672
+ :allowed_from_server => true,
673
+ :description => 'Number of seconds betwixt connections to the New Relic custom event collection services.'
674
+ },
675
+ :'event_report_period.error_event_data' => {
676
+ :default => 60,
677
+ :public => false,
678
+ :type => Integer,
679
+ :dynamic_name => true,
680
+ :allowed_from_server => true,
681
+ :description => 'Number of seconds betwixt connections to the New Relic error event collection services.'
542
682
  },
543
- :'data_report_periods.analytic_event_data' => {
683
+ :'event_report_period.span_event_data' => {
544
684
  :default => 60,
545
685
  :public => false,
546
686
  :type => Integer,
547
687
  :dynamic_name => true,
548
688
  :allowed_from_server => true,
549
- :description => 'Number of seconds between connections to the New Relic data collection service for sending transaction event data.'
689
+ :description => 'Number of seconds betwixt connections to the New Relic span event collection services.'
550
690
  },
551
691
  :keep_retrying => {
552
692
  :default => true,
@@ -578,7 +718,7 @@ module NewRelic
578
718
  :description => 'Defines a name for the log file.'
579
719
  },
580
720
  :log_file_path => {
581
- :default => 'log/',
721
+ :default => DefaultSource::DEFAULT_LOG_DIR,
582
722
  :public => true,
583
723
  :type => String,
584
724
  :allowed_from_server => false,
@@ -706,6 +846,14 @@ module NewRelic
706
846
  :allowed_from_server => false,
707
847
  :description => 'If <code>true</code>, disables Action Cable instrumentation.'
708
848
  },
849
+ :disable_active_storage => {
850
+ :default => false,
851
+ :public => true,
852
+ :type => Boolean,
853
+ :dynamic_name => true,
854
+ :allowed_from_server => false,
855
+ :description => 'If <code>true</code>, disables ActiveStorage instrumentation.'
856
+ },
709
857
  :disable_memcached => {
710
858
  :default => value_of(:disable_memcache_instrumentation),
711
859
  :public => true,
@@ -799,7 +947,16 @@ module NewRelic
799
947
  :public => true,
800
948
  :type => String,
801
949
  :allowed_from_server => true,
802
- :description => 'Obfuscation level for SQL queries reported in transaction trace nodes. Valid options are <code>obfuscated</code>, <code>raw</code>, or <code>none</code>.'
950
+ :description => 'Obfuscation level for SQL queries reported in transaction trace nodes.</p>
951
+
952
+ <p>By default, this is set to <code>obfuscated</code>, which strips out the numeric and string literals.</p>
953
+
954
+ <ul>
955
+ <li>If you do not want the agent to capture query information, set this to <code>none</code>.</li>
956
+ <li>If you want the agent to capture all query information in its original form, set this to <code>raw</code>.</li>
957
+ <li>When you enable <a href="/docs/agents/manage-apm-agents/configuration/high-security-mode">high security mode</a>, this is automatically set to <code>obfuscated</code>.</li>
958
+ </ul>
959
+ <p>' # Doc generator will wrap this in <p>...</p>
803
960
  },
804
961
  :'transaction_tracer.record_redis_arguments' => {
805
962
  :default => false,
@@ -959,11 +1116,19 @@ module NewRelic
959
1116
  :allowed_from_server => true,
960
1117
  :description => 'Specify a comma-delimited list of error classes that the agent should ignore.'
961
1118
  },
1119
+ :'error_collector.max_backtrace_frames' => {
1120
+ :default => 50,
1121
+ :public => true,
1122
+ :type => Integer,
1123
+ :allowed_from_server => false,
1124
+ :description => 'Defines the maximum number of frames in an error backtrace. Backtraces over this amount are truncated at the beginning and end.'
1125
+ },
962
1126
  :'error_collector.capture_events' => {
963
1127
  :default => value_of(:'error_collector.enabled'),
964
1128
  :public => true,
965
1129
  :type => Boolean,
966
1130
  :allowed_from_server => true,
1131
+ :dynamic_name => true,
967
1132
  :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>.'
968
1133
  },
969
1134
  :'error_collector.max_event_samples_stored' => {
@@ -1082,7 +1247,7 @@ module NewRelic
1082
1247
  :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.'
1083
1248
  },
1084
1249
  :"cross_application_tracer.enabled" => {
1085
- :default => true,
1250
+ :default => Proc.new { !NewRelic::Agent.config[:'distributed_tracing.enabled'] },
1086
1251
  :public => true,
1087
1252
  :type => Boolean,
1088
1253
  :allowed_from_server => true,
@@ -1118,35 +1283,7 @@ module NewRelic
1118
1283
  :allowed_from_server => true,
1119
1284
  :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>.'
1120
1285
  },
1121
- :'xray_session.enabled' => {
1122
- :default => true,
1123
- :public => true,
1124
- :type => Boolean,
1125
- :allowed_from_server => true,
1126
- :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>.'
1127
- },
1128
- :'xray_session.allow_traces' => {
1129
- :default => true,
1130
- :public => false,
1131
- :type => Boolean,
1132
- :allowed_from_server => true,
1133
- :description => 'Enable or disable X-Ray sessions recording transaction traces.'
1134
- },
1135
- :'xray_session.allow_profiles' => {
1136
- :default => true,
1137
- :public => false,
1138
- :type => Boolean,
1139
- :allowed_from_server => true,
1140
- :description => 'Enable or disable X-Ray sessions taking thread profiles.'
1141
- },
1142
- :'xray_session.max_samples' => {
1143
- :default => 10,
1144
- :public => false,
1145
- :type => Integer,
1146
- :allowed_from_server => true,
1147
- :description => 'Maximum number of transaction traces to buffer for active X-Ray sessions'
1148
- },
1149
- :'xray_session.max_profile_overhead' => {
1286
+ :'thread_profiler.max_profile_overhead' => {
1150
1287
  :default => 0.05,
1151
1288
  :public => false,
1152
1289
  :type => Float,
@@ -1196,6 +1333,13 @@ module NewRelic
1196
1333
  :allowed_from_server => false,
1197
1334
  :description => 'Controls whether to normalize string encodings prior to serializing data for the collector to JSON.'
1198
1335
  },
1336
+ :backport_fast_active_record_connection_lookup => {
1337
+ :default => false,
1338
+ :public => true,
1339
+ :type => Boolean,
1340
+ :allowed_from_server => false,
1341
+ :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.'
1342
+ },
1199
1343
  :disable_vm_sampler => {
1200
1344
  :default => false,
1201
1345
  :public => true,
@@ -1234,7 +1378,12 @@ module NewRelic
1234
1378
  :type => Boolean,
1235
1379
  :dynamic_name => true,
1236
1380
  :allowed_from_server => false,
1237
- :description => 'If <code>true</code>, disables instrumentation for ActiveRecord 4.'
1381
+ :deprecated => true,
1382
+ :description => 'Deprecated. ' \
1383
+ 'For agent versions 6.3 or higher, ' \
1384
+ 'use <a href="#disable_active_record_notifications"><code>' \
1385
+ 'disable_active_record_notifications' \
1386
+ '</code></a> instead.'
1238
1387
  },
1239
1388
  :disable_active_record_5 => {
1240
1389
  :default => false,
@@ -1242,7 +1391,20 @@ module NewRelic
1242
1391
  :type => Boolean,
1243
1392
  :dynamic_name => true,
1244
1393
  :allowed_from_server => false,
1245
- :description => 'If <code>true</code>, disables instrumentation for ActiveRecord 5.'
1394
+ :deprecated => true,
1395
+ :description => 'Deprecated. ' \
1396
+ 'For agent versions 6.3 or higher, ' \
1397
+ 'use <a href="#disable_active_record_notifications"><code>' \
1398
+ 'disable_active_record_notifications' \
1399
+ '</code></a> instead.'
1400
+ },
1401
+ :disable_active_record_notifications => {
1402
+ :default => false,
1403
+ :public => true,
1404
+ :type => Boolean,
1405
+ :dynamic_name => true,
1406
+ :allowed_from_server => false,
1407
+ :description => 'If <code>true</code>, disables instrumentation for ActiveRecord 4, 5, and 6.'
1246
1408
  },
1247
1409
  :disable_bunny => {
1248
1410
  :default => false,
@@ -1483,6 +1645,20 @@ module NewRelic
1483
1645
  :allowed_from_server => false,
1484
1646
  :description => 'If <code>true</code>, the agent captures attributes from browser monitoring.'
1485
1647
  },
1648
+ :'span_events.attributes.enabled' => {
1649
+ :default => true,
1650
+ :public => true,
1651
+ :type => Boolean,
1652
+ :allowed_from_server => false,
1653
+ :description => 'If <code>true</code>, the agent captures attributes on span events.'
1654
+ },
1655
+ :'transaction_segments.attributes.enabled' => {
1656
+ :default => true,
1657
+ :public => true,
1658
+ :type => Boolean,
1659
+ :allowed_from_server => false,
1660
+ :description => 'If <code>true</code>, the agent captures attributes on transaction segments.'
1661
+ },
1486
1662
  :'attributes.exclude' => {
1487
1663
  :default => [],
1488
1664
  :public => true,
@@ -1523,6 +1699,22 @@ module NewRelic
1523
1699
  :transform => DefaultSource.method(:convert_to_list),
1524
1700
  :description => 'Prefix of attributes to exclude from browser monitoring. Allows <code>*</code> as wildcard at end.'
1525
1701
  },
1702
+ :'span_events.attributes.exclude' => {
1703
+ :default => [],
1704
+ :public => true,
1705
+ :type => Array,
1706
+ :allowed_from_server => false,
1707
+ :transform => DefaultSource.method(:convert_to_list),
1708
+ :description => 'Prefix of attributes to exclude from span events. Allows <code>*</code> as wildcard at end.'
1709
+ },
1710
+ :'transaction_segments.attributes.exclude' => {
1711
+ :default => [],
1712
+ :public => true,
1713
+ :type => Array,
1714
+ :allowed_from_server => false,
1715
+ :transform => DefaultSource.method(:convert_to_list),
1716
+ :description => 'Prefix of attributes to exclude from transaction segments. Allows <code>*</code> as wildcard at end.'
1717
+ },
1526
1718
  :'attributes.include' => {
1527
1719
  :default => [],
1528
1720
  :public => true,
@@ -1563,6 +1755,29 @@ module NewRelic
1563
1755
  :transform => DefaultSource.method(:convert_to_list),
1564
1756
  :description => 'Prefix of attributes to include in browser monitoring. Allows <code>*</code> as wildcard at end.'
1565
1757
  },
1758
+ :'span_events.attributes.include' => {
1759
+ :default => [],
1760
+ :public => true,
1761
+ :type => Array,
1762
+ :allowed_from_server => false,
1763
+ :transform => DefaultSource.method(:convert_to_list),
1764
+ :description => 'Prefix of attributes to include on span events. Allows <code>*</code> as wildcard at end.'
1765
+ },
1766
+ :'transaction_segments.attributes.include' => {
1767
+ :default => [],
1768
+ :public => true,
1769
+ :type => Array,
1770
+ :allowed_from_server => false,
1771
+ :transform => DefaultSource.method(:convert_to_list),
1772
+ :description => 'Prefix of attributes to include on transaction segments. Allows <code>*</code> as wildcard at end.'
1773
+ },
1774
+ :'custom_attributes.enabled' => {
1775
+ :default => true,
1776
+ :public => true,
1777
+ :type => Boolean,
1778
+ :allowed_from_server => false,
1779
+ :description => 'If <code>false</code>, custom attributes will not be sent on Insights events.'
1780
+ },
1566
1781
  :'utilization.detect_aws' => {
1567
1782
  :default => true,
1568
1783
  :public => true,
@@ -1602,6 +1817,13 @@ module NewRelic
1602
1817
  :allowed_from_server => false,
1603
1818
  :description => 'If <code>true</code>, the agent automatically detects that it is running in Docker.'
1604
1819
  },
1820
+ :'utilization.detect_kubernetes' => {
1821
+ :default => true,
1822
+ :public => true,
1823
+ :type => Boolean,
1824
+ :allowed_from_server => false,
1825
+ :description => 'If <code>true</code>, the agent automatically detects that it is running in Kubernetes.'
1826
+ },
1605
1827
  :'utilization.billing_hostname' => {
1606
1828
  :default => nil,
1607
1829
  :allow_nil => true,
@@ -1645,14 +1867,100 @@ module NewRelic
1645
1867
  :public => true,
1646
1868
  :type => Boolean,
1647
1869
  :allowed_from_server => false,
1648
- :description => 'If <code>true</code>, the agent will clear <code>TransactionState</code> in <code>Agent.drop_buffered_data</code>.'
1870
+ :description => 'If <code>true</code>, the agent will clear <code>Tracer::State</code> in <code>Agent.drop_buffered_data</code>.'
1871
+ },
1872
+ :account_id => {
1873
+ :default => nil,
1874
+ :allow_nil => true,
1875
+ :public => false,
1876
+ :type => String,
1877
+ :allowed_from_server => true,
1878
+ :description => 'The account id associated with this application.'
1879
+ },
1880
+ :primary_application_id => {
1881
+ :default => nil,
1882
+ :allow_nil => true,
1883
+ :public => false,
1884
+ :type => String,
1885
+ :allowed_from_server => true,
1886
+ :description => 'The primary id associated with this application.'
1649
1887
  },
1650
1888
  :'distributed_tracing.enabled' => {
1651
1889
  :default => false,
1652
- :public => false,
1890
+ :public => true,
1653
1891
  :type => Boolean,
1654
1892
  :allowed_from_server => false,
1655
- :description => 'If <code>true</code> enables experimental distributed tracing feature.'
1893
+ :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 <a href="https://docs.newrelic.com/docs/transition-guide-distributed-tracing">transition guide</a> before you enable this feature.'
1894
+ },
1895
+ :trusted_account_key => {
1896
+ :default => nil,
1897
+ :allow_nil => true,
1898
+ :public => false,
1899
+ :type => String,
1900
+ :allowed_from_server => true,
1901
+ :description => 'A shared key to validate that a distributed trace payload came from a trusted account.'
1902
+ },
1903
+ :sampling_target => {
1904
+ :default => 10,
1905
+ :public => false,
1906
+ :type => Integer,
1907
+ :allowed_from_server => true,
1908
+ :description => 'The target number of transactions to mark as sampled during a sampled period.'
1909
+ },
1910
+ :sampling_target_period_in_seconds => {
1911
+ :default => 60,
1912
+ :public => false,
1913
+ :type => Integer,
1914
+ :allowed_from_server => true,
1915
+ :description => 'The period during which a target number of transactions should be marked as sampled.'
1916
+ },
1917
+ :'span_events.enabled' => {
1918
+ :default => true,
1919
+ :public => true,
1920
+ :type => Boolean,
1921
+ :allowed_from_server => true,
1922
+ :description => 'If <code>true</code>, enables span event sampling.'
1923
+ },
1924
+ :'span_events.queue_size' => {
1925
+ :default => 10_000,
1926
+ :public => true,
1927
+ :type => Integer,
1928
+ :allowed_from_server => false,
1929
+ :external => :infinite_tracing,
1930
+ :description => "Sets the maximum number of span events to buffer when streaming to the trace observer."
1931
+ },
1932
+ :'span_events.max_samples_stored' => {
1933
+ :default => 1000,
1934
+ :public => true,
1935
+ :type => Integer,
1936
+ :allowed_from_server => true,
1937
+ :description => 'Defines the maximum number of span events reported from a single harvest.'
1938
+ },
1939
+ :'exclude_newrelic_header' => {
1940
+ :default => false,
1941
+ :public => true,
1942
+ :type => Boolean,
1943
+ :allowed_from_server => true,
1944
+ :description => "Allows newrelic distributed tracing headers to be suppressed on outbound requests."
1945
+ },
1946
+ :'infinite_tracing.trace_observer.host' => {
1947
+ :default => '',
1948
+ :public => true,
1949
+ :type => String,
1950
+ :allowed_from_server => false,
1951
+ :external => :infinite_tracing,
1952
+ :description => "Configures the hostname for the Trace Observer Host. " \
1953
+ "When configured, enables tail-based sampling by sending all recorded spans " \
1954
+ "to a Trace Observer for further sampling decisions, irrespective of any usual " \
1955
+ "agent sampling decision."
1956
+ },
1957
+ :'infinite_tracing.trace_observer.port' => {
1958
+ :default => 443,
1959
+ :public => true,
1960
+ :type => Integer,
1961
+ :allowed_from_server => false,
1962
+ :external => :infinite_tracing,
1963
+ :description => "Configures the TCP/IP port for the Trace Observer Host"
1656
1964
  }
1657
1965
  }.freeze
1658
1966
  end