newrelic_rpm 6.8.0.360 → 8.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (440) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +14 -1
  3. data/.rubocop.yml +1817 -0
  4. data/.rubocop_todo.yml +59 -0
  5. data/.simplecov +15 -0
  6. data/.snyk +11 -0
  7. data/.yardopts +1 -0
  8. data/Brewfile +12 -0
  9. data/CHANGELOG.md +1142 -15
  10. data/CONTRIBUTING.md +133 -19
  11. data/DOCKER.md +167 -0
  12. data/Dockerfile +10 -0
  13. data/Gemfile +5 -2
  14. data/Guardfile +18 -6
  15. data/LICENSE +202 -38
  16. data/README.md +84 -87
  17. data/Rakefile +27 -27
  18. data/THIRD_PARTY_NOTICES.md +28 -0
  19. data/Thorfile +5 -0
  20. data/bin/newrelic +3 -2
  21. data/bin/newrelic_cmd +1 -0
  22. data/bin/nrdebug +77 -54
  23. data/config.dot +5 -5
  24. data/docker-compose.yml +107 -0
  25. data/init.rb +5 -7
  26. data/install.rb +3 -3
  27. data/lefthook.yml +9 -0
  28. data/lib/new_relic/agent/adaptive_sampler.rb +14 -10
  29. data/lib/new_relic/agent/agent/shutdown.rb +35 -0
  30. data/lib/new_relic/agent/agent/special_startup.rb +72 -0
  31. data/lib/new_relic/agent/agent/start_worker_thread.rb +163 -0
  32. data/lib/new_relic/agent/agent/startup.rb +197 -0
  33. data/lib/new_relic/agent/agent.rb +199 -562
  34. data/lib/new_relic/agent/agent_logger.rb +24 -20
  35. data/lib/new_relic/agent/attribute_filter.rb +67 -48
  36. data/lib/new_relic/agent/attribute_processing.rb +8 -8
  37. data/lib/new_relic/agent/attributes.rb +9 -8
  38. data/lib/new_relic/agent/audit_logger.rb +19 -4
  39. data/lib/new_relic/agent/autostart.rb +21 -20
  40. data/lib/new_relic/agent/chained_call.rb +2 -2
  41. data/lib/new_relic/agent/commands/agent_command.rb +4 -4
  42. data/lib/new_relic/agent/commands/agent_command_router.rb +13 -12
  43. data/lib/new_relic/agent/commands/thread_profiler_session.rb +10 -8
  44. data/lib/new_relic/agent/configuration/default_source.rb +1731 -1143
  45. data/lib/new_relic/agent/configuration/dotted_hash.rb +7 -6
  46. data/lib/new_relic/agent/configuration/environment_source.rb +12 -10
  47. data/lib/new_relic/agent/configuration/event_harvest_config.rb +41 -18
  48. data/lib/new_relic/agent/configuration/high_security_source.rb +10 -9
  49. data/lib/new_relic/agent/configuration/manager.rb +83 -70
  50. data/lib/new_relic/agent/configuration/manual_source.rb +2 -2
  51. data/lib/new_relic/agent/configuration/mask_defaults.rb +4 -4
  52. data/lib/new_relic/agent/configuration/security_policy_source.rb +91 -78
  53. data/lib/new_relic/agent/configuration/server_source.rb +23 -21
  54. data/lib/new_relic/agent/configuration/yaml_source.rb +33 -9
  55. data/lib/new_relic/agent/configuration.rb +2 -2
  56. data/lib/new_relic/agent/connect/request_builder.rb +19 -19
  57. data/lib/new_relic/agent/connect/response_handler.rb +6 -9
  58. data/lib/new_relic/agent/custom_event_aggregator.rb +15 -15
  59. data/lib/new_relic/agent/database/explain_plan_helpers.rb +5 -6
  60. data/lib/new_relic/agent/database/obfuscation_helpers.rb +16 -15
  61. data/lib/new_relic/agent/database/obfuscator.rb +3 -3
  62. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +4 -4
  63. data/lib/new_relic/agent/database.rb +55 -50
  64. data/lib/new_relic/agent/database_adapter.rb +35 -0
  65. data/lib/new_relic/agent/datastores/metric_helper.rb +18 -19
  66. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +8 -7
  67. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +7 -11
  68. data/lib/new_relic/agent/datastores/mongo.rb +7 -12
  69. data/lib/new_relic/agent/datastores/nosql_obfuscator.rb +41 -0
  70. data/lib/new_relic/agent/datastores/redis.rb +6 -12
  71. data/lib/new_relic/agent/datastores.rb +12 -14
  72. data/lib/new_relic/agent/deprecator.rb +2 -2
  73. data/lib/new_relic/agent/{cross_app_payload.rb → distributed_tracing/cross_app_payload.rb} +13 -12
  74. data/lib/new_relic/agent/{cross_app_tracing.rb → distributed_tracing/cross_app_tracing.rb} +86 -64
  75. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +84 -0
  76. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +75 -0
  77. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +163 -0
  78. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +38 -0
  79. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +245 -0
  80. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +127 -0
  81. data/lib/new_relic/agent/distributed_tracing.rb +113 -32
  82. data/lib/new_relic/agent/encoding_normalizer.rb +5 -3
  83. data/lib/new_relic/agent/error_collector.rb +98 -62
  84. data/lib/new_relic/agent/error_event_aggregator.rb +9 -8
  85. data/lib/new_relic/agent/error_filter.rb +174 -0
  86. data/lib/new_relic/agent/error_trace_aggregator.rb +5 -4
  87. data/lib/new_relic/agent/event_aggregator.rb +23 -22
  88. data/lib/new_relic/agent/event_buffer.rb +8 -9
  89. data/lib/new_relic/agent/event_listener.rb +2 -3
  90. data/lib/new_relic/agent/event_loop.rb +26 -24
  91. data/lib/new_relic/agent/external.rb +19 -52
  92. data/lib/new_relic/agent/guid_generator.rb +5 -12
  93. data/lib/new_relic/agent/harvester.rb +5 -6
  94. data/lib/new_relic/agent/heap.rb +7 -9
  95. data/lib/new_relic/agent/hostname.rb +21 -8
  96. data/lib/new_relic/agent/http_clients/abstract.rb +81 -0
  97. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +26 -26
  98. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +31 -17
  99. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +18 -23
  100. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +12 -15
  101. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +24 -8
  102. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +9 -12
  103. data/lib/new_relic/agent/http_clients/uri_util.rb +12 -13
  104. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +12 -14
  105. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +43 -32
  106. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +21 -14
  107. data/lib/new_relic/agent/instrumentation/active_job.rb +15 -8
  108. data/lib/new_relic/agent/instrumentation/active_merchant.rb +21 -7
  109. data/lib/new_relic/agent/instrumentation/active_record.rb +89 -40
  110. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +82 -61
  111. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +32 -45
  112. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +36 -12
  113. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +34 -22
  114. data/lib/new_relic/agent/instrumentation/active_storage.rb +3 -3
  115. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +25 -18
  116. data/lib/new_relic/agent/instrumentation/active_support_logger/chain.rb +23 -0
  117. data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +20 -0
  118. data/lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb +12 -0
  119. data/lib/new_relic/agent/instrumentation/active_support_logger.rb +24 -0
  120. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +12 -3
  121. data/lib/new_relic/agent/instrumentation/authlogic.rb +11 -3
  122. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +45 -0
  123. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +150 -0
  124. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +35 -0
  125. data/lib/new_relic/agent/instrumentation/bunny.rb +14 -138
  126. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +69 -59
  127. data/lib/new_relic/agent/instrumentation/curb/chain.rb +91 -0
  128. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +221 -0
  129. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +61 -0
  130. data/lib/new_relic/agent/instrumentation/curb.rb +13 -198
  131. data/lib/new_relic/agent/instrumentation/data_mapper.rb +68 -55
  132. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +35 -0
  133. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +48 -0
  134. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +33 -0
  135. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +30 -52
  136. data/lib/new_relic/agent/instrumentation/elasticsearch/chain.rb +29 -0
  137. data/lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb +66 -0
  138. data/lib/new_relic/agent/instrumentation/elasticsearch/prepend.rb +13 -0
  139. data/lib/new_relic/agent/instrumentation/elasticsearch.rb +31 -0
  140. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +7 -6
  141. data/lib/new_relic/agent/instrumentation/excon.rb +24 -26
  142. data/lib/new_relic/agent/instrumentation/grape/chain.rb +24 -0
  143. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +100 -0
  144. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +17 -0
  145. data/lib/new_relic/agent/instrumentation/grape.rb +12 -118
  146. data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +97 -0
  147. data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +89 -0
  148. data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +111 -0
  149. data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +30 -0
  150. data/lib/new_relic/agent/instrumentation/grpc/helper.rb +32 -0
  151. data/lib/new_relic/agent/instrumentation/grpc/server/chain.rb +69 -0
  152. data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +134 -0
  153. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_desc_prepend.rb +35 -0
  154. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_server_prepend.rb +26 -0
  155. data/lib/new_relic/agent/instrumentation/grpc_client.rb +23 -0
  156. data/lib/new_relic/agent/instrumentation/grpc_server.rb +25 -0
  157. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +24 -0
  158. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +37 -0
  159. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +15 -0
  160. data/lib/new_relic/agent/instrumentation/httpclient.rb +12 -32
  161. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +22 -0
  162. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +30 -0
  163. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +15 -0
  164. data/lib/new_relic/agent/instrumentation/httprb.rb +29 -0
  165. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +5 -6
  166. data/lib/new_relic/agent/instrumentation/logger/chain.rb +21 -0
  167. data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +66 -0
  168. data/lib/new_relic/agent/instrumentation/logger/prepend.rb +13 -0
  169. data/lib/new_relic/agent/instrumentation/logger.rb +26 -0
  170. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +15 -0
  171. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +58 -125
  172. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +59 -0
  173. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +90 -0
  174. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +101 -0
  175. data/lib/new_relic/agent/instrumentation/memcache.rb +57 -71
  176. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +14 -13
  177. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +10 -10
  178. data/lib/new_relic/agent/instrumentation/mongo.rb +6 -131
  179. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +49 -13
  180. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +24 -0
  181. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +40 -0
  182. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +21 -0
  183. data/lib/new_relic/agent/instrumentation/net_http.rb +44 -0
  184. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +34 -9
  185. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +38 -0
  186. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +28 -0
  187. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +20 -0
  188. data/lib/new_relic/agent/instrumentation/padrino.rb +22 -58
  189. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +4 -4
  190. data/lib/new_relic/agent/instrumentation/queue_time.rb +9 -10
  191. data/lib/new_relic/agent/instrumentation/rack/chain.rb +66 -0
  192. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +33 -0
  193. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +75 -0
  194. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +43 -0
  195. data/lib/new_relic/agent/instrumentation/rack.rb +31 -139
  196. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +17 -53
  197. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +2 -2
  198. data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +6 -5
  199. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +4 -4
  200. data/lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb +4 -3
  201. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +14 -4
  202. data/lib/new_relic/agent/instrumentation/rake/chain.rb +20 -0
  203. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +149 -0
  204. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +14 -0
  205. data/lib/new_relic/agent/instrumentation/rake.rb +17 -157
  206. data/lib/new_relic/agent/instrumentation/redis/chain.rb +45 -0
  207. data/lib/new_relic/agent/instrumentation/redis/constants.rb +17 -0
  208. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +72 -0
  209. data/lib/new_relic/agent/instrumentation/redis/middleware.rb +16 -0
  210. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +29 -0
  211. data/lib/new_relic/agent/instrumentation/redis.rb +19 -102
  212. data/lib/new_relic/agent/instrumentation/resque/chain.rb +21 -0
  213. data/lib/new_relic/agent/instrumentation/resque/helper.rb +19 -0
  214. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +34 -0
  215. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +15 -0
  216. data/lib/new_relic/agent/instrumentation/resque.rb +29 -37
  217. data/lib/new_relic/agent/instrumentation/sequel.rb +15 -17
  218. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +3 -3
  219. data/lib/new_relic/agent/instrumentation/sidekiq/client.rb +20 -0
  220. data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delayed_class.rb +30 -0
  221. data/lib/new_relic/agent/instrumentation/sidekiq/server.rb +37 -0
  222. data/lib/new_relic/agent/instrumentation/sidekiq.rb +28 -45
  223. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +55 -0
  224. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +31 -37
  225. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +125 -0
  226. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +33 -0
  227. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +3 -3
  228. data/lib/new_relic/agent/instrumentation/sinatra.rb +35 -165
  229. data/lib/new_relic/agent/instrumentation/sunspot.rb +12 -4
  230. data/lib/new_relic/agent/instrumentation/thread/chain.rb +24 -0
  231. data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +28 -0
  232. data/lib/new_relic/agent/instrumentation/thread/prepend.rb +22 -0
  233. data/lib/new_relic/agent/instrumentation/thread.rb +20 -0
  234. data/lib/new_relic/agent/instrumentation/tilt/chain.rb +24 -0
  235. data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +41 -0
  236. data/lib/new_relic/agent/instrumentation/tilt/prepend.rb +13 -0
  237. data/lib/new_relic/agent/instrumentation/tilt.rb +25 -0
  238. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +22 -0
  239. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +80 -0
  240. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +14 -0
  241. data/lib/new_relic/agent/instrumentation/typhoeus.rb +14 -76
  242. data/lib/new_relic/agent/instrumentation.rb +2 -2
  243. data/lib/new_relic/agent/internal_agent_error.rb +3 -3
  244. data/lib/new_relic/agent/javascript_instrumentor.rb +48 -42
  245. data/lib/new_relic/agent/linking_metadata.rb +44 -0
  246. data/lib/new_relic/agent/local_log_decorator.rb +37 -0
  247. data/lib/new_relic/agent/log_event_aggregator.rb +235 -0
  248. data/lib/new_relic/agent/log_once.rb +2 -2
  249. data/lib/new_relic/agent/log_priority.rb +20 -0
  250. data/lib/new_relic/agent/logging.rb +39 -26
  251. data/lib/new_relic/agent/memory_logger.rb +3 -3
  252. data/lib/new_relic/agent/messaging.rb +70 -154
  253. data/lib/new_relic/agent/method_tracer.rb +152 -145
  254. data/lib/new_relic/agent/method_tracer_helpers.rb +87 -5
  255. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +118 -0
  256. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +28 -0
  257. data/lib/new_relic/agent/{inbound_request_monitor.rb → monitors/inbound_request_monitor.rb} +3 -4
  258. data/lib/new_relic/agent/{synthetics_monitor.rb → monitors/synthetics_monitor.rb} +8 -13
  259. data/lib/new_relic/agent/monitors.rb +26 -0
  260. data/lib/new_relic/agent/new_relic_service/encoders.rb +7 -7
  261. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +6 -6
  262. data/lib/new_relic/agent/new_relic_service/marshaller.rb +3 -3
  263. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +6 -5
  264. data/lib/new_relic/agent/new_relic_service.rb +258 -184
  265. data/lib/new_relic/agent/noticeable_error.rb +19 -0
  266. data/lib/new_relic/agent/null_logger.rb +8 -4
  267. data/lib/new_relic/agent/obfuscator.rb +9 -11
  268. data/lib/new_relic/agent/parameter_filtering.rb +25 -11
  269. data/lib/new_relic/agent/payload_metric_mapping.rb +10 -11
  270. data/lib/new_relic/agent/pipe_channel_manager.rb +28 -18
  271. data/lib/new_relic/agent/pipe_service.rb +9 -6
  272. data/lib/new_relic/agent/prepend_supportability.rb +3 -3
  273. data/lib/new_relic/agent/priority_sampled_buffer.rb +15 -15
  274. data/lib/new_relic/agent/range_extensions.rb +9 -29
  275. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +12 -12
  276. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +14 -14
  277. data/lib/new_relic/agent/rules_engine.rb +6 -5
  278. data/lib/new_relic/agent/sampler.rb +4 -5
  279. data/lib/new_relic/agent/sampler_collection.rb +4 -5
  280. data/lib/new_relic/agent/samplers/cpu_sampler.rb +4 -3
  281. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +13 -10
  282. data/lib/new_relic/agent/samplers/memory_sampler.rb +26 -15
  283. data/lib/new_relic/agent/samplers/object_sampler.rb +2 -2
  284. data/lib/new_relic/agent/samplers/vm_sampler.rb +22 -20
  285. data/lib/new_relic/agent/span_event_aggregator.rb +13 -13
  286. data/lib/new_relic/agent/span_event_primitive.rb +106 -68
  287. data/lib/new_relic/agent/sql_sampler.rb +22 -22
  288. data/lib/new_relic/agent/stats.rb +79 -42
  289. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +11 -13
  290. data/lib/new_relic/agent/stats_engine/stats_hash.rb +13 -14
  291. data/lib/new_relic/agent/stats_engine.rb +9 -9
  292. data/lib/new_relic/agent/synthetics_event_aggregator.rb +8 -9
  293. data/lib/new_relic/agent/system_info.rb +95 -66
  294. data/lib/new_relic/agent/threading/agent_thread.rb +19 -15
  295. data/lib/new_relic/agent/threading/backtrace_node.rb +13 -14
  296. data/lib/new_relic/agent/threading/backtrace_service.rb +15 -15
  297. data/lib/new_relic/agent/threading/thread_profile.rb +24 -24
  298. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +2 -2
  299. data/lib/new_relic/agent/tracer.rb +107 -101
  300. data/lib/new_relic/agent/transaction/abstract_segment.rb +128 -38
  301. data/lib/new_relic/agent/transaction/datastore_segment.rb +22 -18
  302. data/lib/new_relic/agent/transaction/distributed_tracer.rb +184 -0
  303. data/lib/new_relic/agent/transaction/distributed_tracing.rb +75 -84
  304. data/lib/new_relic/agent/transaction/external_request_segment.rb +66 -76
  305. data/lib/new_relic/agent/transaction/message_broker_segment.rb +34 -46
  306. data/lib/new_relic/agent/transaction/request_attributes.rb +36 -36
  307. data/lib/new_relic/agent/transaction/segment.rb +35 -11
  308. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +2 -4
  309. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +2 -2
  310. data/lib/new_relic/agent/transaction/trace.rb +18 -16
  311. data/lib/new_relic/agent/transaction/trace_builder.rb +11 -11
  312. data/lib/new_relic/agent/transaction/trace_context.rb +102 -93
  313. data/lib/new_relic/agent/transaction/trace_node.rb +26 -28
  314. data/lib/new_relic/agent/transaction/tracing.rb +15 -12
  315. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +5 -5
  316. data/lib/new_relic/agent/transaction.rb +210 -177
  317. data/lib/new_relic/agent/transaction_error_primitive.rb +32 -28
  318. data/lib/new_relic/agent/transaction_event_aggregator.rb +13 -13
  319. data/lib/new_relic/agent/transaction_event_primitive.rb +43 -47
  320. data/lib/new_relic/agent/transaction_event_recorder.rb +17 -16
  321. data/lib/new_relic/agent/transaction_metrics.rb +11 -10
  322. data/lib/new_relic/agent/transaction_sampler.rb +6 -7
  323. data/lib/new_relic/agent/transaction_time_aggregator.rb +27 -26
  324. data/lib/new_relic/agent/utilization/aws.rb +34 -4
  325. data/lib/new_relic/agent/utilization/azure.rb +4 -4
  326. data/lib/new_relic/agent/utilization/gcp.rb +8 -8
  327. data/lib/new_relic/agent/utilization/pcf.rb +6 -5
  328. data/lib/new_relic/agent/utilization/vendor.rb +44 -29
  329. data/lib/new_relic/agent/utilization_data.rb +8 -6
  330. data/lib/new_relic/agent/vm/jruby_vm.rb +2 -2
  331. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +3 -3
  332. data/lib/new_relic/agent/vm/mri_vm.rb +46 -19
  333. data/lib/new_relic/agent/vm/snapshot.rb +6 -6
  334. data/lib/new_relic/agent/vm.rb +2 -2
  335. data/lib/new_relic/agent/worker_loop.rb +11 -13
  336. data/lib/new_relic/agent.rb +78 -79
  337. data/lib/new_relic/cli/command.rb +21 -23
  338. data/lib/new_relic/cli/commands/deployments.rb +93 -44
  339. data/lib/new_relic/cli/commands/install.rb +15 -17
  340. data/lib/new_relic/coerce.rb +19 -15
  341. data/lib/new_relic/collection_helper.rb +51 -49
  342. data/lib/new_relic/constants.rb +39 -0
  343. data/lib/new_relic/control/class_methods.rb +4 -4
  344. data/lib/new_relic/control/frameworks/external.rb +3 -3
  345. data/lib/new_relic/control/frameworks/rails.rb +24 -18
  346. data/lib/new_relic/control/frameworks/rails3.rb +4 -5
  347. data/lib/new_relic/control/frameworks/rails4.rb +2 -2
  348. data/lib/new_relic/control/frameworks/rails_notifications.rb +2 -2
  349. data/lib/new_relic/control/frameworks/ruby.rb +4 -4
  350. data/lib/new_relic/control/frameworks/sinatra.rb +8 -2
  351. data/lib/new_relic/control/frameworks.rb +2 -2
  352. data/lib/new_relic/control/instance_methods.rb +24 -46
  353. data/lib/new_relic/control/instrumentation.rb +40 -12
  354. data/lib/new_relic/control/private_instance_methods.rb +48 -0
  355. data/lib/new_relic/control/server_methods.rb +4 -5
  356. data/lib/new_relic/control.rb +2 -3
  357. data/lib/new_relic/delayed_job_injection.rb +2 -2
  358. data/lib/new_relic/dependency_detection.rb +129 -18
  359. data/lib/new_relic/environment_report.rb +41 -35
  360. data/lib/new_relic/helper.rb +49 -8
  361. data/lib/new_relic/language_support.rb +30 -6
  362. data/lib/new_relic/latest_changes.rb +9 -8
  363. data/lib/new_relic/local_environment.rb +25 -19
  364. data/lib/new_relic/metric_data.rb +32 -27
  365. data/lib/new_relic/metric_spec.rb +9 -7
  366. data/lib/new_relic/noticed_error.rb +44 -35
  367. data/lib/new_relic/rack/agent_hooks.rb +2 -2
  368. data/lib/new_relic/rack/agent_middleware.rb +6 -4
  369. data/lib/new_relic/rack/browser_monitoring.rb +134 -119
  370. data/lib/new_relic/rack.rb +2 -2
  371. data/lib/new_relic/recipes/capistrano3.rb +4 -62
  372. data/lib/new_relic/recipes/capistrano_legacy.rb +24 -27
  373. data/lib/new_relic/recipes/helpers/send_deployment.rb +69 -0
  374. data/lib/new_relic/recipes.rb +2 -2
  375. data/lib/new_relic/supportability_helper.rb +21 -6
  376. data/lib/new_relic/traced_thread.rb +35 -0
  377. data/lib/new_relic/version.rb +7 -18
  378. data/lib/newrelic_rpm.rb +12 -36
  379. data/lib/sequel/extensions/newrelic_instrumentation.rb +13 -16
  380. data/lib/sequel/plugins/newrelic_instrumentation.rb +5 -11
  381. data/lib/tasks/all.rb +4 -4
  382. data/lib/tasks/config.rake +22 -117
  383. data/lib/tasks/coverage_report.rake +28 -0
  384. data/lib/tasks/helpers/config.html.erb +21 -0
  385. data/lib/tasks/{config.text.erb → helpers/config.text.erb} +0 -0
  386. data/lib/tasks/helpers/format.rb +123 -0
  387. data/lib/tasks/helpers/matches.rb +12 -0
  388. data/lib/tasks/helpers/prompt.rb +24 -0
  389. data/lib/tasks/helpers/removers.rb +33 -0
  390. data/lib/tasks/install.rake +4 -0
  391. data/lib/tasks/instrumentation_generator/README.md +63 -0
  392. data/lib/tasks/instrumentation_generator/TODO.md +33 -0
  393. data/lib/tasks/instrumentation_generator/instrumentation.thor +124 -0
  394. data/lib/tasks/instrumentation_generator/templates/Envfile.tt +9 -0
  395. data/lib/tasks/instrumentation_generator/templates/chain.tt +22 -0
  396. data/lib/tasks/instrumentation_generator/templates/chain_method.tt +8 -0
  397. data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +29 -0
  398. data/lib/tasks/instrumentation_generator/templates/instrumentation.tt +13 -0
  399. data/lib/tasks/instrumentation_generator/templates/instrumentation_method.tt +3 -0
  400. data/lib/tasks/instrumentation_generator/templates/newrelic.yml.tt +19 -0
  401. data/lib/tasks/instrumentation_generator/templates/prepend.tt +13 -0
  402. data/lib/tasks/instrumentation_generator/templates/prepend_method.tt +3 -0
  403. data/lib/tasks/instrumentation_generator/templates/test.tt +15 -0
  404. data/lib/tasks/multiverse.rake +4 -0
  405. data/lib/tasks/multiverse.rb +12 -5
  406. data/lib/tasks/newrelic.rb +2 -2
  407. data/lib/tasks/tests.rake +14 -14
  408. data/newrelic.yml +648 -3
  409. data/newrelic_rpm.gemspec +28 -25
  410. data/recipes/newrelic.rb +3 -3
  411. data/test/agent_helper.rb +332 -103
  412. metadata +192 -119
  413. data/.travis.yml +0 -210
  414. data/bin/mongrel_rpm +0 -33
  415. data/cert/cacert.pem +0 -1177
  416. data/lib/new_relic/agent/cross_app_monitor.rb +0 -110
  417. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +0 -44
  418. data/lib/new_relic/agent/datastores/mongo/statement_formatter.rb +0 -53
  419. data/lib/new_relic/agent/distributed_trace_intrinsics.rb +0 -90
  420. data/lib/new_relic/agent/distributed_trace_metrics.rb +0 -74
  421. data/lib/new_relic/agent/distributed_trace_monitor.rb +0 -30
  422. data/lib/new_relic/agent/distributed_trace_payload.rb +0 -175
  423. data/lib/new_relic/agent/distributed_trace_transport_type.rb +0 -43
  424. data/lib/new_relic/agent/http_clients/abstract_request.rb +0 -31
  425. data/lib/new_relic/agent/instrumentation/excon/connection.rb +0 -46
  426. data/lib/new_relic/agent/instrumentation/http.rb +0 -46
  427. data/lib/new_relic/agent/instrumentation/merb/controller.rb +0 -44
  428. data/lib/new_relic/agent/instrumentation/merb/errors.rb +0 -33
  429. data/lib/new_relic/agent/instrumentation/net.rb +0 -50
  430. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +0 -125
  431. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +0 -46
  432. data/lib/new_relic/agent/supported_versions.rb +0 -275
  433. data/lib/new_relic/agent/trace_context.rb +0 -244
  434. data/lib/new_relic/agent/trace_context_payload.rb +0 -134
  435. data/lib/new_relic/agent/trace_context_request_monitor.rb +0 -42
  436. data/lib/new_relic/build.rb +0 -2
  437. data/lib/new_relic/control/frameworks/merb.rb +0 -29
  438. data/lib/new_relic/metrics.rb +0 -13
  439. data/lib/tasks/config.html.erb +0 -32
  440. data/true +0 -0
@@ -1,20 +1,56 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
2
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
3
+ # frozen_string_literal: true
4
4
 
5
5
  require 'forwardable'
6
6
 
7
7
  module NewRelic
8
8
  module Agent
9
9
  module Configuration
10
-
11
10
  # Helper since default Procs are evaluated in the context of this module
12
11
  def self.value_of(key)
13
- Proc.new do
12
+ proc do
14
13
  NewRelic::Agent.config[key]
15
14
  end
16
15
  end
17
16
 
17
+ # Combines potentially two properties into one.
18
+ # Given the example:
19
+ # :disable_net_http and :prepend_net_instrumentation
20
+ # if :disable_net_http is true, then returned value is "disabled"
21
+ # if :prepend_net_instrumentation is false, then returned value is "chain"
22
+ # otherwise, "auto" is returned.
23
+ #
24
+ # Intent is:
25
+ # - if user sets disable_xxx property, then don't instrument
26
+ # - if user set prepend to `false` then we use method_alias chaining
27
+ # - auto, when returned means, try to use prepend unless conflicting gems discovered
28
+ #
29
+ def self.instrumentation_value_of(disable_key, prepend_key = nil)
30
+ proc do
31
+ if NewRelic::Agent.config[disable_key]
32
+ "disabled"
33
+ elsif prepend_key && !NewRelic::Agent.config[prepend_key]
34
+ "chain"
35
+ else
36
+ "auto"
37
+ end
38
+ end
39
+ end
40
+
41
+ def self.instrumentation_value_from_boolean(key)
42
+ proc do
43
+ NewRelic::Agent.config[key] ? 'auto' : 'disabled'
44
+ end
45
+ end
46
+
47
+ # Marks the config option as deprecated in the documentation once generated.
48
+ # Does not appear in logs.
49
+ def self.deprecated_description(new_setting, description)
50
+ link_ref = new_setting.to_s.tr(".", "-")
51
+ %{Please see: [#{new_setting}](docs/agents/ruby-agent/configuration/ruby-agent-configuration##{link_ref}). \n\n#{description}}
52
+ end
53
+
18
54
  class Boolean
19
55
  def self.===(o)
20
56
  TrueClass === o or FalseClass === o
@@ -45,26 +81,33 @@ module NewRelic
45
81
  end
46
82
 
47
83
  def self.config_search_paths
48
- Proc.new {
84
+ proc {
49
85
  paths = [
50
- File.join("config","newrelic.yml"),
51
- File.join("newrelic.yml")
86
+ File.join("config", "newrelic.yml"),
87
+ File.join("newrelic.yml"),
88
+ File.join("config", "newrelic.yml.erb"),
89
+ File.join("newrelic.yml.erb")
52
90
  ]
53
91
 
54
92
  if NewRelic::Control.instance.root
55
93
  paths << File.join(NewRelic::Control.instance.root, "config", "newrelic.yml")
56
94
  paths << File.join(NewRelic::Control.instance.root, "newrelic.yml")
95
+ paths << File.join(NewRelic::Control.instance.root, "config", "newrelic.yml.erb")
96
+ paths << File.join(NewRelic::Control.instance.root, "newrelic.yml.erb")
57
97
  end
58
98
 
59
- if ENV["HOME"]
60
- paths << File.join(ENV["HOME"], ".newrelic", "newrelic.yml")
61
- paths << File.join(ENV["HOME"], "newrelic.yml")
99
+ if ENV['HOME']
100
+ paths << File.join(ENV['HOME'], ".newrelic", "newrelic.yml")
101
+ paths << File.join(ENV['HOME'], "newrelic.yml")
102
+ paths << File.join(ENV['HOME'], ".newrelic", "newrelic.yml.erb")
103
+ paths << File.join(ENV['HOME'], "newrelic.yml.erb")
62
104
  end
63
105
 
64
106
  # If we're packaged for warbler, we can tell from GEM_HOME
65
107
  if ENV["GEM_HOME"] && ENV["GEM_HOME"].end_with?(".jar!")
66
108
  app_name = File.basename(ENV["GEM_HOME"], ".jar!")
67
109
  paths << File.join(ENV["GEM_HOME"], app_name, "config", "newrelic.yml")
110
+ paths << File.join(ENV["GEM_HOME"], app_name, "config", "newrelic.yml.erb")
68
111
  end
69
112
 
70
113
  paths
@@ -72,29 +115,27 @@ module NewRelic
72
115
  end
73
116
 
74
117
  def self.config_path
75
- Proc.new {
118
+ proc {
76
119
  found_path = NewRelic::Agent.config[:config_search_paths].detect do |file|
77
- File.expand_path(file) if File.exist? file
120
+ File.expand_path(file) if File.exist?(file)
78
121
  end
79
- found_path || ""
122
+ found_path || NewRelic::EMPTY_STR
80
123
  }
81
124
  end
82
125
 
83
126
  def self.framework
84
- Proc.new {
127
+ proc {
85
128
  case
86
129
  when defined?(::NewRelic::TEST) then :test
87
- when defined?(::Merb) && defined?(::Merb::Plugins) then :merb
88
130
  when defined?(::Rails::VERSION)
89
131
  case Rails::VERSION::MAJOR
90
- when 0..2
91
- :rails
92
132
  when 3
93
133
  :rails3
94
- when 4..6
134
+ when 4..7
95
135
  :rails_notifications
96
136
  else
97
- ::NewRelic::Agent.logger.error "Detected unsupported Rails version #{Rails::VERSION::STRING}"
137
+ ::NewRelic::Agent.logger.warn("Detected untested Rails version #{Rails::VERSION::STRING}")
138
+ :rails_notifications
98
139
  end
99
140
  when defined?(::Sinatra) && defined?(::Sinatra::Base) then :sinatra
100
141
  when defined?(::NewRelic::IA) then :external
@@ -104,19 +145,19 @@ module NewRelic
104
145
  end
105
146
 
106
147
  def self.agent_enabled
107
- Proc.new {
148
+ proc {
108
149
  NewRelic::Agent.config[:enabled] &&
109
- (NewRelic::Agent.config[:test_mode] || NewRelic::Agent.config[:monitor_mode]) &&
110
- NewRelic::Agent::Autostart.agent_should_start?
150
+ (NewRelic::Agent.config[:test_mode] || NewRelic::Agent.config[:monitor_mode]) &&
151
+ NewRelic::Agent::Autostart.agent_should_start?
111
152
  }
112
153
  end
113
154
 
114
155
  DEFAULT_LOG_DIR = 'log/'.freeze
115
156
 
116
157
  def self.audit_log_path
117
- Proc.new {
158
+ proc {
118
159
  log_file_path = NewRelic::Agent.config[:log_file_path]
119
- wants_stdout = (log_file_path.upcase == 'STDOUT')
160
+ wants_stdout = (log_file_path.casecmp(NewRelic::STANDARD_OUT) == 0)
120
161
  audit_log_dir = wants_stdout ? DEFAULT_LOG_DIR : log_file_path
121
162
 
122
163
  File.join(audit_log_dir, 'newrelic_audit.log')
@@ -124,30 +165,30 @@ module NewRelic
124
165
  end
125
166
 
126
167
  def self.app_name
127
- Proc.new { NewRelic::Control.instance.env }
168
+ proc { NewRelic::Control.instance.env }
128
169
  end
129
170
 
130
171
  def self.dispatcher
131
- Proc.new { NewRelic::Control.instance.local_env.discovered_dispatcher }
172
+ proc { NewRelic::Control.instance.local_env.discovered_dispatcher }
132
173
  end
133
174
 
134
175
  def self.thread_profiler_enabled
135
- Proc.new { NewRelic::Agent::Threading::BacktraceService.is_supported? }
176
+ proc { NewRelic::Agent::Threading::BacktraceService.is_supported? }
136
177
  end
137
178
 
138
179
  # This check supports the js_errors_beta key we've asked clients to
139
180
  # set. Once JS errors are GA, browser_monitoring.loader can stop
140
181
  # being dynamic.
141
182
  def self.browser_monitoring_loader
142
- Proc.new { NewRelic::Agent.config[:js_errors_beta] ? "full" : "rum"}
183
+ proc { NewRelic::Agent.config[:js_errors_beta] ? "full" : "rum" }
143
184
  end
144
185
 
145
186
  def self.transaction_tracer_transaction_threshold
146
- Proc.new { NewRelic::Agent.config[:apdex_t] * 4 }
187
+ proc { NewRelic::Agent.config[:apdex_t] * 4 }
147
188
  end
148
189
 
149
190
  def self.profiling_available
150
- Proc.new {
191
+ proc {
151
192
  begin
152
193
  require 'ruby-prof'
153
194
  true
@@ -158,7 +199,7 @@ module NewRelic
158
199
  end
159
200
 
160
201
  def self.host
161
- Proc.new do
202
+ proc do
162
203
  regex = /\A(?<identifier>.+?)x/
163
204
  if matches = regex.match(String(NewRelic::Agent.config[:license_key]))
164
205
  "collector.#{matches['identifier']}.nr-data.net"
@@ -169,12 +210,16 @@ module NewRelic
169
210
  end
170
211
 
171
212
  def self.api_host
172
- Proc.new do
173
- if String(NewRelic::Agent.config[:license_key]).start_with? 'eu'
174
- 'rpm.eu.newrelic.com'
213
+ # only used for deployment task
214
+ proc do
215
+ api_version = if NewRelic::Agent.config[:api_key].nil? || NewRelic::Agent.config[:api_key].empty?
216
+ "rpm"
175
217
  else
176
- 'rpm.newrelic.com'
218
+ "api"
177
219
  end
220
+ api_region = "eu." if String(NewRelic::Agent.config[:license_key]).start_with?('eu')
221
+
222
+ "#{api_version}.#{api_region}newrelic.com"
178
223
  end
179
224
  end
180
225
 
@@ -197,30 +242,28 @@ module NewRelic
197
242
  end
198
243
 
199
244
  SEMICOLON = ';'.freeze
200
- def self.convert_to_list_on_semicolon value
245
+ def self.convert_to_list_on_semicolon(value)
201
246
  case value
202
247
  when Array then value
203
248
  when String then value.split(SEMICOLON)
204
- else []
249
+ else NewRelic::EMPTY_ARRAY
205
250
  end
206
251
  end
207
252
 
208
253
  def self.convert_to_constant_list(raw_value)
209
- const_names = convert_to_list(raw_value)
210
- const_names.map! do |class_name|
211
- const = ::NewRelic::LanguageSupport.constantize(class_name)
212
-
213
- unless const
214
- NewRelic::Agent.logger.warn("Ignoring unrecognized constant '#{class_name}' in #{raw_value}")
215
- end
254
+ return NewRelic::EMPTY_ARRAY if raw_value.nil? || raw_value.empty?
216
255
 
256
+ constants = convert_to_list(raw_value).map! do |class_name|
257
+ const = ::NewRelic::LanguageSupport.constantize(class_name)
258
+ NewRelic::Agent.logger.warn("Ignoring invalid constant '#{class_name}' in #{raw_value}") unless const
217
259
  const
218
260
  end
219
- const_names.compact
261
+ constants.compact!
262
+ constants
220
263
  end
221
264
 
222
265
  def self.enforce_fallback(allowed_values: nil, fallback: nil)
223
- Proc.new do |configured_value|
266
+ proc do |configured_value|
224
267
  if allowed_values.any? { |v| v =~ /#{configured_value}/i }
225
268
  configured_value
226
269
  else
@@ -283,27 +326,14 @@ module NewRelic
283
326
  ].join(',').freeze
284
327
 
285
328
  DEFAULTS = {
286
- :license_key => {
287
- :default => '',
288
- :public => true,
289
- :type => String,
290
- :allowed_from_server => false,
291
- :description => 'Your New Relic <a href="https://docs.newrelic.com/docs/accounts-partnerships/accounts/account-setup/license-key">license key</a>.'
292
- },
329
+ # Critical
293
330
  :agent_enabled => {
294
331
  :default => DefaultSource.agent_enabled,
332
+ :documentation_default => true,
295
333
  :public => true,
296
334
  :type => Boolean,
297
335
  :allowed_from_server => false,
298
- :description => 'If <code>true</code>, allows the Ruby agent to run.'
299
- },
300
- :enabled => {
301
- :default => true,
302
- :public => false,
303
- :type => Boolean,
304
- :aliases => [:enable],
305
- :allowed_from_server => false,
306
- :description => 'Enable or disable the agent.'
336
+ :description => 'If `true`, allows the Ruby agent to run.'
307
337
  },
308
338
  :app_name => {
309
339
  :default => DefaultSource.app_name,
@@ -311,91 +341,79 @@ module NewRelic
311
341
  :type => String,
312
342
  :allowed_from_server => false,
313
343
  :transform => DefaultSource.method(:convert_to_list_on_semicolon),
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>.'
344
+ :description => 'Specify the [application name](/docs/apm/new-relic-apm/installation-configuration/name-your-application) used to aggregate data in the New Relic UI. To report data to [multiple apps at the same time](/docs/apm/new-relic-apm/installation-configuration/using-multiple-names-app), specify a list of names separated by a semicolon `;`. For example, `MyApp` or `MyStagingApp;Instance1`.'
315
345
  },
316
- :entity_guid => {
317
- :default => nil,
318
- :allow_nil => true,
346
+ :license_key => {
347
+ :default => '',
319
348
  :public => true,
320
349
  :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
- },
324
- :monitor_mode => {
325
- :default => value_of(:enabled),
326
- :public => true,
327
- :type => Boolean,
328
- :allowed_from_server => false,
329
- :description => 'When <code>true</code>, the agent transmits data about your app to the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>.'
330
- },
331
- :test_mode => {
332
- :default => false,
333
- :public => false,
334
- :type => Boolean,
335
350
  :allowed_from_server => false,
336
- :description => 'Used in tests for agent to start up but not connect to collector. Formerly used <code>developer_mode</code> in test config for this purpose.'
351
+ :description => 'Your New Relic [license key](/docs/apis/intro-apis/new-relic-api-keys/#ingest-license-key).'
337
352
  },
338
353
  :log_level => {
339
354
  :default => 'info',
340
355
  :public => true,
341
356
  :type => String,
342
357
  :allowed_from_server => false,
343
- :description => 'Sets the level of detail of log messages. Possible log levels, in increasing verbosity, are: <code>error</code>, <code>warn</code>, <code>info</code> or <code>debug</code>.'
358
+ :description => 'Sets the level of detail of log messages. Possible log levels, in increasing verbosity, are: `error`, `warn`, `info` or `debug`.'
344
359
  },
345
- :high_security => {
346
- :default => false,
360
+ # General
361
+ :apdex_t => {
362
+ :default => 0.5,
347
363
  :public => true,
348
- :type => Boolean,
349
- :allowed_from_server => false,
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.'
364
+ :type => Float,
365
+ :allowed_from_server => true,
366
+ :deprecated => true,
367
+ :description => 'For agent versions 3.5.0 or higher, [set your Apdex T via the New Relic UI](/docs/apm/new-relic-apm/apdex/changing-your-apdex-settings).'
351
368
  },
352
- :security_policies_token => {
369
+ :api_key => {
353
370
  :default => '',
354
371
  :public => true,
355
372
  :type => String,
356
373
  :allowed_from_server => false,
357
- :description => 'Applies Language Agent Security Policy settings.'
358
- },
359
- :proxy_host => {
360
- :default => nil,
361
- :allow_nil => true,
362
- :public => true,
363
- :type => String,
364
- :allowed_from_server => false,
365
- :description => 'Defines a host for communicating with the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a> via a proxy server.'
374
+ :description => 'Your New Relic API key. Required when using the New Relic REST API v2 to record deployments using the `newrelic deployments` command.'
366
375
  },
367
- :proxy_port => {
368
- :default => 8080,
369
- :allow_nil => true,
376
+ :backport_fast_active_record_connection_lookup => {
377
+ :default => false,
370
378
  :public => true,
371
- :type => Integer,
379
+ :type => Boolean,
372
380
  :allowed_from_server => false,
373
- :description => 'Defines a port for communicating with the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a> via a proxy server.'
381
+ :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.'
374
382
  },
375
- :proxy_user => {
383
+ :ca_bundle_path => {
376
384
  :default => nil,
377
385
  :allow_nil => true,
378
386
  :public => true,
379
387
  :type => String,
380
388
  :allowed_from_server => false,
381
- :exclude_from_reported_settings => true,
382
- :description => 'Defines a user for communicating with the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a> via a proxy server.'
389
+ :description => "Manual override for the path to your local CA bundle. This CA bundle will be used to validate the SSL certificate presented by New Relic's data collection service."
383
390
  },
384
- :proxy_pass => {
385
- :default => nil,
386
- :allow_nil => true,
391
+ :capture_memcache_keys => {
392
+ :default => false,
387
393
  :public => true,
388
- :type => String,
389
- :allowed_from_server => false,
390
- :exclude_from_reported_settings => true,
391
- :description => 'Defines a password for communicating with the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a> via a proxy server.'
394
+ :type => Boolean,
395
+ :allowed_from_server => true,
396
+ :description => 'Enable or disable the capture of memcache keys from transaction traces.'
392
397
  },
393
398
  :capture_params => {
394
399
  :default => false,
395
400
  :public => true,
396
401
  :type => Boolean,
397
402
  :allowed_from_server => false,
398
- :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>.'
403
+ :description => <<-DESCRIPTION
404
+ When `true`, the agent captures HTTP request parameters and attaches them to transaction traces, traced errors, and [`TransactionError` events](/attribute-dictionary?attribute_name=&events_tids%5B%5D=8241).
405
+
406
+ <Callout variant="caution">
407
+ When using the `capture_params` setting, the Ruby agent will not attempt to filter secret information. <b>Recommendation:</b> To filter secret information from request parameters, use the [`attributes.include` setting](/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby) instead. For more information, see the <a href="/docs/agents/ruby-agent/attributes/ruby-attribute-examples#ex_req_params">Ruby attribute examples</a>.
408
+ </Callout>
409
+ DESCRIPTION
410
+ },
411
+ :'clear_transaction_state_after_fork' => {
412
+ :default => false,
413
+ :public => true,
414
+ :type => Boolean,
415
+ :allowed_from_server => false,
416
+ :description => 'If `true`, the agent will clear `Tracer::State` in `Agent.drop_buffered_data`.'
399
417
  },
400
418
  :config_path => {
401
419
  :default => DefaultSource.config_path,
@@ -404,1474 +422,1960 @@ module NewRelic
404
422
  :allowed_from_server => false,
405
423
  :description => 'Path to <b>newrelic.yml</b>. If undefined, the agent checks the following directories (in order): <b>config/newrelic.yml</b>, <b>newrelic.yml</b>, <b>$HOME/.newrelic/newrelic.yml</b> and <b>$HOME/newrelic.yml</b>.'
406
424
  },
407
- :config_search_paths => {
408
- :default => DefaultSource.config_search_paths,
409
- :public => false,
410
- :type => Array,
411
- :allowed_from_server => false,
412
- :description => "An array of candidate locations for the agent\'s configuration file."
413
- },
414
- :dispatcher => {
415
- :default => DefaultSource.dispatcher,
416
- :public => false,
417
- :type => Symbol,
418
- :allowed_from_server => false,
419
- :description => 'Autodetected application component that reports metrics to New Relic.'
420
- },
421
- :framework => {
422
- :default => DefaultSource.framework,
423
- :public => false,
424
- :type => Symbol,
425
- :allowed_from_server => false,
426
- :description => 'Autodetected application framework used to enable framework-specific functionality.'
425
+ :'exclude_newrelic_header' => {
426
+ :default => false,
427
+ :public => true,
428
+ :type => Boolean,
429
+ :allowed_from_server => true,
430
+ :description => "Allows newrelic distributed tracing headers to be suppressed on outbound requests."
427
431
  },
428
- :'autostart.blacklisted_constants' => {
429
- :default => 'Rails::Console',
432
+ :force_install_exit_handler => {
433
+ :default => false,
430
434
  :public => true,
431
- :type => String,
435
+ :type => Boolean,
432
436
  :allowed_from_server => false,
433
- :description => 'Deprecated. ' \
434
- 'For agent versions 6.8.0 or higher, ' \
435
- 'use <a href="#autostart-denylisted_constants"><code>' \
436
- 'autostart.denylisted_constants' \
437
- '</code></a> instead.'
437
+ :description => 'Forces the exit handler that sends all cached data to collector ' \
438
+ 'before shutting down to be installed regardless of detecting scenarios where it generally should not be. ' \
439
+ 'Known use-case for this option is where Sinatra is running as an embedded service within another framework ' \
440
+ 'and the agent is detecting the Sinatra app and skipping the `at_exit` handler as a result. Sinatra classically ' \
441
+ 'runs the entire application in an `at_exit` block and would otherwise misbehave if the Agent\'s `at_exit` handler ' \
442
+ 'was also installed in those circumstances. Note: `send_data_on_exit` should also be set to `true` in tandem with this setting.'
438
443
  },
439
- :'autostart.denylisted_constants' => {
440
- :default => 'Rails::Console',
444
+ :high_security => {
445
+ :default => false,
441
446
  :public => true,
442
- :type => String,
447
+ :type => Boolean,
443
448
  :allowed_from_server => false,
444
- :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>.'
449
+ :description => 'If `true`, enables [high security mode](/docs/accounts-partnerships/accounts/security/high-security). Ensure you understand the implications of high security mode before enabling this setting.'
445
450
  },
446
- :'autostart.blacklisted_executables' => {
447
- :default => 'irb,rspec',
451
+ :labels => {
452
+ :default => '',
448
453
  :public => true,
449
454
  :type => String,
450
455
  :allowed_from_server => false,
451
- :description => 'Deprecated. ' \
452
- 'For agent versions 6.8.0 or higher, ' \
453
- 'use <a href="#autostart-denylisted_executables"><code>' \
454
- 'autostart.denylisted_executables' \
455
- '</code></a> instead.'
456
+ :description => 'A dictionary of [label names](/docs/data-analysis/user-interface-functions/labels-categories-organize-your-apps-servers) and values that will be applied to the data sent from this agent. May also be expressed as a semicolon-delimited `;` string of colon-separated `:` pairs. For example, `<var>Server</var>:<var>One</var>;<var>Data Center</var>:<var>Primary</var>`.'
456
457
  },
457
- :'autostart.denylisted_executables' => {
458
- :default => value_of(:'autostart.blacklisted_executables'),
458
+ :log_file_name => {
459
+ :default => 'newrelic_agent.log',
459
460
  :public => true,
460
461
  :type => String,
461
462
  :allowed_from_server => false,
462
- :description => 'Defines a comma-delimited list of executables that the agent should not instrument. For example, <code>rake,my_ruby_script.rb</code>.'
463
+ :description => 'Defines a name for the log file.'
463
464
  },
464
- :'autostart.blacklisted_rake_tasks' => {
465
- :default => AUTOSTART_DENYLISTED_RAKE_TASKS,
465
+ :log_file_path => {
466
+ :default => DefaultSource::DEFAULT_LOG_DIR,
466
467
  :public => true,
467
468
  :type => String,
468
469
  :allowed_from_server => false,
469
- :description => 'Deprecated. ' \
470
- 'For agent versions 6.8.0 or higher, ' \
471
- 'use <a href="#autostart-denylisted_rake_tasks"><code>' \
472
- 'autostart.denylisted_rake_tasks' \
473
- '</code></a> instead.'
470
+ :description => 'Defines a path to the agent log file, excluding the filename.'
474
471
  },
475
- :'autostart.denylisted_rake_tasks' => {
476
- :default => value_of(:'autostart.blacklisted_rake_tasks'),
472
+ :marshaller => {
473
+ :default => 'json',
477
474
  :public => true,
478
475
  :type => String,
479
476
  :allowed_from_server => false,
480
- :description => 'Defines a comma-delimited list of Rake tasks that the agent should not instrument. For example, <code>assets:precompile,db:migrate</code>.'
477
+ :description => 'Specifies a marshaller for transmitting data to the New Relic [collector](/docs/apm/new-relic-apm/getting-started/glossary#collector). Currently `json` is the only valid value for this setting.'
481
478
  },
482
- :disable_rake => {
483
- :default => false,
479
+ :monitor_mode => {
480
+ :default => value_of(:enabled),
481
+ :documentation_default => true,
484
482
  :public => true,
485
483
  :type => Boolean,
486
484
  :allowed_from_server => false,
487
- :description => 'If <code>true</code>, disables Rake instrumentation.'
485
+ :description => 'When `true`, the agent transmits data about your app to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector).'
488
486
  },
489
- :disable_rake_instrumentation => {
487
+ :prepend_active_record_instrumentation => {
490
488
  :default => false,
491
- :public => false,
489
+ :public => true,
492
490
  :type => Boolean,
493
491
  :allowed_from_server => false,
494
- :description => 'Enable or disable Rake instrumentation. Preferred key is `disable_rake`'
492
+ :description => 'If `true`, uses `Module#prepend` rather than `alias_method` for ActiveRecord instrumentation.'
495
493
  },
496
- :'rake.tasks' => {
497
- :default => [],
494
+ :proxy_host => {
495
+ :default => nil,
496
+ :allow_nil => true,
498
497
  :public => true,
499
- :type => Array,
498
+ :type => String,
500
499
  :allowed_from_server => false,
501
- :transform => DefaultSource.method(:convert_to_regexp_list),
502
- :description => 'Specify an array of Rake tasks to automatically instrument.'
500
+ :description => 'Defines a host for communicating with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) via a proxy server.'
503
501
  },
504
- :'rake.connect_timeout' => {
505
- :default => 10,
502
+ :proxy_pass => {
503
+ :default => nil,
504
+ :allow_nil => true,
506
505
  :public => true,
507
- :type => Integer,
506
+ :type => String,
508
507
  :allowed_from_server => false,
509
- :description => 'Timeout for waiting on connect to complete before a rake task'
510
- },
511
- :apdex_t => {
512
- :default => 0.5,
513
- :public => true,
514
- :type => Float,
515
- :allowed_from_server => true,
516
- :deprecated => true,
517
- :description => 'Deprecated. For agent versions 3.5.0 or higher, <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/apdex/changing-your-apdex-settings">set your Apdex T via the New Relic UI</a>.'
508
+ :exclude_from_reported_settings => true,
509
+ :description => 'Defines a password for communicating with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) via a proxy server.'
518
510
  },
519
- :'strip_exception_messages.enabled' => {
520
- :default => value_of(:high_security),
511
+ :proxy_port => {
512
+ :default => 8080,
513
+ :allow_nil => true,
521
514
  :public => true,
522
- :type => Boolean,
515
+ :type => Integer,
523
516
  :allowed_from_server => false,
524
- :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>.'
517
+ :description => 'Defines a port for communicating with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) via a proxy server.'
525
518
  },
526
- :'strip_exception_messages.whitelist' => {
527
- :default => '',
519
+ :proxy_user => {
520
+ :default => nil,
521
+ :allow_nil => true,
528
522
  :public => true,
529
523
  :type => String,
530
- :deprecated => true,
531
524
  :allowed_from_server => false,
532
- :transform => DefaultSource.method(:convert_to_constant_list),
533
- :description => 'Deprecated. ' \
534
- 'For agent versions 6.8.0 or higher, ' \
535
- 'use <a href="#strip_exception_messages-allowlist"><code>' \
536
- 'strip_exception_messages.allowed_classes' \
537
- '</code></a> instead.'
525
+ :exclude_from_reported_settings => true,
526
+ :description => 'Defines a user for communicating with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) via a proxy server.'
538
527
  },
539
- :'strip_exception_messages.allowed_classes' => {
528
+ :security_policies_token => {
540
529
  :default => '',
541
530
  :public => true,
542
531
  :type => String,
543
- :deprecated => true,
544
532
  :allowed_from_server => false,
545
- :transform => DefaultSource.method(:convert_to_constant_list),
546
- :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>.'
533
+ :description => 'Applies Language Agent Security Policy settings.'
547
534
  },
548
- :host => {
549
- :default => DefaultSource.host,
550
- :public => false,
551
- :type => String,
535
+ :send_data_on_exit => {
536
+ :default => true,
537
+ :public => true,
538
+ :type => Boolean,
552
539
  :allowed_from_server => false,
553
- :description => "URI for the New Relic data collection service."
540
+ :description => 'If `true`, enables the exit handler that sends data to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) before shutting down.'
554
541
  },
555
- :api_host => {
556
- :default => DefaultSource.api_host,
557
- :public => false,
558
- :type => String,
542
+ :sync_startup => {
543
+ :default => false,
544
+ :public => true,
545
+ :type => Boolean,
559
546
  :allowed_from_server => false,
560
- :description => 'API host for New Relic.'
547
+ :description => 'When set to `true`, forces a synchronous connection to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) during application startup. For very short-lived processes, this helps ensure the New Relic agent has time to report.'
561
548
  },
562
- :port => {
563
- :default => 443,
564
- :public => false,
549
+ :timeout => {
550
+ :default => 2 * 60, # 2 minutes
551
+ :public => true,
565
552
  :type => Integer,
566
553
  :allowed_from_server => false,
567
- :description => 'Port for the New Relic data collection service.'
554
+ :description => 'Defines the maximum number of seconds the agent should spend attempting to connect to the collector.'
568
555
  },
569
- :api_port => {
570
- :default => value_of(:port),
571
- :public => false,
572
- :type => Integer,
556
+ # Transaction tracer
557
+ :'transaction_tracer.capture_attributes' => {
558
+ :default => true,
559
+ :public => true,
560
+ :type => Boolean,
561
+ :deprecated => true,
573
562
  :allowed_from_server => false,
574
- :description => 'Port for the New Relic API host.'
563
+ :description => 'Use [`transaction_tracer.attributes.enabled`](#transaction_tracer-attributes-enabled) instead.'
575
564
  },
576
- :sync_startup => {
577
- :default => false,
565
+ :'transaction_tracer.enabled' => {
566
+ :default => true,
578
567
  :public => true,
579
568
  :type => Boolean,
580
- :allowed_from_server => false,
581
- :description => 'When set to <code>true</code>, forces a synchronous connection to the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a> during application startup. For very short-lived processes, this helps ensure the New Relic agent has time to report.'
569
+ :allowed_from_server => true,
570
+ :description => 'If `true`, enables collection of [transaction traces](/docs/apm/traces/transaction-traces/transaction-traces).'
582
571
  },
583
- :send_data_on_exit => {
572
+ :'transaction_tracer.explain_enabled' => {
584
573
  :default => true,
585
574
  :public => true,
586
575
  :type => Boolean,
587
- :allowed_from_server => false,
588
- :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.'
576
+ :allowed_from_server => true,
577
+ :description => 'If `true`, enables the collection of explain plans in transaction traces. This setting will also apply to explain plans in slow SQL traces if [`slow_sql.explain_enabled`](#slow_sql-explain_enabled) is not set separately.'
589
578
  },
590
- :max_payload_size_in_bytes => {
591
- :default => 1000000,
592
- :public => false,
579
+ :'transaction_tracer.explain_threshold' => {
580
+ :default => 0.5,
581
+ :public => true,
582
+ :type => Float,
583
+ :allowed_from_server => true,
584
+ :description => 'Threshold (in seconds) above which the agent will collect explain plans. Relevant only when [`explain_enabled`](#transaction_tracer.explain_enabled) is true.'
585
+ },
586
+ :'transaction_tracer.limit_segments' => {
587
+ :default => 4000,
588
+ :public => true,
593
589
  :type => Integer,
594
590
  :allowed_from_server => true,
595
- :description => 'Maximum number of bytes to send to the New Relic data collection service.'
591
+ :description => 'Maximum number of transaction trace nodes to record in a single transaction trace.'
596
592
  },
597
- :put_for_data_send => {
593
+ :'transaction_tracer.record_redis_arguments' => {
598
594
  :default => false,
599
- :public => false,
595
+ :public => true,
600
596
  :type => Boolean,
601
597
  :allowed_from_server => false,
602
- :description => 'Use HTTP PUT requests instead of POST.'
598
+ :description => 'If `true`, the agent records Redis command arguments in transaction traces.'
603
599
  },
604
- :compressed_content_encoding => {
605
- :default => 'gzip',
606
- :public => false,
600
+ :'transaction_tracer.record_sql' => {
601
+ :default => 'obfuscated',
602
+ :public => true,
607
603
  :type => String,
608
- :allowed_from_server => false,
609
- :description => 'Encoding to use if data needs to be compressed. The options are deflate and gzip.'
604
+ :allowed_from_server => true,
605
+ :description => 'Obfuscation level for SQL queries reported in transaction trace nodes.
606
+
607
+ By default, this is set to `obfuscated`, which strips out the numeric and string literals.
608
+
609
+ - If you do not want the agent to capture query information, set this to `none`.
610
+ - If you want the agent to capture all query information in its original form, set this to `raw`.
611
+ - When you enable [high security mode](/docs/agents/manage-apm-agents/configuration/high-security-mode), this is automatically set to `obfuscated`.
612
+ '
610
613
  },
611
- :simple_compression => {
612
- :default => false,
613
- :public => false,
614
- :type => Boolean,
615
- :allowed_from_server => false,
616
- :description => 'When enabled the agent will compress payloads destined for the collector, but will not pre-compress parts of the payload.'
614
+
615
+ :'transaction_tracer.stack_trace_threshold' => {
616
+ :default => 0.5,
617
+ :public => true,
618
+ :type => Float,
619
+ :allowed_from_server => true,
620
+ :description => 'Specify a threshold in seconds. The agent includes stack traces in transaction trace nodes when the stack trace duration exceeds this threshold.'
617
621
  },
618
- :timeout => {
619
- :default => 2 * 60, # 2 minutes
622
+ :'transaction_tracer.transaction_threshold' => {
623
+ :default => DefaultSource.transaction_tracer_transaction_threshold,
620
624
  :public => true,
621
- :type => Integer,
622
- :allowed_from_server => false,
623
- :description => 'Defines the maximum number of seconds the agent should spend attempting to connect to the collector.'
625
+ :type => Float,
626
+ :allowed_from_server => true,
627
+ :description => 'Specify a threshold in seconds. Transactions with a duration longer than this threshold are eligible for transaction traces. Specify a float value or the string `apdex_f`.'
624
628
  },
625
- :send_environment_info => {
629
+ # Error collector
630
+ :'error_collector.capture_attributes' => {
626
631
  :default => true,
627
- :public => false,
632
+ :public => true,
628
633
  :type => Boolean,
634
+ :deprecated => true,
629
635
  :allowed_from_server => false,
630
- :description => 'Enable or disable transmission of application environment information to the New Relic data collection service.'
636
+ :description => 'Use [`error_collector.attributes.enabled`](#error_collector-attributes-enabled) instead.'
631
637
  },
632
- :data_report_period => {
633
- :default => 60,
634
- :public => false,
635
- :type => Integer,
638
+ :'error_collector.ignore_classes' => {
639
+ :default => [],
640
+ :public => true,
641
+ :type => Array,
636
642
  :allowed_from_server => true,
637
- :description => 'Number of seconds betwixt connections to the New Relic data collection service.'
643
+ :dynamic_name => true,
644
+ :description => <<-DESCRIPTION
645
+ A list of error classes that the agent should ignore.
646
+
647
+ <Callout variant="caution">
648
+ This option can't be set via environment variable.
649
+ </Callout>
650
+ DESCRIPTION
638
651
  },
639
- :event_report_period => {
640
- :default => 60,
641
- :public => false,
642
- :type => Integer,
652
+ :'error_collector.capture_events' => {
653
+ :default => value_of(:'error_collector.enabled'),
654
+ :documentation_default => true,
655
+ :public => true,
656
+ :type => Boolean,
643
657
  :allowed_from_server => true,
644
- :description => 'Number of seconds betwixt connections to the New Relic event collection services.'
645
- },
646
- :'event_report_period.analytic_event_data' => {
647
- :default => 60,
648
- :public => false,
649
- :type => Integer,
650
658
  :dynamic_name => true,
659
+ :description => 'If `true`, the agent collects [TransactionError events](/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights).'
660
+ },
661
+ :'error_collector.enabled' => {
662
+ :default => true,
663
+ :public => true,
664
+ :type => Boolean,
651
665
  :allowed_from_server => true,
652
- :description => 'Number of seconds betwixt connections to the New Relic analytic event collection services.'
666
+ :description => 'If `true`, the agent captures traced errors and error count metrics.'
653
667
  },
654
- :'event_report_period.custom_event_data' => {
655
- :default => 60,
656
- :public => false,
657
- :type => Integer,
668
+ :'error_collector.expected_classes' => {
669
+ :default => [],
670
+ :public => true,
671
+ :type => Array,
672
+ :allowed_from_server => true,
658
673
  :dynamic_name => true,
674
+ :description => <<-DESCRIPTION
675
+ A list of error classes that the agent should treat as expected.
676
+
677
+ <Callout variant="caution">
678
+ This option can't be set via environment variable.
679
+ </Callout>
680
+ DESCRIPTION
681
+ },
682
+ :'error_collector.expected_messages' => {
683
+ :default => {},
684
+ :public => true,
685
+ :type => Hash,
659
686
  :allowed_from_server => true,
660
- :description => 'Number of seconds betwixt connections to the New Relic custom event collection services.'
687
+ :dynamic_name => true,
688
+ :description => <<-DESCRIPTION
689
+ A map of error classes to a list of messages. When an error of one of the classes specified here occurs, if its error message contains one of the strings corresponding to it here, that error will be treated as expected.
690
+
691
+ <Callout variant="caution">
692
+ This option can't be set via environment variable.
693
+ </Callout>
694
+ DESCRIPTION
661
695
  },
662
- :'event_report_period.error_event_data' => {
663
- :default => 60,
664
- :public => false,
665
- :type => Integer,
696
+ :'error_collector.expected_status_codes' => {
697
+ :default => '',
698
+ :public => true,
699
+ :type => String,
700
+ :allowed_from_server => true,
666
701
  :dynamic_name => true,
702
+ :description => 'A comma separated list of status codes, possibly including ranges. Errors associated with these status codes, where applicable, will be treated as expected.'
703
+ },
704
+ :'error_collector.ignore_errors' => {
705
+ :default => 'ActionController::RoutingError,Sinatra::NotFound',
706
+ :public => true,
707
+ :type => String,
708
+ :deprecated => true,
667
709
  :allowed_from_server => true,
668
- :description => 'Number of seconds betwixt connections to the New Relic error event collection services.'
710
+ :dynamic_name => true,
711
+ :description => <<-DESCRIPTION
712
+ Use `error_collector.ignore_classes` instead. Specify a comma-delimited list of error classes that the agent should ignore.
713
+
714
+ <Callout variant="caution">
715
+ Server side configuration takes precedence for this setting over all environment configurations. This differs from all other configuration settings where environment variable take precedence over server side configuration.
716
+ </Callout>
717
+ DESCRIPTION
669
718
  },
670
- :'event_report_period.span_event_data' => {
671
- :default => 60,
672
- :public => false,
673
- :type => Integer,
719
+ :'error_collector.ignore_messages' => {
720
+ :default => {},
721
+ :public => true,
722
+ :type => Hash,
723
+ :allowed_from_server => true,
674
724
  :dynamic_name => true,
725
+ :description => <<-DESCRIPTION
726
+ A map of error classes to a list of messages. When an error of one of the classes specified here occurs, if its error message contains one of the strings corresponding to it here, that error will be ignored.
727
+
728
+ <Callout variant="caution">
729
+ This option can't be set via environment variable.
730
+ </Callout>
731
+ DESCRIPTION
732
+ },
733
+ :'error_collector.ignore_status_codes' => {
734
+ :default => '',
735
+ :public => true,
736
+ :type => String,
675
737
  :allowed_from_server => true,
676
- :description => 'Number of seconds betwixt connections to the New Relic span event collection services.'
738
+ :dynamic_name => true,
739
+ :description => 'A comma separated list of status codes, possibly including ranges. Errors associated with these status codes, where applicable, will be ignored.'
677
740
  },
678
- :'data_report_periods.analytic_event_data' => {
679
- :default => 60,
680
- :public => false,
741
+ :'error_collector.max_backtrace_frames' => {
742
+ :default => 50,
743
+ :public => true,
744
+ :type => Integer,
745
+ :allowed_from_server => false,
746
+ :description => 'Defines the maximum number of frames in an error backtrace. Backtraces over this amount are truncated at the beginning and end.'
747
+ },
748
+ :'error_collector.max_event_samples_stored' => {
749
+ :default => 100,
750
+ :public => true,
681
751
  :type => Integer,
682
- :deprecated => true,
683
- :dynamic_name => true,
684
752
  :allowed_from_server => true,
685
- :description => 'Number of seconds between connections to the New Relic data collection service for sending transaction event data.'
753
+ :description => 'Defines the maximum number of [TransactionError events](/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights) reported per harvest cycle.'
686
754
  },
687
- :keep_retrying => {
688
- :default => true,
689
- :public => false,
755
+ # Browser monitoring
756
+ :'browser_monitoring.auto_instrument' => {
757
+ :default => value_of(:'rum.enabled'),
758
+ :documentation_default => true,
759
+ :public => true,
690
760
  :type => Boolean,
691
- :deprecated => true,
692
- :allowed_from_server => false,
693
- :description => 'Enable or disable retrying failed connections to the New Relic data collection service.'
761
+ :allowed_from_server => true,
762
+ :description => 'If `true`, enables [auto-injection](/docs/browser/new-relic-browser/installation-configuration/adding-apps-new-relic-browser#select-apm-app) of the JavaScript header for page load timing (sometimes referred to as real user monitoring or RUM).'
694
763
  },
695
- :force_reconnect => {
764
+ :'browser_monitoring.capture_attributes' => {
696
765
  :default => false,
697
- :public => false,
766
+ :public => true,
698
767
  :type => Boolean,
768
+ :deprecated => true,
699
769
  :allowed_from_server => false,
700
- :description => 'Force a new connection to the server before running the worker loop. Creates a separate agent run and is recorded as a separate instance by the New Relic data collection service.'
770
+ :description => 'Use [`browser_monitoring.attributes.enabled`](#browser_monitoring-attributes-enabled) instead.'
701
771
  },
702
- :report_instance_busy => {
772
+ # Analytics events
773
+ :'analytics_events.capture_attributes' => {
703
774
  :default => true,
704
- :public => false,
775
+ :public => true,
705
776
  :type => Boolean,
777
+ :deprecated => true,
706
778
  :allowed_from_server => false,
707
- :description => 'Enable or disable transmission of metrics recording the percentage of time application instances spend servicing requests (duty cycle metrics).'
779
+ :description => 'Use [`transaction_events.attributes.enabled`](#transaction_events-attributes-enabled) instead.'
708
780
  },
709
- :log_file_name => {
710
- :default => 'newrelic_agent.log',
781
+ :'analytics_events.enabled' => {
782
+ :default => true,
711
783
  :public => true,
712
- :type => String,
713
- :allowed_from_server => false,
714
- :description => 'Defines a name for the log file.'
784
+ :type => Boolean,
785
+ :deprecated => true,
786
+ :allowed_from_server => true,
787
+ :description => deprecated_description(:'transaction_events.enabled', 'If `true`, enables analytics event sampling.')
715
788
  },
716
- :log_file_path => {
717
- :default => DefaultSource::DEFAULT_LOG_DIR,
789
+ :'analytics_events.max_samples_stored' => {
790
+ :default => 1200,
718
791
  :public => true,
719
- :type => String,
720
- :allowed_from_server => false,
721
- :description => 'Defines a path to the agent log file, excluding the filename.'
792
+ :type => Integer,
793
+ :deprecated => true,
794
+ :allowed_from_server => true,
795
+ :description => deprecated_description(:'transaction_events.max_samples_stored', 'Defines the maximum number of request events reported from a single harvest.')
722
796
  },
723
- :'audit_log.enabled' => {
724
- :default => false,
797
+ # Transaction events
798
+ :'transaction_events.enabled' => {
799
+ :default => value_of(:'analytics_events.enabled'),
800
+ :documentation_default => true,
725
801
  :public => true,
726
802
  :type => Boolean,
727
- :allowed_from_server => false,
728
- :description => 'If <code>true</code>, enables an audit log which logs communications with the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>.'
729
- },
730
- :'audit_log.path' => {
731
- :default => DefaultSource.audit_log_path,
732
- :public => true,
733
- :type => String,
734
- :allowed_from_server => false,
735
- :description => 'Specifies a path to the audit log file (including the filename).'
803
+ :allowed_from_server => true,
804
+ :description => 'If `true`, enables transaction event sampling.'
736
805
  },
737
- :'audit_log.endpoints' => {
738
- :default => [".*"],
806
+ :'transaction_events.max_samples_stored' => {
807
+ :default => value_of(:'analytics_events.max_samples_stored'),
808
+ :documentation_default => 1200,
739
809
  :public => true,
740
- :type => Array,
741
- :allowed_from_server => false,
742
- :transform => DefaultSource.method(:convert_to_regexp_list),
743
- :description => 'List of allowed endpoints to include in audit log'
810
+ :type => Integer,
811
+ :allowed_from_server => true,
812
+ :description => 'Defines the maximum number of transaction events reported from a single harvest.'
744
813
  },
745
- :disable_samplers => {
746
- :default => false,
814
+ # Application logging
815
+ :'application_logging.enabled' => {
816
+ :default => true,
747
817
  :public => true,
748
818
  :type => Boolean,
749
819
  :allowed_from_server => false,
750
- :description => 'If <code>true</code>, disables the collection of sampler metrics. Sampler metrics are metrics that are not event-based (such as CPU time or memory usage).'
820
+ :description => 'If `true`, enables log decoration and the collection of log events and metrics.'
751
821
  },
752
- :disable_resque => {
753
- :default => false,
822
+ :'application_logging.forwarding.enabled' => {
823
+ :default => true,
754
824
  :public => true,
755
825
  :type => Boolean,
756
826
  :allowed_from_server => false,
757
- :description => 'If <code>true</code>, disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/resque-instrumentation">Resque instrumentation</a>.'
827
+ :description => 'If `true`, the agent captures log records emitted by your application.'
758
828
  },
759
- :disable_sidekiq => {
760
- :default => false,
829
+ :'application_logging.forwarding.max_samples_stored' => {
830
+ :default => 10000,
761
831
  :public => true,
762
- :type => Boolean,
763
- :allowed_from_server => false,
764
- :description => 'If <code>true</code>, disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/sidekiq-instrumentation">Sidekiq instrumentation</a>.'
832
+ :type => Integer,
833
+ :allowed_from_server => true,
834
+ :description => 'Defines the maximum number of log records to buffer in memory at a time.',
835
+ :dynamic_name => true
765
836
  },
766
- :disable_dj => {
837
+ :'application_logging.local_decorating.enabled' => {
767
838
  :default => false,
768
839
  :public => true,
769
840
  :type => Boolean,
770
841
  :allowed_from_server => false,
771
- :description => 'If <code>true</code>, disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/delayedjob">Delayed::Job instrumentation</a>.'
842
+ :description => 'If `true`, the agent decorates logs with metadata to link to entities, hosts, traces, and spans.'
772
843
  },
773
- :disable_sinatra => {
774
- :default => false,
844
+ :'application_logging.metrics.enabled' => {
845
+ :default => true,
775
846
  :public => true,
776
847
  :type => Boolean,
777
- :allowed_from_server => false,
778
- :description => 'If <code>true</code> , disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/frameworks/sinatra-support">Sinatra instrumentation</a>.'
848
+ :allowed_from_server => true,
849
+ :description => 'If `true`, the agent captures metrics related to logging for your application.'
779
850
  },
780
- :disable_sinatra_auto_middleware => {
781
- :default => false,
851
+ # Attributes
852
+ :'attributes.enabled' => {
853
+ :default => true,
782
854
  :public => true,
783
855
  :type => Boolean,
784
856
  :allowed_from_server => false,
785
- :description => 'If <code>true</code>, disables agent middleware for Sinatra. This middleware is responsible for advanced feature support such as <a href="https://docs.newrelic.com/docs/apm/transactions/cross-application-traces/cross-application-tracing">cross application tracing</a>, <a href="https://docs.newrelic.com/docs/browser/new-relic-browser/getting-started/new-relic-browser">page load timing</a>, and <a href="https://docs.newrelic.com/docs/apm/applications-menu/events/view-apm-error-analytics">error collection</a>.'
857
+ :description => 'If `true`, enables capture of attributes for all destinations.'
786
858
  },
787
- :disable_view_instrumentation => {
788
- :default => false,
859
+ :'attributes.exclude' => {
860
+ :default => [],
789
861
  :public => true,
790
- :type => Boolean,
862
+ :type => Array,
791
863
  :allowed_from_server => false,
792
- :description => 'If <code>true</code>, disables view instrumentation.'
864
+ :transform => DefaultSource.method(:convert_to_list),
865
+ :description => 'Prefix of attributes to exclude from all destinations. Allows `*` as wildcard at end.'
793
866
  },
794
- :disable_harvest_thread => {
795
- :default => false,
796
- :public => false,
797
- :type => Boolean,
867
+ :'attributes.include' => {
868
+ :default => [],
869
+ :public => true,
870
+ :type => Array,
798
871
  :allowed_from_server => false,
799
- :description => 'Enable or disable the harvest thread.'
872
+ :transform => DefaultSource.method(:convert_to_list),
873
+ :description => 'Prefix of attributes to include in all destinations. Allows `*` as wildcard at end.'
800
874
  },
801
- :skip_ar_instrumentation => {
802
- :default => false,
803
- :public => false,
875
+ :'browser_monitoring.attributes.enabled' => {
876
+ :default => value_of(:'browser_monitoring.capture_attributes'),
877
+ :documentation_default => false,
878
+ :public => true,
804
879
  :type => Boolean,
805
880
  :allowed_from_server => false,
806
- :description => 'Enable or disable active record instrumentation.'
881
+ :description => 'If `true`, the agent captures attributes from browser monitoring.'
807
882
  },
808
- :disable_activerecord_instrumentation => {
809
- :default => value_of(:skip_ar_instrumentation),
883
+ :'browser_monitoring.attributes.exclude' => {
884
+ :default => [],
810
885
  :public => true,
811
- :type => Boolean,
886
+ :type => Array,
812
887
  :allowed_from_server => false,
813
- :description => 'If <code>true</code>, disables active record instrumentation.'
888
+ :transform => DefaultSource.method(:convert_to_list),
889
+ :description => 'Prefix of attributes to exclude from browser monitoring. Allows `*` as wildcard at end.'
814
890
  },
815
- :prepend_active_record_instrumentation => {
816
- :default => false,
891
+ :'browser_monitoring.attributes.include' => {
892
+ :default => [],
817
893
  :public => true,
818
- :type => Boolean,
894
+ :type => Array,
819
895
  :allowed_from_server => false,
820
- :description => 'If <code>true</code>, uses Module.prepend rather than alias_method for ActiveRecord instrumentation.'
896
+ :transform => DefaultSource.method(:convert_to_list),
897
+ :description => 'Prefix of attributes to include in browser monitoring. Allows `*` as wildcard at end.'
821
898
  },
822
- :disable_data_mapper => {
823
- :default => false,
899
+ :'error_collector.attributes.enabled' => {
900
+ :default => value_of(:'error_collector.capture_attributes'),
901
+ :documentation_default => true,
824
902
  :public => true,
825
903
  :type => Boolean,
826
904
  :allowed_from_server => false,
827
- :description => 'If <code>true</code>, disables DataMapper instrumentation.'
905
+ :description => 'If `true`, the agent captures attributes from error collection.'
828
906
  },
829
- :disable_activejob => {
830
- :default => false,
907
+ :'error_collector.attributes.exclude' => {
908
+ :default => [],
831
909
  :public => true,
832
- :type => Boolean,
833
- :dynamic_name => true,
910
+ :type => Array,
834
911
  :allowed_from_server => false,
835
- :description => 'If <code>true</code>, disables ActiveJob instrumentation.'
912
+ :transform => DefaultSource.method(:convert_to_list),
913
+ :description => 'Prefix of attributes to exclude from error collection. Allows `*` as wildcard at end.'
836
914
  },
837
- :disable_action_cable_instrumentation => {
838
- :default => false,
915
+ :'error_collector.attributes.include' => {
916
+ :default => [],
839
917
  :public => true,
840
- :type => Boolean,
841
- :dynamic_name => true,
918
+ :type => Array,
842
919
  :allowed_from_server => false,
843
- :description => 'If <code>true</code>, disables Action Cable instrumentation.'
920
+ :transform => DefaultSource.method(:convert_to_list),
921
+ :description => 'Prefix of attributes to include in error collection. Allows `*` as wildcard at end.'
844
922
  },
845
- :disable_active_storage => {
846
- :default => false,
923
+ :'span_events.attributes.enabled' => {
924
+ :default => true,
847
925
  :public => true,
848
926
  :type => Boolean,
849
- :dynamic_name => true,
850
927
  :allowed_from_server => false,
851
- :description => 'If <code>true</code>, disables ActiveStorage instrumentation.'
928
+ :description => 'If `true`, the agent captures attributes on span events.'
852
929
  },
853
- :disable_memcached => {
854
- :default => value_of(:disable_memcache_instrumentation),
930
+ :'span_events.attributes.exclude' => {
931
+ :default => [],
855
932
  :public => true,
856
- :type => Boolean,
933
+ :type => Array,
857
934
  :allowed_from_server => false,
858
- :description => 'If <code>true</code>, disables instrumentation for the memcached gem.'
935
+ :transform => DefaultSource.method(:convert_to_list),
936
+ :description => 'Prefix of attributes to exclude from span events. Allows `*` as wildcard at end.'
859
937
  },
860
- :disable_memcache_client => {
861
- :default => value_of(:disable_memcache_instrumentation),
938
+ :'span_events.attributes.include' => {
939
+ :default => [],
862
940
  :public => true,
863
- :type => Boolean,
941
+ :type => Array,
864
942
  :allowed_from_server => false,
865
- :description => 'If <code>true</code>, disables instrumentation for the memcache-client gem.'
943
+ :transform => DefaultSource.method(:convert_to_list),
944
+ :description => 'Prefix of attributes to include on span events. Allows `*` as wildcard at end.'
866
945
  },
867
- :disable_dalli => {
868
- :default => value_of(:disable_memcache_instrumentation),
946
+ :'transaction_events.attributes.enabled' => {
947
+ :default => value_of(:'analytics_events.capture_attributes'),
948
+ :documentation_default => true,
869
949
  :public => true,
870
950
  :type => Boolean,
871
951
  :allowed_from_server => false,
872
- :description => 'If <code>true</code>, disables instrumentation for the dalli gem.'
952
+ :description => 'If `true`, the agent captures attributes from transaction events.'
873
953
  },
874
- :disable_dalli_cas_client => {
875
- :default => value_of(:disable_memcache_instrumentation),
954
+ :'transaction_events.attributes.exclude' => {
955
+ :default => [],
876
956
  :public => true,
877
- :type => Boolean,
957
+ :type => Array,
878
958
  :allowed_from_server => false,
879
- :description => "If <code>true</code>, disables instrumentation for the dalli gem\'s additional CAS client support."
959
+ :transform => DefaultSource.method(:convert_to_list),
960
+ :description => 'Prefix of attributes to exclude from transaction events. Allows `*` as wildcard at end.'
880
961
  },
881
- :disable_memcache_instrumentation => {
882
- :default => false,
962
+ :'transaction_events.attributes.include' => {
963
+ :default => [],
883
964
  :public => true,
884
- :type => Boolean,
965
+ :type => Array,
885
966
  :allowed_from_server => false,
886
- :description => 'If <code>true</code>, disables memcache instrumentation.'
967
+ :transform => DefaultSource.method(:convert_to_list),
968
+ :description => 'Prefix of attributes to include in transaction events. Allows `*` as wildcard at end.'
887
969
  },
888
- :disable_gc_profiler => {
889
- :default => false,
970
+ :'transaction_segments.attributes.enabled' => {
971
+ :default => true,
890
972
  :public => true,
891
973
  :type => Boolean,
892
974
  :allowed_from_server => false,
893
- :description => 'If <code>true</code>, disables the use of GC::Profiler to measure time spent in garbage collection'
975
+ :description => 'If `true`, the agent captures attributes on transaction segments.'
894
976
  },
895
- :'sidekiq.capture_params' => {
896
- :default => false,
977
+ :'transaction_segments.attributes.exclude' => {
978
+ :default => [],
897
979
  :public => true,
898
- :type => Boolean,
980
+ :type => Array,
899
981
  :allowed_from_server => false,
900
- :dynamic_name => true,
901
- :deprecated => true,
902
- :description => 'If <code>true</code>, enables the capture of job arguments for transaction traces and traced errors in Sidekiq.'
982
+ :transform => DefaultSource.method(:convert_to_list),
983
+ :description => 'Prefix of attributes to exclude from transaction segments. Allows `*` as wildcard at end.'
903
984
  },
904
- :'resque.capture_params' => {
905
- :default => false,
985
+ :'transaction_segments.attributes.include' => {
986
+ :default => [],
906
987
  :public => true,
907
- :type => Boolean,
988
+ :type => Array,
908
989
  :allowed_from_server => false,
909
- :dynamic_name => true,
910
- :deprecated => true,
911
- :description => 'If <code>true</code>, enables the capture of job arguments for transaction traces and traced errors in Resque.'
990
+ :transform => DefaultSource.method(:convert_to_list),
991
+ :description => 'Prefix of attributes to include on transaction segments. Allows `*` as wildcard at end.'
912
992
  },
913
- :'resque.use_ruby_dns' => {
914
- :default => true,
915
- :public => false,
993
+ :'transaction_tracer.attributes.enabled' => {
994
+ :default => value_of(:'transaction_tracer.capture_attributes'),
995
+ :documentation_default => true,
996
+ :public => true,
916
997
  :type => Boolean,
917
998
  :allowed_from_server => false,
918
- :description => 'Replace the libc DNS resolver with the all Ruby resolver Resolv'
999
+ :description => 'If `true`, the agent captures attributes from transaction traces.'
919
1000
  },
920
- :capture_memcache_keys => {
1001
+ :'transaction_tracer.attributes.exclude' => {
1002
+ :default => [],
1003
+ :public => true,
1004
+ :type => Array,
1005
+ :allowed_from_server => false,
1006
+ :transform => DefaultSource.method(:convert_to_list),
1007
+ :description => 'Prefix of attributes to exclude from transaction traces. Allows `*` as wildcard at end.'
1008
+ },
1009
+ :'transaction_tracer.attributes.include' => {
1010
+ :default => [],
1011
+ :public => true,
1012
+ :type => Array,
1013
+ :allowed_from_server => false,
1014
+ :transform => DefaultSource.method(:convert_to_list),
1015
+ :description => 'Prefix of attributes to include in transaction traces. Allows `*` as wildcard at end.'
1016
+ },
1017
+ # Audit log
1018
+ :'audit_log.enabled' => {
921
1019
  :default => false,
922
1020
  :public => true,
923
1021
  :type => Boolean,
924
- :allowed_from_server => true,
925
- :description => 'Enable or disable the capture of memcache keys from transaction traces.'
1022
+ :allowed_from_server => false,
1023
+ :description => 'If `true`, enables an audit log which logs communications with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector).'
926
1024
  },
927
- :'transaction_tracer.enabled' => {
928
- :default => true,
1025
+ :'audit_log.endpoints' => {
1026
+ :default => [".*"],
929
1027
  :public => true,
930
- :type => Boolean,
931
- :allowed_from_server => true,
932
- :description => 'If <code>true</code>, enables collection of <a href="https://docs.newrelic.com/docs/apm/traces/transaction-traces/transaction-traces">transaction traces</a>.'
1028
+ :type => Array,
1029
+ :allowed_from_server => false,
1030
+ :transform => DefaultSource.method(:convert_to_regexp_list),
1031
+ :description => 'List of allowed endpoints to include in audit log'
933
1032
  },
934
- :'transaction_tracer.transaction_threshold' => {
935
- :default => DefaultSource.transaction_tracer_transaction_threshold,
1033
+ :'audit_log.path' => {
1034
+ :default => DefaultSource.audit_log_path,
1035
+ :documentation_default => 'config/newrelic_audit.log',
936
1036
  :public => true,
937
- :type => Float,
938
- :allowed_from_server => true,
939
- :description => 'Specify a threshold in seconds. Transactions with a duration longer than this threshold are eligible for transaction traces. Specify a float value or the string <code><a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#apdex_f">apdex_f</a></code>.'
1037
+ :type => String,
1038
+ :allowed_from_server => false,
1039
+ :description => 'Specifies a path to the audit log file (including the filename).'
940
1040
  },
941
- :'transaction_tracer.record_sql' => {
942
- :default => 'obfuscated',
1041
+ # Autostart
1042
+ :'autostart.denylisted_constants' => {
1043
+ :default => 'Rails::Console',
943
1044
  :public => true,
944
1045
  :type => String,
945
- :allowed_from_server => true,
946
- :description => 'Obfuscation level for SQL queries reported in transaction trace nodes.</p>
947
-
948
- <p>By default, this is set to <code>obfuscated</code>, which strips out the numeric and string literals.</p>
949
-
950
- <ul>
951
- <li>If you do not want the agent to capture query information, set this to <code>none</code>.</li>
952
- <li>If you want the agent to capture all query information in its original form, set this to <code>raw</code>.</li>
953
- <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>
954
- </ul>
955
- <p>' # Doc generator will wrap this in <p>...</p>
1046
+ :allowed_from_server => false,
1047
+ :description => 'Specify a list of constants that should prevent the agent from starting automatically. Separate individual constants with a comma `,`. For example, `Rails::Console,UninstrumentedBackgroundJob`.'
956
1048
  },
957
- :'transaction_tracer.record_redis_arguments' => {
958
- :default => false,
1049
+ :'autostart.denylisted_executables' => {
1050
+ :default => 'irb,rspec',
959
1051
  :public => true,
960
- :type => Boolean,
1052
+ :type => String,
961
1053
  :allowed_from_server => false,
962
- :description => 'If <code>true</code>, the agent records Redis command arguments in transaction traces.'
1054
+ :description => 'Defines a comma-delimited list of executables that the agent should not instrument. For example, `rake,my_ruby_script.rb`.'
963
1055
  },
964
- :'transaction_tracer.capture_attributes' => {
1056
+ :'autostart.denylisted_rake_tasks' => {
1057
+ :default => AUTOSTART_DENYLISTED_RAKE_TASKS,
1058
+ :public => true,
1059
+ :type => String,
1060
+ :allowed_from_server => false,
1061
+ :description => 'Defines a comma-delimited list of Rake tasks that the agent should not instrument. For example, `assets:precompile,db:migrate`.'
1062
+ },
1063
+ # Code level metrics
1064
+ :'code_level_metrics.enabled' => {
965
1065
  :default => true,
966
1066
  :public => true,
967
1067
  :type => Boolean,
968
- :deprecated => true,
969
- :allowed_from_server => false,
970
- :description => 'Deprecated; use <a href="#transaction_tracer-attributes-enabled"><code>transaction_tracer.attributes.enabled</code></a> instead.'
1068
+ :allowed_from_server => true,
1069
+ :description => "If `true`, the agent will report source code level metrics for traced methods.\nsee: " \
1070
+ 'https://docs.newrelic.com/docs/apm/agents/ruby-agent/features/ruby-codestream-integration/'
971
1071
  },
972
- :'transaction_tracer.explain_threshold' => {
973
- :default => 0.5,
1072
+ # Cross application tracer
1073
+ :"cross_application_tracer.enabled" => {
1074
+ :default => false,
974
1075
  :public => true,
975
- :type => Float,
1076
+ :type => Boolean,
976
1077
  :allowed_from_server => true,
977
- :description => 'Threshold (in seconds) above which the agent will collect explain plans. Relevant only when <code><a href="#transaction_tracer.explain_enabled">explain_enabled</a></code> is true.'
1078
+ :deprecated => true,
1079
+ :description => deprecated_description(
1080
+ :'distributed_tracing-enabled',
1081
+ 'If `true`, enables [cross-application tracing](/docs/agents/ruby-agent/features/cross-application-tracing-ruby/) when `distributed_tracing.enabled` is set to `false`.'
1082
+ )
978
1083
  },
979
- :'transaction_tracer.explain_enabled' => {
1084
+ # Custom attributes
1085
+ :'custom_attributes.enabled' => {
980
1086
  :default => true,
981
1087
  :public => true,
982
1088
  :type => Boolean,
983
- :allowed_from_server => true,
984
- :description => 'If <code>true</code>, enables the collection of explain plans in transaction traces. This setting will also apply to explain plans in slow SQL traces if <a href="#slow_sql-explain_enabled"><code>slow_sql.explain_enabled</code></a> is not set separately.'
1089
+ :allowed_from_server => false,
1090
+ :description => 'If `false`, custom attributes will not be sent on events.'
985
1091
  },
986
- :'transaction_tracer.stack_trace_threshold' => {
987
- :default => 0.5,
1092
+ # Custom events
1093
+ :'custom_insights_events.enabled' => {
1094
+ :default => true,
988
1095
  :public => true,
989
- :type => Float,
1096
+ :type => Boolean,
990
1097
  :allowed_from_server => true,
991
- :description => 'Specify a threshold in seconds. The agent includes stack traces in transaction trace nodes when the stack trace duration exceeds this threshold.'
1098
+ :description => 'If `true`, the agent captures [custom events](/docs/insights/new-relic-insights/adding-querying-data/inserting-custom-events-new-relic-apm-agents).'
992
1099
  },
993
- :'transaction_tracer.limit_segments' => {
994
- :default => 4000,
1100
+ :'custom_insights_events.max_samples_stored' => {
1101
+ :default => 3000,
995
1102
  :public => true,
996
1103
  :type => Integer,
997
1104
  :allowed_from_server => true,
998
- :description => 'Maximum number of transaction trace nodes to record in a single transaction trace.'
1105
+ :description => 'Specify a maximum number of custom events to buffer in memory at a time.',
1106
+ :dynamic_name => true
999
1107
  },
1000
- :disable_sequel_instrumentation => {
1001
- :default => false,
1108
+ # Datastore tracer
1109
+ :'datastore_tracer.database_name_reporting.enabled' => {
1110
+ :default => true,
1002
1111
  :public => true,
1003
1112
  :type => Boolean,
1004
1113
  :allowed_from_server => false,
1005
- :description => 'If <code>true</code>, disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/frameworks/sequel-instrumentation">Sequel instrumentation</a>.'
1114
+ :description => 'If `false`, the agent will not add `database_name` parameter to transaction or slow sql traces.'
1006
1115
  },
1007
- :disable_database_instrumentation => {
1008
- :default => false,
1116
+ :'datastore_tracer.instance_reporting.enabled' => {
1117
+ :default => true,
1009
1118
  :public => true,
1010
1119
  :type => Boolean,
1011
1120
  :allowed_from_server => false,
1012
- :deprecated => true,
1013
- :description => 'Deprecated; use <a href="#disable_sequel_instrumentation"><code>disable_sequel_instrumentation</code></a> instead.'
1121
+ :description => 'If `false`, the agent will not report datastore instance metrics, nor add `host` or `port_path_or_id` parameters to transaction or slow SQL traces.'
1014
1122
  },
1015
- :disable_mongo => {
1016
- :default => false,
1017
- :public => true,
1018
- :type => Boolean,
1019
- :allowed_from_server => false,
1123
+ # Disabling
1124
+ :disable_action_cable_instrumentation => {
1125
+ :default => false,
1126
+ :public => true,
1127
+ :type => Boolean,
1020
1128
  :dynamic_name => true,
1021
- :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>.'
1022
- },
1023
- :disable_redis => {
1024
- :default => false,
1025
- :public => true,
1026
- :type => Boolean,
1027
1129
  :allowed_from_server => false,
1028
- :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>.'
1130
+ :description => 'If `true`, disables Action Cable instrumentation.'
1029
1131
  },
1030
- :disable_redis_instrumentation => {
1031
- :default => false,
1032
- :public => false,
1033
- :type => Boolean,
1132
+ :disable_activejob => {
1133
+ :default => false,
1134
+ :public => true,
1135
+ :type => Boolean,
1136
+ :dynamic_name => true,
1034
1137
  :allowed_from_server => false,
1035
- :description => 'Disables installation of Redis instrumentation. Standard key to use is disable_redis.'
1036
- },
1037
- :'message_tracer.segment_parameters.enabled' => {
1038
- :default => true,
1039
- :public => true,
1040
- :type => Boolean,
1041
- :allowed_from_server => true,
1042
- :description => 'If <code>true</code>, the agent will collect metadata about messages and attach them as segment parameters.'
1138
+ :description => 'If `true`, disables ActiveJob instrumentation.'
1043
1139
  },
1044
- :'slow_sql.enabled' => {
1045
- :default => value_of(:'transaction_tracer.enabled'),
1140
+ :disable_active_storage => {
1141
+ :default => false,
1046
1142
  :public => true,
1047
1143
  :type => Boolean,
1048
- :allowed_from_server => true,
1049
- :description => 'If <code>true</code>, the agent collects <a href="https://docs.newrelic.com/docs/apm/applications-menu/monitoring/viewing-slow-query-details">slow SQL queries</a>.'
1144
+ :dynamic_name => true,
1145
+ :allowed_from_server => false,
1146
+ :description => 'If `true`, disables ActiveStorage instrumentation.'
1050
1147
  },
1051
- :'slow_sql.explain_threshold' => {
1052
- :default => value_of(:'transaction_tracer.explain_threshold'),
1148
+ :disable_activerecord_instrumentation => {
1149
+ :default => value_of(:skip_ar_instrumentation),
1150
+ :documentation_default => false,
1053
1151
  :public => true,
1054
- :type => Float,
1055
- :allowed_from_server => true,
1056
- :description => 'Specify a threshold in seconds. The agent collects <a href="https://docs.newrelic.com/docs/apm/applications-menu/monitoring/viewing-slow-query-details">slow SQL queries</a> and explain plans that exceed this threshold.'
1152
+ :type => Boolean,
1153
+ :allowed_from_server => false,
1154
+ :description => 'If `true`, disables active record instrumentation.'
1057
1155
  },
1058
- :'slow_sql.explain_enabled' => {
1059
- :default => value_of(:'transaction_tracer.explain_enabled'),
1156
+ :disable_active_record_notifications => {
1157
+ :default => false,
1060
1158
  :public => true,
1061
1159
  :type => Boolean,
1062
- :allowed_from_server => true,
1063
- :description => 'If <code>true</code>, the agent collects explain plans in slow SQL queries. If this setting is omitted, the <a href="#transaction_tracer-explain_enabled"><code>transaction_tracer.explain_enabled</code></a> setting will be applied as the default setting for explain plans in slow SQL as well.'
1160
+ :dynamic_name => true,
1161
+ :allowed_from_server => false,
1162
+ :description => 'If `true`, disables instrumentation for ActiveRecord 4, 5, and 6.'
1064
1163
  },
1065
- :'slow_sql.record_sql' => {
1066
- :default => value_of(:'transaction_tracer.record_sql'),
1164
+ :disable_bunny => {
1165
+ :default => false,
1067
1166
  :public => true,
1068
- :type => String,
1069
- :allowed_from_server => true,
1070
- :description => 'Defines an obfuscation level for slow SQL queries. Valid options are <code>obfuscated</code>, <code>raw</code>, or <code>none</code>).'
1167
+ :type => Boolean,
1168
+ :deprecated => true,
1169
+ :dynamic_name => true,
1170
+ :allowed_from_server => false,
1171
+ :description => deprecated_description(:'instrumentation.bunny', 'If `true`, disables instrumentation for the bunny gem.')
1071
1172
  },
1072
- :'slow_sql.use_longer_sql_id' => {
1173
+ :disable_cpu_sampler => {
1073
1174
  :default => false,
1074
1175
  :public => true,
1075
1176
  :type => Boolean,
1076
- :allowed_from_server => true,
1077
- :description => 'Generate a longer sql_id for slow SQL traces. sql_id is used for aggregation of similar queries.'
1177
+ :dynamic_name => true,
1178
+ :allowed_from_server => false,
1179
+ :description => 'If `true`, the agent won\'t sample the CPU usage of the host process.'
1078
1180
  },
1079
- :'mongo.capture_queries' => {
1080
- :default => true,
1181
+ :disable_curb => {
1182
+ :default => false,
1081
1183
  :public => true,
1082
1184
  :type => Boolean,
1083
- :allowed_from_server => true,
1084
- :description => 'If <code>true</code>, the agent captures Mongo queries in transaction traces.'
1185
+ :deprecated => true,
1186
+ :dynamic_name => true,
1187
+ :allowed_from_server => false,
1188
+ :description => deprecated_description(:'instrumentation.curb', 'If `true`, disables instrumentation for the curb gem.')
1085
1189
  },
1086
- :'mongo.obfuscate_queries' => {
1087
- :default => true,
1190
+ :disable_database_instrumentation => {
1191
+ :default => false,
1088
1192
  :public => true,
1089
1193
  :type => Boolean,
1090
- :allowed_from_server => true,
1091
- :description => 'If <code>true</code>, the agent obfuscates Mongo queries in transaction traces.'
1194
+ :allowed_from_server => false,
1195
+ :deprecated => true,
1196
+ :description => 'Use [`disable_sequel_instrumentation`](#disable_sequel_instrumentation) instead.'
1092
1197
  },
1093
- :'error_collector.enabled' => {
1094
- :default => true,
1198
+ :disable_data_mapper => {
1199
+ :default => false,
1095
1200
  :public => true,
1096
1201
  :type => Boolean,
1097
- :allowed_from_server => true,
1098
- :description => 'If <code>true</code>, the agent captures traced errors and error count metrics.'
1202
+ :allowed_from_server => false,
1203
+ :description => 'If `true`, disables DataMapper instrumentation.'
1099
1204
  },
1100
- :'error_collector.capture_attributes' => {
1101
- :default => true,
1205
+ :disable_dalli => {
1206
+ :default => value_of(:disable_memcache_instrumentation),
1207
+ :documentation_default => false,
1102
1208
  :public => true,
1103
1209
  :type => Boolean,
1104
1210
  :deprecated => true,
1105
1211
  :allowed_from_server => false,
1106
- :description => 'Deprecated; use <a href="#error_collector-attributes-enabled"><code>error_collector.attributes.enabled</code></a> instead.'
1107
- },
1108
- :'error_collector.ignore_errors' => {
1109
- :default => 'ActionController::RoutingError,Sinatra::NotFound',
1110
- :public => true,
1111
- :type => String,
1112
- :allowed_from_server => true,
1113
- :description => 'Specify a comma-delimited list of error classes that the agent should ignore.'
1212
+ :description => deprecated_description(:'instrumentation.memcache', 'If `true`, disables instrumentation for the dalli gem.')
1114
1213
  },
1115
- :'error_collector.max_backtrace_frames' => {
1116
- :default => 50,
1214
+ :disable_dalli_cas_client => {
1215
+ :default => value_of(:disable_memcache_instrumentation),
1216
+ :documentation_default => false,
1117
1217
  :public => true,
1118
- :type => Integer,
1218
+ :type => Boolean,
1219
+ :deprecated => true,
1119
1220
  :allowed_from_server => false,
1120
- :description => 'Defines the maximum number of frames in an error backtrace. Backtraces over this amount are truncated at the beginning and end.'
1221
+ :description => deprecated_description(:'instrumentation.memcache', "If `true`, disables instrumentation for the dalli gem's additional CAS client support.")
1121
1222
  },
1122
- :'error_collector.capture_events' => {
1123
- :default => value_of(:'error_collector.enabled'),
1223
+ :disable_delayed_job_sampler => {
1224
+ :default => false,
1124
1225
  :public => true,
1125
1226
  :type => Boolean,
1126
- :allowed_from_server => true,
1127
1227
  :dynamic_name => true,
1128
- :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>.'
1228
+ :allowed_from_server => false,
1229
+ :description => 'If `true`, the agent won\'t measure the depth of Delayed Job queues.'
1129
1230
  },
1130
- :'error_collector.max_event_samples_stored' => {
1131
- :default => 100,
1231
+ :disable_dj => {
1232
+ :default => false,
1132
1233
  :public => true,
1133
- :type => Integer,
1134
- :allowed_from_server => true,
1135
- :description => 'Defines the maximum number of <a href="https://docs.newrelic.com/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights">TransactionError events</a> sent to Insights per harvest cycle.'
1136
- },
1137
- :'rum.enabled' => {
1138
- :default => true,
1139
- :public => false,
1234
+ :deprecated => true,
1140
1235
  :type => Boolean,
1141
- :allowed_from_server => true,
1142
- :description => 'Enable or disable page load timing (sometimes referred to as real user monitoring or RUM).'
1143
- },
1144
- :browser_key => {
1145
- :default => '',
1146
- :public => false,
1147
- :type => String,
1148
- :allowed_from_server => true,
1149
- :description => 'Real user monitoring license key for the browser timing header.'
1150
- },
1151
- :beacon => {
1152
- :default => '',
1153
- :public => false,
1154
- :type => String,
1155
- :allowed_from_server => true,
1156
- :description => 'Beacon for real user monitoring.'
1157
- },
1158
- :error_beacon => {
1159
- :default => '',
1160
- :public => false,
1161
- :type => String,
1162
- :allowed_from_server => true,
1163
- :description => 'Error beacon for real user monitoring.'
1236
+ :allowed_from_server => false,
1237
+ :description => deprecated_description(:'instrumentation.delayed_job', 'If `true`, disables [Delayed::Job instrumentation](/docs/agents/ruby-agent/background-jobs/delayedjob).')
1164
1238
  },
1165
- :application_id => {
1166
- :default => '',
1167
- :public => false,
1168
- :type => String,
1169
- :allowed_from_server => true,
1170
- :description => 'Application ID for real user monitoring.'
1239
+ :disable_excon => {
1240
+ :default => false,
1241
+ :public => true,
1242
+ :type => Boolean,
1243
+ :dynamic_name => true,
1244
+ :deprecated => true,
1245
+ :allowed_from_server => false,
1246
+ :description => deprecated_description(:'instrumentation.excon', 'If `true`, disables instrumentation for the excon gem.')
1171
1247
  },
1172
- :js_agent_file => {
1173
- :default => '',
1174
- :public => false,
1175
- :type => String,
1176
- :allowed_from_server => true,
1177
- :description => 'Javascript agent file for real user monitoring.'
1248
+ :disable_memcached => {
1249
+ :default => value_of(:disable_memcache_instrumentation),
1250
+ :documentation_default => false,
1251
+ :public => true,
1252
+ :type => Boolean,
1253
+ :deprecated => true,
1254
+ :allowed_from_server => false,
1255
+ :description => deprecated_description(:'instrumentation.memcached', 'If `true`, disables instrumentation for the memcached gem.')
1178
1256
  },
1179
- :'browser_monitoring.auto_instrument' => {
1180
- :default => value_of(:'rum.enabled'),
1257
+ :disable_memcache_client => {
1258
+ :default => value_of(:disable_memcache_instrumentation),
1259
+ :documentation_default => false,
1181
1260
  :public => true,
1182
1261
  :type => Boolean,
1183
- :allowed_from_server => true,
1184
- :description => 'If <code>true</code>, enables <a href="https://docs.newrelic.com/docs/browser/new-relic-browser/installation-configuration/adding-apps-new-relic-browser#select-apm-app">auto-injection</a> of the JavaScript header for page load timing (sometimes referred to as real user monitoring or RUM).'
1262
+ :deprecated => true,
1263
+ :allowed_from_server => false,
1264
+ :description => deprecated_description(:'instrumentation.memcache-client', 'If `true`, disables instrumentation for the memcache-client gem.')
1185
1265
  },
1186
- :'browser_monitoring.capture_attributes' => {
1266
+ :disable_memcache_instrumentation => {
1187
1267
  :default => false,
1188
1268
  :public => true,
1189
1269
  :type => Boolean,
1190
1270
  :deprecated => true,
1191
1271
  :allowed_from_server => false,
1192
- :description => 'Deprecated; use <a href="#browser_monitoring-attributes-enabled"><code>browser_monitoring.attributes.enabled</code></a> instead.'
1193
- },
1194
- :'browser_monitoring.loader' => {
1195
- :default => DefaultSource.browser_monitoring_loader,
1196
- :public => false,
1197
- :type => String,
1198
- :allowed_from_server => true,
1199
- :description => 'Type of JavaScript agent loader to use for browser monitoring instrumentation.'
1272
+ :description => deprecated_description(:'instrumentation.memcache', 'If `true`, disables memcache instrumentation.')
1200
1273
  },
1201
- :'browser_monitoring.loader_version' => {
1202
- :default => '',
1203
- :public => false,
1204
- :type => String,
1205
- :allowed_from_server => true,
1206
- :description => 'Version of JavaScript agent loader (returned from the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>.)'
1274
+ :disable_gc_profiler => {
1275
+ :default => false,
1276
+ :public => true,
1277
+ :type => Boolean,
1278
+ :allowed_from_server => false,
1279
+ :description => 'If `true`, disables the use of GC::Profiler to measure time spent in garbage collection'
1207
1280
  },
1208
- :'browser_monitoring.debug' => {
1281
+ :disable_grape => {
1209
1282
  :default => false,
1210
- :public => false,
1283
+ :public => true,
1211
1284
  :type => Boolean,
1212
- :allowed_from_server => true,
1213
- :description => 'Enable or disable debugging version of JavaScript agent loader for browser monitoring instrumentation.'
1285
+ :allowed_from_server => false,
1286
+ :deprecated => true,
1287
+ :description => deprecated_description(:'instrumentation.grape',
1288
+ 'If `true`, the agent won\'t install Grape instrumentation.')
1214
1289
  },
1215
- :'browser_monitoring.ssl_for_http' => {
1216
- :default => nil,
1217
- :allow_nil => true,
1218
- :public => false,
1290
+ :disable_httpclient => {
1291
+ :default => false,
1292
+ :public => true,
1219
1293
  :type => Boolean,
1220
- :allowed_from_server => true,
1221
- :description => 'Enable or disable HTTPS instrumentation by JavaScript agent on HTTP pages.'
1294
+ :dynamic_name => true,
1295
+ :deprecated => true,
1296
+ :allowed_from_server => false,
1297
+ :description => deprecated_description(:'instrumentation.httpclient', 'If `true`, disables instrumentation for the httpclient gem.')
1222
1298
  },
1223
- :js_agent_loader => {
1224
- :default => '',
1225
- :public => false,
1226
- :type => String,
1227
- :allowed_from_server => true,
1228
- :description => 'JavaScript agent loader content.'
1299
+ :disable_httprb => {
1300
+ :default => false,
1301
+ :public => true,
1302
+ :type => Boolean,
1303
+ :dynamic_name => true,
1304
+ :deprecated => true,
1305
+ :allowed_from_server => false,
1306
+ :description => deprecated_description(:'instrumentation.httprb', 'If `true`, the agent won\'t install instrumentation for the http.rb gem.')
1229
1307
  },
1230
- :js_errors_beta => {
1308
+ :disable_mongo => {
1231
1309
  :default => false,
1232
- :public => false,
1310
+ :public => true,
1233
1311
  :type => Boolean,
1234
1312
  :allowed_from_server => false,
1313
+ :dynamic_name => true,
1235
1314
  :deprecated => true,
1236
- :description => 'Enable or disable beta JavaScript error reporting.'
1315
+ :description => deprecated_description(:'instrumentation.mongo', 'If `true`, the agent won\'t install [instrumentation for the Mongo gem](/docs/agents/ruby-agent/frameworks/mongo-instrumentation).')
1237
1316
  },
1238
- :trusted_account_ids => {
1239
- :default => [],
1240
- :public => false,
1241
- :type => Array,
1242
- :allowed_from_server => true,
1243
- :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.'
1317
+ :disable_memory_sampler => {
1318
+ :default => false,
1319
+ :public => true,
1320
+ :type => Boolean,
1321
+ :dynamic_name => true,
1322
+ :allowed_from_server => false,
1323
+ :description => 'If `true`, the agent won\'t sample the memory usage of the host process.'
1244
1324
  },
1245
- :"cross_application_tracer.enabled" => {
1246
- :default => Proc.new { !NewRelic::Agent.config[:'distributed_tracing.enabled'] },
1325
+ :disable_middleware_instrumentation => {
1326
+ :default => false,
1247
1327
  :public => true,
1248
1328
  :type => Boolean,
1249
- :allowed_from_server => true,
1250
- :description => 'If <code>true</code>, enables <a href="https://docs.newrelic.com/docs/apm/transactions/cross-application-traces/cross-application-tracing">cross-application tracing</a>.'
1329
+ :allowed_from_server => false,
1330
+ :description => 'If `true`, the agent won\'t wrap third-party middlewares in instrumentation (regardless of whether they are installed via Rack::Builder or Rails).'
1251
1331
  },
1252
- :cross_application_tracing => {
1253
- :default => nil,
1254
- :allow_nil => true,
1255
- :public => false,
1332
+ :disable_net_http => {
1333
+ :default => false,
1334
+ :public => true,
1256
1335
  :type => Boolean,
1336
+ :dynamic_name => true,
1257
1337
  :allowed_from_server => false,
1258
1338
  :deprecated => true,
1259
- :description => 'Deprecated in favor of cross_application_tracer.enabled'
1260
- },
1261
- :encoding_key => {
1262
- :default => '',
1263
- :public => false,
1264
- :type => String,
1265
- :allowed_from_server => true,
1266
- :description => 'Encoding key for cross-application tracing.'
1339
+ :description => deprecated_description(:'instrumentation.net_http',
1340
+ 'If `true`, disables instrumentation for Net::HTTP.')
1267
1341
  },
1268
- :cross_process_id => {
1269
- :default => '',
1270
- :public => false,
1271
- :type => String,
1272
- :allowed_from_server => true,
1273
- :description => 'Cross process ID for cross-application tracing.'
1342
+ :disable_puma_rack => {
1343
+ :default => value_of(:disable_rack),
1344
+ :documentation_default => false,
1345
+ :public => true,
1346
+ :type => Boolean,
1347
+ :dynamic_name => true,
1348
+ :allowed_from_server => false,
1349
+ :deprecated => true,
1350
+ :description => deprecated_description(:'instrumentation.puma_rack', 'If `true`, prevents the agent from hooking into the `to_app` method in Puma::Rack::Builder to find gems to instrument during application startup.')
1274
1351
  },
1275
- :'thread_profiler.enabled' => {
1276
- :default => DefaultSource.thread_profiler_enabled,
1352
+ :disable_puma_rack_urlmap => {
1353
+ :default => value_of(:disable_rack_urlmap),
1354
+ :documentation_default => false,
1277
1355
  :public => true,
1278
1356
  :type => Boolean,
1279
- :allowed_from_server => true,
1280
- :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>.'
1357
+ :dynamic_name => true,
1358
+ :allowed_from_server => false,
1359
+ :deprecated => true,
1360
+ :description => deprecated_description(:'instrumentation.puma_rack_urlmap', 'If `true`, prevents the agent from hooking into Puma::Rack::URLMap to install middleware tracing.')
1281
1361
  },
1282
- :'thread_profiler.max_profile_overhead' => {
1283
- :default => 0.05,
1284
- :public => false,
1285
- :type => Float,
1286
- :allowed_from_server => true,
1287
- :description => 'Maximum overhead percentage for thread profiling before agent reduces polling frequency'
1362
+ :disable_rack => {
1363
+ :default => false,
1364
+ :public => true,
1365
+ :type => Boolean,
1366
+ :dynamic_name => true,
1367
+ :allowed_from_server => false,
1368
+ :deprecated => true,
1369
+ :description => deprecated_description(:'instrumentation.rack', 'If `true`, prevents the agent from hooking into the `to_app` method in Rack::Builder to find gems to instrument during application startup.')
1288
1370
  },
1289
- :marshaller => {
1290
- :default => 'json',
1371
+ :disable_rack_urlmap => {
1372
+ :default => false,
1291
1373
  :public => true,
1292
- :type => String,
1374
+ :type => Boolean,
1375
+ :dynamic_name => true,
1293
1376
  :allowed_from_server => false,
1294
- :description => 'Specifies a marshaller for transmitting data to the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>. Currently <code>json</code> is the only valid value for this setting.'
1377
+ :deprecated => true,
1378
+ :description => deprecated_description(:'instrumentation.rack_urlmap', 'If `true`, prevents the agent from hooking into Rack::URLMap to install middleware tracing.')
1295
1379
  },
1296
- :'analytics_events.enabled' => {
1297
- :default => true,
1380
+ :disable_rake => {
1381
+ :default => false,
1298
1382
  :public => true,
1299
1383
  :type => Boolean,
1300
- :allowed_from_server => true,
1301
- :description => 'If <code>true</code>, enables analytics event sampling.'
1384
+ :allowed_from_server => false,
1385
+ :deprecated => true,
1386
+ :description => deprecated_description(:'instrumentation.rake', 'If `true`, disables Rake instrumentation.')
1302
1387
  },
1303
- :'analytics_events.max_samples_stored' => {
1304
- :default => 1200,
1388
+ :disable_redis => {
1389
+ :default => false,
1305
1390
  :public => true,
1306
- :type => Integer,
1307
- :allowed_from_server => true,
1308
- :description => 'Defines the maximum number of request events reported from a single harvest.'
1391
+ :type => Boolean,
1392
+ :deprecated => true,
1393
+ :allowed_from_server => false,
1394
+ :description => deprecated_description(:'instrumentation.redis', 'If `true`, the agent won\'t install [instrumentation for Redis](/docs/agents/ruby-agent/frameworks/redis-instrumentation).')
1309
1395
  },
1310
- :'analytics_events.capture_attributes' => {
1311
- :default => true,
1396
+ :disable_resque => {
1397
+ :default => false,
1312
1398
  :public => true,
1313
1399
  :type => Boolean,
1314
1400
  :deprecated => true,
1315
1401
  :allowed_from_server => false,
1316
- :description => 'Deprecated; use <a href="#transaction_events-attributes-enabled"><code>transaction_events.attributes.enabled</code></a> instead.'
1402
+ :description => deprecated_description(:'instrumentation.resque', 'If `true`, disables [Resque instrumentation](/docs/agents/ruby-agent/background-jobs/resque-instrumentation).')
1317
1403
  },
1318
- :restart_thread_in_children => {
1319
- :default => true,
1320
- :public => false,
1404
+ :disable_samplers => {
1405
+ :default => false,
1406
+ :public => true,
1321
1407
  :type => Boolean,
1322
1408
  :allowed_from_server => false,
1323
- :description => 'Controls whether to check on running a transaction whether to respawn the harvest thread.'
1409
+ :description => 'If `true`, disables the collection of sampler metrics. Sampler metrics are metrics that are not event-based (such as CPU time or memory usage).'
1324
1410
  },
1325
- :normalize_json_string_encodings => {
1326
- :default => true,
1327
- :public => false,
1411
+ :disable_sequel_instrumentation => {
1412
+ :default => false,
1413
+ :public => true,
1328
1414
  :type => Boolean,
1329
1415
  :allowed_from_server => false,
1330
- :description => 'Controls whether to normalize string encodings prior to serializing data for the collector to JSON.'
1416
+ :description => 'If `true`, disables [Sequel instrumentation](/docs/agents/ruby-agent/frameworks/sequel-instrumentation).'
1331
1417
  },
1332
- :backport_fast_active_record_connection_lookup => {
1418
+ :disable_sidekiq => {
1333
1419
  :default => false,
1334
1420
  :public => true,
1335
1421
  :type => Boolean,
1336
1422
  :allowed_from_server => false,
1337
- :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.'
1423
+ :description => 'If `true`, disables [Sidekiq instrumentation](/docs/agents/ruby-agent/background-jobs/sidekiq-instrumentation).'
1338
1424
  },
1339
- :disable_vm_sampler => {
1340
- :default => false,
1341
- :public => true,
1342
- :type => Boolean,
1343
- :dynamic_name => true,
1425
+ :disable_sinatra => {
1426
+ :default => false,
1427
+ :public => true,
1428
+ :type => Boolean,
1429
+ :deprecated => true,
1344
1430
  :allowed_from_server => false,
1345
- :description => 'If <code>true</code>, the agent won\'t <a href="https://docs.newrelic.com/docs/agents/ruby-agent/features/ruby-vm-measurements">sample performance measurements from the Ruby VM</a>.'
1431
+ :description => deprecated_description(:'instrumentation.sinatra', 'If `true` , disables [Sinatra instrumentation](/docs/agents/ruby-agent/frameworks/sinatra-support).')
1346
1432
  },
1347
- :disable_memory_sampler => {
1348
- :default => false,
1349
- :public => true,
1350
- :type => Boolean,
1351
- :dynamic_name => true,
1433
+ :disable_sinatra_auto_middleware => {
1434
+ :default => false,
1435
+ :public => true,
1436
+ :type => Boolean,
1352
1437
  :allowed_from_server => false,
1353
- :description => 'If <code>true</code>, the agent won\'t sample the memory usage of the host process.'
1438
+ :description => <<-DESCRIPTION
1439
+ If `true`, disables agent middleware for Sinatra. This middleware is responsible for advanced feature support such as [cross application tracing](/docs/apm/transactions/cross-application-traces/cross-application-tracing), [page load timing](/docs/browser/new-relic-browser/getting-started/new-relic-browser), and [error collection](/docs/apm/applications-menu/events/view-apm-error-analytics).
1440
+
1441
+ <Callout variant="important">
1442
+ Cross application tracing is deprecated in favor of [distributed tracing](https://docs.newrelic.com/docs/apm/distributed-tracing/getting-started/introduction-distributed-tracing). Distributed tracing is on by default for Ruby agent versions 8.0.0 and above. Middlewares are not required to support distributed tracing.
1443
+
1444
+ To continue using cross application tracing, update the following options in your `newrelic.yml` configuration file:
1445
+
1446
+ ```
1447
+ # newrelic.yml
1448
+
1449
+ cross_application_tracer:
1450
+ enabled: true
1451
+ distributed_tracing:
1452
+ enabled: false
1453
+ ```
1454
+ </Callout>
1455
+ DESCRIPTION
1354
1456
  },
1355
- :disable_cpu_sampler => {
1356
- :default => false,
1357
- :public => true,
1358
- :type => Boolean,
1457
+ :disable_typhoeus => {
1458
+ :default => false,
1459
+ :public => true,
1460
+ :type => Boolean,
1359
1461
  :dynamic_name => true,
1462
+ :deprecated => true,
1360
1463
  :allowed_from_server => false,
1361
- :description => 'If <code>true</code>, the agent won\'t sample the CPU usage of the host process.'
1464
+ :description => deprecated_description(:'instrumentation.typhoeus', 'If `true`, the agent won\'t install instrumentation for the typhoeus gem.')
1362
1465
  },
1363
- :disable_delayed_job_sampler => {
1364
- :default => false,
1365
- :public => true,
1366
- :type => Boolean,
1367
- :dynamic_name => true,
1466
+ :disable_view_instrumentation => {
1467
+ :default => false,
1468
+ :public => true,
1469
+ :type => Boolean,
1368
1470
  :allowed_from_server => false,
1369
- :description => 'If <code>true</code>, the agent won\'t measure the depth of Delayed Job queues.'
1471
+ :description => 'If `true`, disables view instrumentation.'
1370
1472
  },
1371
- :disable_active_record_4 => {
1372
- :default => false,
1373
- :public => true,
1374
- :type => Boolean,
1473
+ :disable_vm_sampler => {
1474
+ :default => false,
1475
+ :public => true,
1476
+ :type => Boolean,
1375
1477
  :dynamic_name => true,
1376
1478
  :allowed_from_server => false,
1377
- :deprecated => true,
1378
- :description => 'Deprecated. ' \
1379
- 'For agent versions 6.3 or higher, ' \
1380
- 'use <a href="#disable_active_record_notifications"><code>' \
1381
- 'disable_active_record_notifications' \
1382
- '</code></a> instead.'
1479
+ :description => 'If `true`, the agent won\'t [sample performance measurements from the Ruby VM](/docs/agents/ruby-agent/features/ruby-vm-measurements).'
1383
1480
  },
1384
- :disable_active_record_5 => {
1385
- :default => false,
1386
- :public => true,
1387
- :type => Boolean,
1388
- :dynamic_name => true,
1389
- :allowed_from_server => false,
1390
- :deprecated => true,
1391
- :description => 'Deprecated. ' \
1392
- 'For agent versions 6.3 or higher, ' \
1393
- 'use <a href="#disable_active_record_notifications"><code>' \
1394
- 'disable_active_record_notifications' \
1395
- '</code></a> instead.'
1481
+ # Distributed tracing
1482
+ :'distributed_tracing.enabled' => {
1483
+ :default => true,
1484
+ :public => true,
1485
+ :type => Boolean,
1486
+ :allowed_from_server => true,
1487
+ :description => 'Distributed tracing lets you see the path that a request takes through your distributed system. Enabling distributed tracing changes the behavior of some New Relic features, so carefully consult the [transition guide](/docs/transition-guide-distributed-tracing) before you enable this feature.'
1396
1488
  },
1397
- :disable_active_record_notifications => {
1398
- :default => false,
1399
- :public => true,
1400
- :type => Boolean,
1401
- :dynamic_name => true,
1402
- :allowed_from_server => false,
1403
- :description => 'If <code>true</code>, disables instrumentation for ActiveRecord 4, 5, and 6.'
1489
+ # Elasticsearch
1490
+ :'elasticsearch.capture_queries' => {
1491
+ :default => true,
1492
+ :public => true,
1493
+ :type => Boolean,
1494
+ :allowed_from_server => true,
1495
+ :description => 'If `true`, the agent captures Elasticsearch queries in transaction traces.'
1404
1496
  },
1405
- :disable_bunny => {
1406
- :default => false,
1407
- :public => true,
1408
- :type => Boolean,
1409
- :dynamic_name => true,
1410
- :allowed_from_server => false,
1411
- :description => 'If <code>true</code>, disables instrumentation for the bunny gem.'
1497
+ :'elasticsearch.obfuscate_queries' => {
1498
+ :default => true,
1499
+ :public => true,
1500
+ :type => Boolean,
1501
+ :allowed_from_server => true,
1502
+ :description => 'If `true`, the agent obfuscates Elasticsearch queries in transaction traces.'
1412
1503
  },
1413
- :disable_curb => {
1414
- :default => false,
1415
- :public => true,
1416
- :type => Boolean,
1417
- :dynamic_name => true,
1504
+ # Heroku
1505
+ :'heroku.use_dyno_names' => {
1506
+ :default => true,
1507
+ :public => true,
1508
+ :type => Boolean,
1418
1509
  :allowed_from_server => false,
1419
- :description => 'If <code>true</code>, disables instrumentation for the curb gem.'
1510
+ :description => 'If `true`, the agent uses Heroku dyno names as the hostname.'
1420
1511
  },
1421
- :disable_excon => {
1422
- :default => false,
1423
- :public => true,
1424
- :type => Boolean,
1425
- :dynamic_name => true,
1512
+ :'heroku.dyno_name_prefixes_to_shorten' => {
1513
+ :default => %w[scheduler run],
1514
+ :public => true,
1515
+ :type => Array,
1426
1516
  :allowed_from_server => false,
1427
- :description => 'If <code>true</code>, disables instrumentation for the excon gem.'
1517
+ :transform => DefaultSource.method(:convert_to_list),
1518
+ :description => 'Ordinarily the agent reports dyno names with a trailing dot and process ID (for example, <b>worker.3</b>). You can remove this trailing data by specifying the prefixes you want to report without trailing data (for example, <b>worker</b>).'
1428
1519
  },
1429
- :disable_httpclient => {
1430
- :default => false,
1431
- :public => true,
1432
- :type => Boolean,
1433
- :dynamic_name => true,
1520
+ # Infinite tracing
1521
+ :'infinite_tracing.trace_observer.host' => {
1522
+ :default => '',
1523
+ :public => true,
1524
+ :type => String,
1434
1525
  :allowed_from_server => false,
1435
- :description => 'If <code>true</code>, disables instrumentation for the httpclient gem.'
1526
+ :external => :infinite_tracing,
1527
+ :description => "Configures the hostname for the Trace Observer Host. " \
1528
+ "When configured, enables tail-based sampling by sending all recorded spans " \
1529
+ "to a Trace Observer for further sampling decisions, irrespective of any usual " \
1530
+ "agent sampling decision."
1436
1531
  },
1437
- :disable_net_http => {
1438
- :default => false,
1439
- :public => true,
1440
- :type => Boolean,
1441
- :dynamic_name => true,
1532
+ :'infinite_tracing.trace_observer.port' => {
1533
+ :default => 443,
1534
+ :public => true,
1535
+ :type => Integer,
1442
1536
  :allowed_from_server => false,
1443
- :description => 'If <code>true</code>, disables instrumentation for Net::HTTP.'
1537
+ :external => :infinite_tracing,
1538
+ :description => "Configures the TCP/IP port for the Trace Observer Host"
1444
1539
  },
1445
- :disable_rack => {
1446
- :default => false,
1447
- :public => true,
1448
- :type => Boolean,
1540
+ # Instrumentation
1541
+ :'instrumentation.active_support_logger' => {
1542
+ :default => instrumentation_value_from_boolean(:'application_logging.enabled'),
1543
+ :documentation_default => 'auto',
1449
1544
  :dynamic_name => true,
1545
+ :public => true,
1546
+ :type => String,
1450
1547
  :allowed_from_server => false,
1451
- :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.'
1548
+ :description => 'Controls auto-instrumentation of ActiveSupport::Logger at start up. May be one of [auto|prepend|chain|disabled].'
1452
1549
  },
1453
- :disable_rack_urlmap => {
1454
- :default => false,
1455
- :public => true,
1456
- :type => Boolean,
1550
+ :'instrumentation.bunny' => {
1551
+ :default => instrumentation_value_of(:disable_bunny),
1552
+ :documentation_default => 'auto',
1553
+ :public => true,
1554
+ :type => String,
1457
1555
  :dynamic_name => true,
1458
1556
  :allowed_from_server => false,
1459
- :description => 'If <code>true</code>, prevents the agent from hooking into Rack::URLMap to install middleware tracing.'
1557
+ :description => 'Controls auto-instrumentation of bunny at start up. May be one of [auto|prepend|chain|disabled].'
1460
1558
  },
1461
- :disable_puma_rack => {
1462
- :default => value_of(:disable_rack),
1463
- :public => true,
1464
- :type => Boolean,
1559
+ :'instrumentation.curb' => {
1560
+ :default => instrumentation_value_of(:disable_curb),
1561
+ :documentation_default => 'auto',
1562
+ :public => true,
1563
+ :type => String,
1465
1564
  :dynamic_name => true,
1466
1565
  :allowed_from_server => false,
1467
- :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.'
1566
+ :description => 'Controls auto-instrumentation of Curb at start up. May be one of [auto|prepend|chain|disabled].'
1468
1567
  },
1469
- :disable_puma_rack_urlmap => {
1470
- :default => value_of(:disable_rack_urlmap),
1471
- :public => true,
1472
- :type => Boolean,
1568
+ :'instrumentation.delayed_job' => {
1569
+ :default => instrumentation_value_of(:disable_dj),
1570
+ :documentation_default => 'auto',
1571
+ :public => true,
1572
+ :type => String,
1473
1573
  :dynamic_name => true,
1474
1574
  :allowed_from_server => false,
1475
- :description => 'If <code>true</code>, prevents the agent from hooking into Puma::Rack::URLMap to install middleware tracing.'
1575
+ :description => 'Controls auto-instrumentation of Delayed Job at start up. May be one of [auto|prepend|chain|disabled].'
1476
1576
  },
1477
- :disable_typhoeus => {
1478
- :default => false,
1479
- :public => true,
1480
- :type => Boolean,
1577
+ :'instrumentation.elasticsearch' => {
1578
+ :default => 'auto',
1579
+ :public => true,
1580
+ :type => String,
1481
1581
  :dynamic_name => true,
1482
1582
  :allowed_from_server => false,
1483
- :description => 'If <code>true</code>, the agent won\'t install instrumentation for the typhoeus gem.'
1583
+ :description => 'Controls auto-instrumentation of the elasticsearch library at start up. May be one of [auto|prepend|chain|disabled].'
1484
1584
  },
1485
- :disable_httprb => {
1486
- :default => false,
1487
- :public => true,
1488
- :type => Boolean,
1585
+ :'instrumentation.excon' => {
1586
+ :default => instrumentation_value_of(:disable_excon),
1587
+ :documentation_default => 'enabled',
1588
+ :public => :true,
1589
+ :type => String,
1489
1590
  :dynamic_name => true,
1490
1591
  :allowed_from_server => false,
1491
- :description => 'If <code>true</code>, the agent won\'t install instrumentation for the http.rb gem.'
1492
- },
1493
- :disable_middleware_instrumentation => {
1494
- :default => false,
1495
- :public => true,
1496
- :type => Boolean,
1497
- :allowed_from_server => false,
1498
- :description => 'If <code>true</code>, the agent won\'t wrap third-party middlewares in instrumentation (regardless of whether they are installed via Rack::Builder or Rails).'
1592
+ :description => "Controls auto-instrumentation of Excon at start up. May be one of [enabled|disabled]."
1499
1593
  },
1500
- :disable_rails_middleware => {
1501
- :default => false,
1502
- :public => false,
1503
- :type => Boolean,
1504
- :allowed_from_server => false,
1505
- :description => 'Internal name for controlling Rails 3+ middleware instrumentation'
1506
- },
1507
- :'heroku.use_dyno_names' => {
1508
- :default => true,
1509
- :public => true,
1510
- :type => Boolean,
1594
+ :'instrumentation.grape' => {
1595
+ :default => instrumentation_value_of(:disable_grape_instrumentation),
1596
+ :documentation_default => 'auto',
1597
+ :public => :true,
1598
+ :type => String,
1599
+ :dynamic_name => true,
1511
1600
  :allowed_from_server => false,
1512
- :description => 'If <code>true</code>, the agent uses Heroku dyno names as the hostname.'
1601
+ :description => "Controls auto-instrumentation of Grape at start up. May be one of [auto|prepend|chain|disabled]."
1513
1602
  },
1514
- :'heroku.dyno_name_prefixes_to_shorten' => {
1515
- :default => ['scheduler', 'run'],
1516
- :public => true,
1517
- :type => Array,
1603
+ :'instrumentation.grpc_client' => {
1604
+ :default => instrumentation_value_of(:disable_grpc_client),
1605
+ :documentation_default => 'auto',
1606
+ :public => true,
1607
+ :type => String,
1608
+ :dynamic_name => true,
1518
1609
  :allowed_from_server => false,
1519
- :transform => DefaultSource.method(:convert_to_list),
1520
- :description => 'Ordinarily the agent reports dyno names with a trailing dot and process ID (for example, <b>worker.3</b>). You can remove this trailing data by specifying the prefixes you want to report without trailing data (for example, <b>worker</b>).'
1610
+ :description => 'Controls auto-instrumentation of gRPC clients at start up. May be one of [auto|prepend|chain|disabled].'
1521
1611
  },
1522
- :'process_host.display_name' => {
1523
- :default => Proc.new{ NewRelic::Agent::Hostname.get },
1524
- :public => true,
1525
- :type => String,
1612
+ :'instrumentation.grpc.host_denylist' => {
1613
+ :default => [],
1614
+ :public => true,
1615
+ :type => Array,
1526
1616
  :allowed_from_server => false,
1527
- :description => 'Specify a custom host name for <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/maintenance/add-rename-remove-hosts#display_name">display in the New Relic UI</a>.'
1617
+ :transform => DefaultSource.method(:convert_to_regexp_list),
1618
+ :description => %Q(Specifies a list of hostname patterns separated by commas that will match gRPC hostnames that traffic is to be ignored by New Relic for. New Relic's gRPC client instrumentation will ignore traffic streamed to a host matching any of these patterns, and New Relic's gRPC server instrumentation will ignore traffic for a server running on a host whose hostname matches any of these patterns. By default, no traffic is ignored when gRPC instrumentation is itself enabled. For example, "private.com$,exception.*")
1528
1619
  },
1529
- :labels => {
1530
- :default => '',
1531
- :public => true,
1532
- :type => String,
1620
+ :'instrumentation.grpc_server' => {
1621
+ :default => instrumentation_value_of(:disable_grpc_server),
1622
+ :documentation_default => 'auto',
1623
+ :public => true,
1624
+ :type => String,
1625
+ :dynamic_name => true,
1533
1626
  :allowed_from_server => false,
1534
- :description => 'A dictionary of <a href="/docs/data-analysis/user-interface-functions/labels-categories-organize-your-apps-servers">label names</a> and values that will be applied to the data sent from this agent. May also be expressed as a semicolon-delimited <code>;</code> string of colon-separated <code>:</code> pairs. For example, <code><var>Server</var>:<var>One</var>;<var>Data Center</var>:<var>Primary</var></code>.'
1535
- },
1536
- :aggressive_keepalive => {
1537
- :default => true,
1538
- :public => false,
1539
- :type => Boolean,
1540
- :allowed_from_server => true,
1541
- :description => 'If true, attempt to keep the TCP connection to the collector alive between harvests.'
1542
- },
1543
- :keep_alive_timeout => {
1544
- :default => 60,
1545
- :public => false,
1546
- :type => Integer,
1547
- :allowed_from_server => true,
1548
- :description => 'Timeout for keep alive on TCP connection to collector if supported by Ruby version. Only used in conjunction when aggressive_keepalive is enabled.'
1627
+ :description => 'Controls auto-instrumentation of gRPC servers at start up. May be one of [auto|prepend|chain|disabled].'
1549
1628
  },
1550
- :ca_bundle_path => {
1551
- :default => nil,
1552
- :allow_nil => true,
1553
- :public => true,
1554
- :type => String,
1629
+ :'instrumentation.httpclient' => {
1630
+ :default => instrumentation_value_of(:disable_httpclient),
1631
+ :documentation_default => 'auto',
1632
+ :public => true,
1633
+ :type => String,
1634
+ :dynamic_name => true,
1555
1635
  :allowed_from_server => false,
1556
- :description => "Manual override for the path to your local CA bundle. This CA bundle will be used to validate the SSL certificate presented by New Relic\'s data collection service."
1557
- },
1558
- :'rules.ignore_url_regexes' => {
1559
- :default => [],
1560
- :public => true,
1561
- :type => Array,
1562
- :allowed_from_server => true,
1563
- :transform => DefaultSource.method(:convert_to_regexp_list),
1564
- :description => 'Define transactions you want the agent to ignore, by specifying a list of patterns matching the URI you want to ignore.'
1565
- },
1566
- :'synthetics.traces_limit' => {
1567
- :default => 20,
1568
- :public => false,
1569
- :type => Integer,
1570
- :allowed_from_server => true,
1571
- :description => 'Maximum number of synthetics transaction traces to hold for a given harvest'
1572
- },
1573
- :'synthetics.events_limit' => {
1574
- :default => 200,
1575
- :public => false,
1576
- :type => Integer,
1577
- :allowed_from_server => true,
1578
- :description => 'Maximum number of synthetics transaction events to hold for a given harvest'
1579
- },
1580
- :'custom_insights_events.enabled' => {
1581
- :default => true,
1582
- :public => true,
1583
- :type => Boolean,
1584
- :allowed_from_server => true,
1585
- :description => 'If <code>true</code>, the agent captures <a href="/docs/insights/new-relic-insights/adding-querying-data/inserting-custom-events-new-relic-apm-agents">New Relic Insights custom events</a>.'
1586
- },
1587
- :'custom_insights_events.max_samples_stored' => {
1588
- :default => 1000,
1589
- :public => true,
1590
- :type => Integer,
1591
- :allowed_from_server => true,
1592
- :description => 'Specify a maximum number of custom Insights events to buffer in memory at a time.',
1593
- :dynamic_name => true
1636
+ :description => "Controls auto-instrumentation of HTTPClient at start up. May be one of [auto|prepend|chain|disabled]."
1594
1637
  },
1595
- :disable_grape_instrumentation => {
1596
- :default => false,
1597
- :public => false,
1598
- :type => Boolean,
1638
+ :'instrumentation.httprb' => {
1639
+ :default => instrumentation_value_of(:disable_httprb),
1640
+ :documentation_default => 'auto',
1641
+ :public => true,
1642
+ :type => String,
1643
+ :dynamic_name => true,
1599
1644
  :allowed_from_server => false,
1600
- :description => 'If <code>true</code>, the agent won\'t install Grape instrumentation.'
1645
+ :description => 'Controls auto-instrumentation of http.rb gem at start up. May be one of [auto|prepend|chain|disabled].'
1601
1646
  },
1602
- :disable_grape => {
1603
- :default => false,
1604
- :public => true,
1605
- :type => Boolean,
1647
+ :'instrumentation.logger' => {
1648
+ :default => instrumentation_value_from_boolean(:'application_logging.enabled'),
1649
+ :documentation_default => 'auto',
1650
+ :public => true,
1651
+ :type => String,
1652
+ :dynamic_name => true,
1606
1653
  :allowed_from_server => false,
1607
- :description => 'If <code>true</code>, the agent won\'t install Grape instrumentation.'
1654
+ :description => 'Controls auto-instrumentation of Ruby standard library Logger at start up. May be one of [auto|prepend|chain|disabled].'
1608
1655
  },
1609
- :'attributes.enabled' => {
1610
- :default => true,
1611
- :public => true,
1612
- :type => Boolean,
1656
+ :'instrumentation.memcache' => {
1657
+ :default => instrumentation_value_of(:disable_dalli),
1658
+ :documentation_default => 'auto',
1659
+ :public => true,
1660
+ :type => String,
1661
+ :dynamic_name => true,
1613
1662
  :allowed_from_server => false,
1614
- :description => 'If <code>true</code>, enables capture of attributes for all destinations.'
1663
+ :description => 'Controls auto-instrumentation of dalli gem for Memcache at start up. May be one of [auto|prepend|chain|disabled].'
1615
1664
  },
1616
- :'transaction_tracer.attributes.enabled' => {
1617
- :default => value_of(:'transaction_tracer.capture_attributes'),
1618
- :public => true,
1619
- :type => Boolean,
1665
+ :'instrumentation.memcached' => {
1666
+ :default => instrumentation_value_of(:disable_memcached),
1667
+ :documentation_default => 'auto',
1668
+ :public => true,
1669
+ :type => String,
1670
+ :dynamic_name => true,
1620
1671
  :allowed_from_server => false,
1621
- :description => 'If <code>true</code>, the agent captures attributes from transaction traces.'
1672
+ :description => 'Controls auto-instrumentation of memcached gem for Memcache at start up. May be one of [auto|prepend|chain|disabled].'
1622
1673
  },
1623
- :'transaction_events.attributes.enabled' => {
1624
- :default => value_of(:'analytics_events.capture_attributes'),
1625
- :public => true,
1626
- :type => Boolean,
1674
+ :'instrumentation.memcache_client' => {
1675
+ :default => instrumentation_value_of(:disable_memcache_client),
1676
+ :documentation_default => 'auto',
1677
+ :public => true,
1678
+ :type => String,
1679
+ :dynamic_name => true,
1627
1680
  :allowed_from_server => false,
1628
- :description => 'If <code>true</code>, the agent captures attributes from transaction events.'
1681
+ :description => 'Controls auto-instrumentation of memcache-client gem for Memcache at start up. May be one of [auto|prepend|chain|disabled].'
1629
1682
  },
1630
- :'error_collector.attributes.enabled' => {
1631
- :default => value_of(:'error_collector.capture_attributes'),
1632
- :public => true,
1633
- :type => Boolean,
1683
+ :'instrumentation.mongo' => {
1684
+ :default => instrumentation_value_of(:disable_mongo),
1685
+ :documentation_default => 'enabled',
1686
+ :public => :true,
1687
+ :type => String,
1688
+ :dynamic_name => true,
1634
1689
  :allowed_from_server => false,
1635
- :description => 'If <code>true</code>, the agent captures attributes from error collection.'
1690
+ :description => "Controls auto-instrumentation of Mongo at start up. May be one of [enabled|disabled]."
1636
1691
  },
1637
- :'browser_monitoring.attributes.enabled' => {
1638
- :default => value_of(:'browser_monitoring.capture_attributes'),
1639
- :public => true,
1640
- :type => Boolean,
1692
+ :'instrumentation.net_http' => {
1693
+ :default => instrumentation_value_of(:disable_net_http, :prepend_net_instrumentation),
1694
+ :documentation_default => 'auto',
1695
+ :public => true,
1696
+ :type => String,
1697
+ :dynamic_name => true,
1641
1698
  :allowed_from_server => false,
1642
- :description => 'If <code>true</code>, the agent captures attributes from browser monitoring.'
1699
+ :description => "Controls auto-instrumentation of Net::HTTP at start up. May be one of [auto|prepend|chain|disabled]."
1643
1700
  },
1644
- :'span_events.attributes.enabled' => {
1645
- :default => true,
1646
- :public => true,
1647
- :type => Boolean,
1701
+ :'instrumentation.puma_rack' => {
1702
+ :default => instrumentation_value_of(:disable_puma_rack), # TODO: MAJOR VERSION - change to value_of(:'instrumentation.rack') when we remove :disable_puma_rack in 8.0)
1703
+ :documentation_default => 'auto',
1704
+ :public => true,
1705
+ :type => String,
1706
+ :dynamic_name => true,
1648
1707
  :allowed_from_server => false,
1649
- :description => 'If <code>true</code>, the agent captures attributes on span events.'
1708
+ :description => "Controls auto-instrumentation of Puma::Rack. When enabled, the agent hooks into the " \
1709
+ "`to_app` method in Puma::Rack::Builder to find gems to instrument during " \
1710
+ "application startup. May be one of [auto|prepend|chain|disabled]."
1650
1711
  },
1651
- :'transaction_segments.attributes.enabled' => {
1652
- :default => true,
1653
- :public => true,
1654
- :type => Boolean,
1712
+ :'instrumentation.puma_rack_urlmap' => {
1713
+ :default => instrumentation_value_of(:disable_puma_rack_urlmap), # TODO: MAJOR VERSION - change to value_of(:'instrumentation.rack_urlmap') when we remove :disable_puma_rack_urlmap in 8.0)
1714
+ :documentation_default => 'auto',
1715
+ :public => true,
1716
+ :type => String,
1717
+ :dynamic_name => true,
1655
1718
  :allowed_from_server => false,
1656
- :description => 'If <code>true</code>, the agent captures attributes on transaction segments.'
1719
+ :description => 'Controls auto-instrumentation of Puma::Rack::URLMap at start up. May be one of [auto|prepend|chain|disabled].'
1657
1720
  },
1658
- :'attributes.exclude' => {
1659
- :default => [],
1660
- :public => true,
1661
- :type => Array,
1721
+ :'instrumentation.rack' => {
1722
+ :default => instrumentation_value_of(:disable_rack),
1723
+ :documentation_default => 'auto',
1724
+ :public => true,
1725
+ :type => String,
1726
+ :dynamic_name => true,
1662
1727
  :allowed_from_server => false,
1663
- :transform => DefaultSource.method(:convert_to_list),
1664
- :description => 'Prefix of attributes to exclude from all destinations. Allows <code>*</code> as wildcard at end.'
1728
+ :description => "Controls auto-instrumentation of Rack. When enabled, the agent hooks into the " \
1729
+ "`to_app` method in Rack::Builder to find gems to instrument during " \
1730
+ "application startup. May be one of [auto|prepend|chain|disabled]."
1665
1731
  },
1666
- :'transaction_tracer.attributes.exclude' => {
1667
- :default => [],
1668
- :public => true,
1669
- :type => Array,
1732
+ :'instrumentation.rack_urlmap' => {
1733
+ :default => instrumentation_value_of(:disable_rack_urlmap),
1734
+ :documentation_default => 'auto',
1735
+ :public => true,
1736
+ :type => String,
1737
+ :dynamic_name => true,
1670
1738
  :allowed_from_server => false,
1671
- :transform => DefaultSource.method(:convert_to_list),
1672
- :description => 'Prefix of attributes to exclude from transaction traces. Allows <code>*</code> as wildcard at end.'
1739
+ :description => 'Controls auto-instrumentation of Rack::URLMap at start up. May be one of [auto|prepend|chain|disabled].'
1673
1740
  },
1674
- :'transaction_events.attributes.exclude' => {
1675
- :default => [],
1676
- :public => true,
1677
- :type => Array,
1741
+ :'instrumentation.rake' => {
1742
+ :default => instrumentation_value_of(:disable_rake),
1743
+ :documentation_default => 'auto',
1744
+ :public => :true,
1745
+ :type => String,
1746
+ :dynamic_name => true,
1678
1747
  :allowed_from_server => false,
1679
- :transform => DefaultSource.method(:convert_to_list),
1680
- :description => 'Prefix of attributes to exclude from transaction events. Allows <code>*</code> as wildcard at end.'
1748
+ :description => "Controls auto-instrumentation of rake at start up. May be one of [auto|prepend|chain|disabled]."
1681
1749
  },
1682
- :'error_collector.attributes.exclude' => {
1683
- :default => [],
1684
- :public => true,
1685
- :type => Array,
1750
+ :'instrumentation.redis' => {
1751
+ :default => instrumentation_value_of(:disable_redis),
1752
+ :documentation_default => 'auto',
1753
+ :public => true,
1754
+ :type => String,
1755
+ :dynamic_name => true,
1686
1756
  :allowed_from_server => false,
1687
- :transform => DefaultSource.method(:convert_to_list),
1688
- :description => 'Prefix of attributes to exclude from error collection. Allows <code>*</code> as wildcard at end.'
1757
+ :description => "Controls auto-instrumentation of Redis at start up. May be one of [auto|prepend|chain|disabled]."
1689
1758
  },
1690
- :'browser_monitoring.attributes.exclude' => {
1691
- :default => [],
1692
- :public => true,
1693
- :type => Array,
1759
+ :'instrumentation.resque' => {
1760
+ :default => instrumentation_value_of(:disable_resque),
1761
+ :documentation_default => 'auto',
1762
+ :public => true,
1763
+ :type => String,
1764
+ :dynamic_name => true,
1694
1765
  :allowed_from_server => false,
1695
- :transform => DefaultSource.method(:convert_to_list),
1696
- :description => 'Prefix of attributes to exclude from browser monitoring. Allows <code>*</code> as wildcard at end.'
1766
+ :description => "Controls auto-instrumentation of resque at start up. May be one of [auto|prepend|chain|disabled]."
1697
1767
  },
1698
- :'span_events.attributes.exclude' => {
1699
- :default => [],
1700
- :public => true,
1701
- :type => Array,
1768
+ :'instrumentation.sinatra' => {
1769
+ :default => instrumentation_value_of(:disable_sinatra),
1770
+ :documentation_default => 'auto',
1771
+ :public => :true,
1772
+ :type => String,
1773
+ :dynamic_name => true,
1702
1774
  :allowed_from_server => false,
1703
- :transform => DefaultSource.method(:convert_to_list),
1704
- :description => 'Prefix of attributes to exclude from span events. Allows <code>*</code> as wildcard at end.'
1775
+ :description => "Controls auto-instrumentation of Sinatra at start up. May be one of [auto|prepend|chain|disabled]."
1705
1776
  },
1706
- :'transaction_segments.attributes.exclude' => {
1707
- :default => [],
1708
- :public => true,
1709
- :type => Array,
1777
+ :'instrumentation.thread' => {
1778
+ :default => 'auto',
1779
+ :public => true,
1780
+ :type => String,
1781
+ :dynamic_name => true,
1710
1782
  :allowed_from_server => false,
1711
- :transform => DefaultSource.method(:convert_to_list),
1712
- :description => 'Prefix of attributes to exclude from transaction segments. Allows <code>*</code> as wildcard at end.'
1783
+ :description => "Controls auto-instrumentation of the Thread class at start up to allow the agent to correctly nest spans inside of an asynchronous transaction. This does not enable the agent to automatically trace all threads created (see `instrumentation.thread.tracing`). May be one of [auto|prepend|chain|disabled]."
1713
1784
  },
1714
- :'attributes.include' => {
1715
- :default => [],
1716
- :public => true,
1717
- :type => Array,
1785
+ :'instrumentation.thread.tracing' => {
1786
+ :default => false,
1787
+ :public => true,
1788
+ :type => Boolean,
1718
1789
  :allowed_from_server => false,
1719
- :transform => DefaultSource.method(:convert_to_list),
1720
- :description => 'Prefix of attributes to include in all destinations. Allows <code>*</code> as wildcard at end.'
1790
+ :description => "Controls auto-instrumentation of the Thread class at start up to automatically add tracing to all Threads created in the application."
1721
1791
  },
1722
- :'transaction_tracer.attributes.include' => {
1723
- :default => [],
1724
- :public => true,
1725
- :type => Array,
1792
+ :'instrumentation.tilt' => {
1793
+ :default => "auto",
1794
+ :public => true,
1795
+ :type => String,
1796
+ :dynamic_name => true,
1726
1797
  :allowed_from_server => false,
1727
- :transform => DefaultSource.method(:convert_to_list),
1728
- :description => 'Prefix of attributes to include in transaction traces. Allows <code>*</code> as wildcard at end.'
1798
+ :description => 'Controls auto-instrumentation of the Tilt template rendering library at start up. May be one of [auto|prepend|chain|disabled].'
1729
1799
  },
1730
- :'transaction_events.attributes.include' => {
1731
- :default => [],
1732
- :public => true,
1733
- :type => Array,
1800
+ :'instrumentation.typhoeus' => {
1801
+ :default => instrumentation_value_of(:disable_typhoeus),
1802
+ :documentation_default => 'auto',
1803
+ :public => true,
1804
+ :type => String,
1805
+ :dynamic_name => true,
1734
1806
  :allowed_from_server => false,
1735
- :transform => DefaultSource.method(:convert_to_list),
1736
- :description => 'Prefix of attributes to include in transaction events. Allows <code>*</code> as wildcard at end.'
1807
+ :description => "Controls auto-instrumentation of Typhoeus at start up. May be one of [auto|prepend|chain|disabled]."
1737
1808
  },
1738
- :'error_collector.attributes.include' => {
1739
- :default => [],
1740
- :public => true,
1741
- :type => Array,
1742
- :allowed_from_server => false,
1743
- :transform => DefaultSource.method(:convert_to_list),
1744
- :description => 'Prefix of attributes to include in error collection. Allows <code>*</code> as wildcard at end.'
1809
+ # Message tracer
1810
+ :'message_tracer.segment_parameters.enabled' => {
1811
+ :default => true,
1812
+ :public => true,
1813
+ :type => Boolean,
1814
+ :allowed_from_server => true,
1815
+ :description => 'If `true`, the agent will collect metadata about messages and attach them as segment parameters.'
1745
1816
  },
1746
- :'browser_monitoring.attributes.include' => {
1747
- :default => [],
1748
- :public => true,
1749
- :type => Array,
1750
- :allowed_from_server => false,
1751
- :transform => DefaultSource.method(:convert_to_list),
1752
- :description => 'Prefix of attributes to include in browser monitoring. Allows <code>*</code> as wildcard at end.'
1817
+ # Mongo
1818
+ :'mongo.capture_queries' => {
1819
+ :default => true,
1820
+ :public => true,
1821
+ :type => Boolean,
1822
+ :allowed_from_server => true,
1823
+ :description => 'If `true`, the agent captures Mongo queries in transaction traces.'
1753
1824
  },
1754
- :'span_events.attributes.include' => {
1755
- :default => [],
1756
- :public => true,
1757
- :type => Array,
1758
- :allowed_from_server => false,
1759
- :transform => DefaultSource.method(:convert_to_list),
1760
- :description => 'Prefix of attributes to include on span events. Allows <code>*</code> as wildcard at end.'
1825
+ :'mongo.obfuscate_queries' => {
1826
+ :default => true,
1827
+ :public => true,
1828
+ :type => Boolean,
1829
+ :allowed_from_server => true,
1830
+ :description => 'If `true`, the agent obfuscates Mongo queries in transaction traces.'
1761
1831
  },
1762
- :'transaction_segments.attributes.include' => {
1763
- :default => [],
1764
- :public => true,
1765
- :type => Array,
1832
+ # Process host
1833
+ :'process_host.display_name' => {
1834
+ :default => proc { NewRelic::Agent::Hostname.get },
1835
+ :public => true,
1836
+ :type => String,
1766
1837
  :allowed_from_server => false,
1767
- :transform => DefaultSource.method(:convert_to_list),
1768
- :description => 'Prefix of attributes to include on transaction segments. Allows <code>*</code> as wildcard at end.'
1838
+ :description => 'Specify a custom host name for [display in the New Relic UI](/docs/apm/new-relic-apm/maintenance/add-rename-remove-hosts#display_name).'
1769
1839
  },
1770
- :'custom_attributes.enabled' => {
1771
- :default => true,
1772
- :public => true,
1773
- :type => Boolean,
1840
+ # Rake
1841
+ :'rake.tasks' => {
1842
+ :default => [],
1843
+ :public => true,
1844
+ :type => Array,
1774
1845
  :allowed_from_server => false,
1775
- :description => 'If <code>false</code>, custom attributes will not be sent on Insights events.'
1846
+ :transform => DefaultSource.method(:convert_to_regexp_list),
1847
+ :description => 'Specify an Array of Rake tasks to automatically instrument. ' \
1848
+ 'This configuration option converts the Array to a RegEx list. If you\'d like ' \
1849
+ 'to allow all tasks by default, use `rake.tasks: [.+]`. No rake tasks will be ' \
1850
+ 'instrumented unless they\'re added to this list. For more information, ' \
1851
+ 'visit the (New Relic Rake Instrumentation docs)[/docs/apm/agents/ruby-agent/background-jobs/rake-instrumentation].'
1776
1852
  },
1777
- :'utilization.detect_aws' => {
1778
- :default => true,
1779
- :public => true,
1780
- :type => Boolean,
1853
+ :'rake.connect_timeout' => {
1854
+ :default => 10,
1855
+ :public => true,
1856
+ :type => Integer,
1781
1857
  :allowed_from_server => false,
1782
- :dynamic_name => true,
1783
- :description => 'If <code>true</code>, the agent automatically detects that it is running in an AWS environment.'
1858
+ :description => 'Timeout for waiting on connect to complete before a rake task'
1784
1859
  },
1785
- :'utilization.detect_azure' => {
1786
- :default => true,
1787
- :public => true,
1788
- :type => Boolean,
1860
+ # Resque
1861
+ :'resque.capture_params' => {
1862
+ :default => false,
1863
+ :public => true,
1864
+ :type => Boolean,
1789
1865
  :allowed_from_server => false,
1790
1866
  :dynamic_name => true,
1791
- :description => 'If <code>true</code>, the agent automatically detects that it is running in an Azure environment.'
1867
+ :deprecated => true,
1868
+ :description => 'If `true`, enables the capture of job arguments for transaction traces and traced errors in Resque.'
1792
1869
  },
1793
- :'utilization.detect_gcp' => {
1794
- :default => true,
1795
- :public => true,
1796
- :type => Boolean,
1797
- :allowed_from_server => false,
1798
- :dynamic_name => true,
1799
- :description => 'If <code>true</code>, the agent automatically detects that it is running in an Google Cloud Platform environment.'
1870
+ # Rules
1871
+ :'rules.ignore_url_regexes' => {
1872
+ :default => [],
1873
+ :public => true,
1874
+ :type => Array,
1875
+ :allowed_from_server => true,
1876
+ :transform => DefaultSource.method(:convert_to_regexp_list),
1877
+ :description => 'Define transactions you want the agent to ignore, by specifying a list of patterns matching the URI you want to ignore. See documentation on (ignoring specific transactions)[https://docs.newrelic.com/docs/agents/ruby-agent/api-guides/ignoring-specific-transactions/#config-ignoring] for more details.'
1800
1878
  },
1801
- :'utilization.detect_pcf' => {
1802
- :default => true,
1803
- :public => true,
1804
- :type => Boolean,
1879
+ # Sidekiq
1880
+ :'sidekiq.capture_params' => {
1881
+ :default => false,
1882
+ :public => true,
1883
+ :type => Boolean,
1805
1884
  :allowed_from_server => false,
1806
1885
  :dynamic_name => true,
1807
- :description => 'If <code>true</code>, the agent automatically detects that it is running in a Pivotal Cloud Foundry environment.'
1886
+ :deprecated => true,
1887
+ :description => 'If `true`, enables the capture of job arguments for transaction traces and traced errors in Sidekiq.'
1808
1888
  },
1809
- :'utilization.detect_docker' => {
1810
- :default => true,
1811
- :public => true,
1812
- :type => Boolean,
1813
- :allowed_from_server => false,
1814
- :description => 'If <code>true</code>, the agent automatically detects that it is running in Docker.'
1889
+ # Slow SQL
1890
+ :'slow_sql.enabled' => {
1891
+ :default => value_of(:'transaction_tracer.enabled'),
1892
+ :documentation_default => true,
1893
+ :public => true,
1894
+ :type => Boolean,
1895
+ :allowed_from_server => true,
1896
+ :description => 'If `true`, the agent collects [slow SQL queries](/docs/apm/applications-menu/monitoring/viewing-slow-query-details).'
1897
+ },
1898
+ :'slow_sql.explain_threshold' => {
1899
+ :default => value_of(:'transaction_tracer.explain_threshold'),
1900
+ :documentation_default => 0.5,
1901
+ :public => true,
1902
+ :type => Float,
1903
+ :allowed_from_server => true,
1904
+ :description => 'Specify a threshold in seconds. The agent collects [slow SQL queries](/docs/apm/applications-menu/monitoring/viewing-slow-query-details) and explain plans that exceed this threshold.'
1905
+ },
1906
+ :'slow_sql.explain_enabled' => {
1907
+ :default => value_of(:'transaction_tracer.explain_enabled'),
1908
+ :documentation_default => true,
1909
+ :public => true,
1910
+ :type => Boolean,
1911
+ :allowed_from_server => true,
1912
+ :description => 'If `true`, the agent collects explain plans in slow SQL queries. If this setting is omitted, the [`transaction_tracer.explain_enabled`](#transaction_tracer-explain_enabled) setting will be applied as the default setting for explain plans in slow SQL as well.'
1913
+ },
1914
+ :'slow_sql.record_sql' => {
1915
+ :default => value_of(:'transaction_tracer.record_sql'),
1916
+ :documentation_default => 'obfuscated',
1917
+ :public => true,
1918
+ :type => String,
1919
+ :allowed_from_server => true,
1920
+ :description => 'Defines an obfuscation level for slow SQL queries. Valid options are `obfuscated`, `raw`, or `none`).'
1921
+ },
1922
+ :'slow_sql.use_longer_sql_id' => {
1923
+ :default => false,
1924
+ :public => true,
1925
+ :type => Boolean,
1926
+ :allowed_from_server => true,
1927
+ :description => 'Generate a longer sql_id for slow SQL traces. sql_id is used for aggregation of similar queries.'
1928
+ },
1929
+ # Span events
1930
+ :'span_events.enabled' => {
1931
+ :default => true,
1932
+ :public => true,
1933
+ :type => Boolean,
1934
+ :allowed_from_server => true,
1935
+ :description => 'If `true`, enables span event sampling.'
1936
+ },
1937
+ :'span_events.queue_size' => {
1938
+ :default => 10_000,
1939
+ :public => true,
1940
+ :type => Integer,
1941
+ :allowed_from_server => false,
1942
+ :external => :infinite_tracing,
1943
+ :description => "Sets the maximum number of span events to buffer when streaming to the trace observer."
1944
+ },
1945
+ :'span_events.max_samples_stored' => {
1946
+ :default => 2000,
1947
+ :public => true,
1948
+ :type => Integer,
1949
+ :allowed_from_server => true,
1950
+ :description => 'Defines the maximum number of span events reported from a single harvest. Any Integer between 1 and 10000 is valid.'
1951
+ },
1952
+ # Strip exception messages
1953
+ :'strip_exception_messages.enabled' => {
1954
+ :default => value_of(:high_security),
1955
+ :documentation_default => false,
1956
+ :public => true,
1957
+ :type => Boolean,
1958
+ :allowed_from_server => false,
1959
+ :description => 'If true, the agent strips messages from all exceptions except those in the [allowlist](#strip_exception_messages-allowlist). Enabled automatically in [high security mode](/docs/accounts-partnerships/accounts/security/high-security).'
1960
+ },
1961
+ :'strip_exception_messages.allowed_classes' => {
1962
+ :default => '',
1963
+ :public => true,
1964
+ :type => String,
1965
+ :allowed_from_server => false,
1966
+ :transform => DefaultSource.method(:convert_to_constant_list),
1967
+ :description => 'Specify a list of exceptions you do not want the agent to strip when [strip_exception_messages](#strip_exception_messages-enabled) is `true`. Separate exceptions with a comma. For example, `"ImportantException,PreserveMessageException"`.'
1968
+ },
1969
+ # Thread profiler
1970
+ :'thread_profiler.enabled' => {
1971
+ :default => DefaultSource.thread_profiler_enabled,
1972
+ :documentation_default => false,
1973
+ :public => true,
1974
+ :type => Boolean,
1975
+ :allowed_from_server => true,
1976
+ :description => 'If `true`, enables use of the [thread profiler](/docs/apm/applications-menu/events/thread-profiler-tool).'
1977
+ },
1978
+ # Utilization
1979
+ :'utilization.detect_aws' => {
1980
+ :default => true,
1981
+ :public => true,
1982
+ :type => Boolean,
1983
+ :allowed_from_server => false,
1984
+ :dynamic_name => true,
1985
+ :description => 'If `true`, the agent automatically detects that it is running in an AWS environment.'
1986
+ },
1987
+ :'utilization.detect_azure' => {
1988
+ :default => true,
1989
+ :public => true,
1990
+ :type => Boolean,
1991
+ :allowed_from_server => false,
1992
+ :dynamic_name => true,
1993
+ :description => 'If `true`, the agent automatically detects that it is running in an Azure environment.'
1994
+ },
1995
+ :'utilization.detect_docker' => {
1996
+ :default => true,
1997
+ :public => true,
1998
+ :type => Boolean,
1999
+ :allowed_from_server => false,
2000
+ :description => 'If `true`, the agent automatically detects that it is running in Docker.'
2001
+ },
2002
+ :'utilization.detect_gcp' => {
2003
+ :default => true,
2004
+ :public => true,
2005
+ :type => Boolean,
2006
+ :allowed_from_server => false,
2007
+ :dynamic_name => true,
2008
+ :description => 'If `true`, the agent automatically detects that it is running in an Google Cloud Platform environment.'
1815
2009
  },
1816
2010
  :'utilization.detect_kubernetes' => {
1817
- :default => true,
1818
- :public => true,
1819
- :type => Boolean,
2011
+ :default => true,
2012
+ :public => true,
2013
+ :type => Boolean,
2014
+ :allowed_from_server => false,
2015
+ :description => 'If `true`, the agent automatically detects that it is running in Kubernetes.'
2016
+ },
2017
+ :'utilization.detect_pcf' => {
2018
+ :default => true,
2019
+ :public => true,
2020
+ :type => Boolean,
2021
+ :allowed_from_server => false,
2022
+ :dynamic_name => true,
2023
+ :description => 'If `true`, the agent automatically detects that it is running in a Pivotal Cloud Foundry environment.'
2024
+ },
2025
+ # Private
2026
+ :account_id => {
2027
+ :default => nil,
2028
+ :allow_nil => true,
2029
+ :public => false,
2030
+ :type => String,
2031
+ :allowed_from_server => true,
2032
+ :description => 'The account id associated with your application.'
2033
+ },
2034
+ :aggressive_keepalive => {
2035
+ :default => true,
2036
+ :public => false,
2037
+ :type => Boolean,
2038
+ :allowed_from_server => true,
2039
+ :description => 'If true, attempt to keep the TCP connection to the collector alive between harvests.'
2040
+ },
2041
+ :api_host => {
2042
+ :default => DefaultSource.api_host,
2043
+ :public => false,
2044
+ :type => String,
2045
+ :allowed_from_server => false,
2046
+ :description => 'API host for New Relic.'
2047
+ },
2048
+ :api_port => {
2049
+ :default => value_of(:port),
2050
+ :public => false,
2051
+ :type => Integer,
2052
+ :allowed_from_server => false,
2053
+ :description => 'Port for the New Relic API host.'
2054
+ },
2055
+ :application_id => {
2056
+ :default => '',
2057
+ :public => false,
2058
+ :type => String,
2059
+ :allowed_from_server => true,
2060
+ :description => 'Application ID for real user monitoring.'
2061
+ },
2062
+ :beacon => {
2063
+ :default => '',
2064
+ :public => false,
2065
+ :type => String,
2066
+ :allowed_from_server => true,
2067
+ :description => 'Beacon for real user monitoring.'
2068
+ },
2069
+ :browser_key => {
2070
+ :default => '',
2071
+ :public => false,
2072
+ :type => String,
2073
+ :allowed_from_server => true,
2074
+ :description => 'Real user monitoring license key for the browser timing header.'
2075
+ },
2076
+ :'browser_monitoring.loader' => {
2077
+ :default => DefaultSource.browser_monitoring_loader,
2078
+ :public => false,
2079
+ :type => String,
2080
+ :allowed_from_server => true,
2081
+ :description => 'Type of JavaScript agent loader to use for browser monitoring instrumentation.'
2082
+ },
2083
+ :'browser_monitoring.loader_version' => {
2084
+ :default => '',
2085
+ :public => false,
2086
+ :type => String,
2087
+ :allowed_from_server => true,
2088
+ :description => 'Version of JavaScript agent loader (returned from the New Relic [collector](/docs/apm/new-relic-apm/getting-started/glossary#collector).)'
2089
+ },
2090
+ :'browser_monitoring.debug' => {
2091
+ :default => false,
2092
+ :public => false,
2093
+ :type => Boolean,
2094
+ :allowed_from_server => true,
2095
+ :description => 'Enable or disable debugging version of JavaScript agent loader for browser monitoring instrumentation.'
2096
+ },
2097
+ :'browser_monitoring.ssl_for_http' => {
2098
+ :default => nil,
2099
+ :allow_nil => true,
2100
+ :public => false,
2101
+ :type => Boolean,
2102
+ :allowed_from_server => true,
2103
+ :description => 'Enable or disable HTTPS instrumentation by JavaScript agent on HTTP pages.'
2104
+ },
2105
+ :compressed_content_encoding => {
2106
+ :default => 'gzip',
2107
+ :public => false,
2108
+ :type => String,
2109
+ :allowed_from_server => false,
2110
+ :description => 'Encoding to use if data needs to be compressed. The options are deflate and gzip.'
2111
+ },
2112
+ :config_search_paths => {
2113
+ :default => DefaultSource.config_search_paths,
2114
+ :public => false,
2115
+ :type => Array,
2116
+ :allowed_from_server => false,
2117
+ :description => "An array of candidate locations for the agent's configuration file."
2118
+ },
2119
+ :cross_process_id => {
2120
+ :default => '',
2121
+ :public => false,
2122
+ :type => String,
2123
+ :allowed_from_server => true,
2124
+ :description => 'Cross process ID for cross-application tracing.'
2125
+ },
2126
+ :data_report_period => {
2127
+ :default => 60,
2128
+ :public => false,
2129
+ :type => Integer,
2130
+ :allowed_from_server => true,
2131
+ :description => 'Number of seconds betwixt connections to the New Relic data collection service.'
2132
+ },
2133
+ :disable_grape_instrumentation => {
2134
+ :default => false,
2135
+ :public => false,
2136
+ :type => Boolean,
2137
+ :allowed_from_server => false,
2138
+ :deprecated => true,
2139
+ :description => deprecated_description(:'instrumentation.grape',
2140
+ 'If `true`, the agent won\'t install Grape instrumentation.')
2141
+ },
2142
+ :dispatcher => {
2143
+ :default => DefaultSource.dispatcher,
2144
+ :public => false,
2145
+ :type => Symbol,
2146
+ :allowed_from_server => false,
2147
+ :description => 'Autodetected application component that reports metrics to New Relic.'
2148
+ },
2149
+ :disable_harvest_thread => {
2150
+ :default => false,
2151
+ :public => false,
2152
+ :type => Boolean,
2153
+ :allowed_from_server => false,
2154
+ :description => 'Enable or disable the harvest thread.'
2155
+ },
2156
+ :disable_rails_middleware => {
2157
+ :default => false,
2158
+ :public => false,
2159
+ :type => Boolean,
2160
+ :allowed_from_server => false,
2161
+ :description => 'Internal name for controlling Rails 3+ middleware instrumentation'
2162
+ },
2163
+ :disable_rake_instrumentation => {
2164
+ :default => false,
2165
+ :public => false,
2166
+ :type => Boolean,
2167
+ :allowed_from_server => false,
2168
+ :deprecated => true,
2169
+ :description => deprecated_description(:'instrumentation.rake', 'Enable or disable Rake instrumentation. Preferred key is `disable_rake`')
2170
+ },
2171
+ :disable_redis_instrumentation => {
2172
+ :default => false,
2173
+ :public => false,
2174
+ :type => Boolean,
2175
+ :deprecated => true,
2176
+ :allowed_from_server => false,
2177
+ :description => deprecated_description(:'instrumentation.redis', 'Disables installation of Redis instrumentation. Standard key to use is disable_redis.')
2178
+ },
2179
+ :cross_application_tracing => {
2180
+ :default => nil,
2181
+ :allow_nil => true,
2182
+ :public => false,
2183
+ :type => Boolean,
2184
+ :allowed_from_server => false,
2185
+ :deprecated => true,
2186
+ :description => 'Deprecated in favor of distributed_tracing.enabled'
2187
+ },
2188
+ :enabled => {
2189
+ :default => true,
2190
+ :public => false,
2191
+ :type => Boolean,
2192
+ :aliases => [:enable],
2193
+ :allowed_from_server => false,
2194
+ :description => 'Enable or disable the agent.'
2195
+ },
2196
+ :encoding_key => {
2197
+ :default => '',
2198
+ :public => false,
2199
+ :type => String,
2200
+ :allowed_from_server => true,
2201
+ :description => 'Encoding key for cross-application tracing.'
2202
+ },
2203
+ :entity_guid => {
2204
+ :default => nil,
2205
+ :allow_nil => true,
2206
+ :public => false,
2207
+ :type => String,
2208
+ :allowed_from_server => true,
2209
+ :description => 'The [Entity GUID](/attribute-dictionary/span/entityguid) for the entity running your agent.'
2210
+ },
2211
+ :error_beacon => {
2212
+ :default => '',
2213
+ :public => false,
2214
+ :type => String,
2215
+ :allowed_from_server => true,
2216
+ :description => 'Error beacon for real user monitoring.'
2217
+ },
2218
+ :event_report_period => {
2219
+ :default => 60,
2220
+ :public => false,
2221
+ :type => Integer,
2222
+ :allowed_from_server => true,
2223
+ :description => 'Number of seconds betwixt connections to the New Relic event collection services.'
2224
+ },
2225
+ :'event_report_period.analytic_event_data' => {
2226
+ :default => 60,
2227
+ :public => false,
2228
+ :type => Integer,
2229
+ :dynamic_name => true,
2230
+ :deprecated => true,
2231
+ :allowed_from_server => true,
2232
+ :description => deprecated_description(:'event_report_period.transaction_event_data', 'Number of seconds betwixt connections to the New Relic transaction event collection services.')
2233
+ },
2234
+ :'event_report_period.transaction_event_data' => {
2235
+ :default => value_of(:'event_report_period.analytic_event_data'),
2236
+ :public => false,
2237
+ :type => Integer,
2238
+ :dynamic_name => true,
2239
+ :allowed_from_server => true,
2240
+ :description => 'Number of seconds betwixt connections to the New Relic transaction event collection services.'
2241
+ },
2242
+ :'event_report_period.custom_event_data' => {
2243
+ :default => 60,
2244
+ :public => false,
2245
+ :type => Integer,
2246
+ :dynamic_name => true,
2247
+ :allowed_from_server => true,
2248
+ :description => 'Number of seconds betwixt connections to the New Relic custom event collection services.'
2249
+ },
2250
+ :'event_report_period.error_event_data' => {
2251
+ :default => 60,
2252
+ :public => false,
2253
+ :type => Integer,
2254
+ :dynamic_name => true,
2255
+ :allowed_from_server => true,
2256
+ :description => 'Number of seconds betwixt connections to the New Relic error event collection services.'
2257
+ },
2258
+ :'event_report_period.log_event_data' => {
2259
+ :default => 60,
2260
+ :public => false,
2261
+ :type => Integer,
2262
+ :dynamic_name => true,
2263
+ :allowed_from_server => true,
2264
+ :description => 'Number of seconds betwixt connections to the New Relic log event collection services.'
2265
+ },
2266
+ :'event_report_period.span_event_data' => {
2267
+ :default => 60,
2268
+ :public => false,
2269
+ :type => Integer,
2270
+ :dynamic_name => true,
2271
+ :allowed_from_server => true,
2272
+ :description => 'Number of seconds betwixt connections to the New Relic span event collection services.'
2273
+ },
2274
+ :force_reconnect => {
2275
+ :default => false,
2276
+ :public => false,
2277
+ :type => Boolean,
1820
2278
  :allowed_from_server => false,
1821
- :description => 'If <code>true</code>, the agent automatically detects that it is running in Kubernetes.'
2279
+ :description => 'Force a new connection to the server before running the worker loop. Creates a separate agent run and is recorded as a separate instance by the New Relic data collection service.'
1822
2280
  },
1823
- :'utilization.billing_hostname' => {
1824
- :default => nil,
1825
- :allow_nil => true,
1826
- :public => false,
1827
- :type => String,
2281
+ :framework => {
2282
+ :default => DefaultSource.framework,
2283
+ :public => false,
2284
+ :type => Symbol,
1828
2285
  :allowed_from_server => false,
1829
- :description => 'The configured server name by a customer.'
2286
+ :description => 'Autodetected application framework used to enable framework-specific functionality.'
1830
2287
  },
1831
- :'utilization.logical_processors' => {
1832
- :default => nil,
1833
- :allow_nil => true,
1834
- :public => false,
1835
- :type => Integer,
2288
+ :host => {
2289
+ :default => DefaultSource.host,
2290
+ :public => false,
2291
+ :type => String,
1836
2292
  :allowed_from_server => false,
1837
- :description => 'The total number of hyper-threaded execution contexts available.'
2293
+ :description => "URI for the New Relic data collection service."
1838
2294
  },
1839
- :'utilization.total_ram_mib' => {
1840
- :default => nil,
1841
- :allow_nil => true,
1842
- :public => false,
1843
- :type => Integer,
2295
+ :'infinite_tracing.batching' => {
2296
+ :default => false,
2297
+ :public => false,
2298
+ :type => Boolean,
1844
2299
  :allowed_from_server => false,
1845
- :description => 'This value represents the total amount of memory available to the host (not the process), in mebibytes (1024 squared or 1,048,576 bytes).'
2300
+ :external => :infinite_tracing,
2301
+ :description => "If true, data sent to the Trace Observer will be batched instead of the default of each " \
2302
+ "span being sent individually"
1846
2303
  },
1847
- :'datastore_tracer.instance_reporting.enabled' => {
1848
- :default => true,
1849
- :public => true,
1850
- :type => Boolean,
2304
+ :'infinite_tracing.compression_level' => {
2305
+ :default => :none,
2306
+ :public => false,
2307
+ :type => Symbol,
1851
2308
  :allowed_from_server => false,
1852
- :description => 'If <code>false</code>, the agent will not report datastore instance metrics, nor add <code>host</code> or <code>port_path_or_id</code> parameters to transaction or slow sql traces.'
2309
+ :external => :infinite_tracing,
2310
+ :description => "Configure the compression level for data sent to the Trace Observer\nMay be one of " \
2311
+ "[none|low|medium|high]\nBy default, compression is not used (level = none)"
1853
2312
  },
1854
- :'datastore_tracer.database_name_reporting.enabled' => {
1855
- :default => true,
1856
- :public => true,
1857
- :type => Boolean,
2313
+ :js_agent_file => {
2314
+ :default => '',
2315
+ :public => false,
2316
+ :type => String,
2317
+ :allowed_from_server => true,
2318
+ :description => 'JavaScript agent file for real user monitoring.'
2319
+ },
2320
+ :js_agent_loader => {
2321
+ :default => '',
2322
+ :public => false,
2323
+ :type => String,
2324
+ :allowed_from_server => true,
2325
+ :description => 'JavaScript agent loader content.'
2326
+ },
2327
+ :js_errors_beta => {
2328
+ :default => false,
2329
+ :public => false,
2330
+ :type => Boolean,
1858
2331
  :allowed_from_server => false,
1859
- :description => 'If <code>false</code>, the agent will not add <code>database_name</code> parameter to transaction or slow sql traces.'
2332
+ :deprecated => true,
2333
+ :description => 'Enable or disable beta JavaScript error reporting.'
1860
2334
  },
1861
- :'clear_transaction_state_after_fork' => {
1862
- :default => false,
1863
- :public => true,
1864
- :type => Boolean,
2335
+ :keep_alive_timeout => {
2336
+ :default => 60,
2337
+ :public => false,
2338
+ :type => Integer,
2339
+ :allowed_from_server => true,
2340
+ :description => 'Timeout for keep alive on TCP connection to collector if supported by Ruby version. Only used in conjunction when aggressive_keepalive is enabled.'
2341
+ },
2342
+ :keep_retrying => {
2343
+ :default => true,
2344
+ :public => false,
2345
+ :type => Boolean,
2346
+ :deprecated => true,
1865
2347
  :allowed_from_server => false,
1866
- :description => 'If <code>true</code>, the agent will clear <code>Tracer::State</code> in <code>Agent.drop_buffered_data</code>.'
2348
+ :description => 'Enable or disable retrying failed connections to the New Relic data collection service.'
1867
2349
  },
1868
- :account_id => {
1869
- :default => nil,
1870
- :allow_nil => true,
2350
+ :max_payload_size_in_bytes => {
2351
+ :default => 1000000,
1871
2352
  :public => false,
1872
- :type => String,
2353
+ :type => Integer,
1873
2354
  :allowed_from_server => true,
1874
- :description => 'The account id associated with this application.'
2355
+ :description => 'Maximum number of bytes to send to the New Relic data collection service.'
2356
+ },
2357
+ :normalize_json_string_encodings => {
2358
+ :default => true,
2359
+ :public => false,
2360
+ :type => Boolean,
2361
+ :allowed_from_server => false,
2362
+ :description => 'Controls whether to normalize string encodings prior to serializing data for the collector to JSON.'
2363
+ },
2364
+ :port => {
2365
+ :default => 443,
2366
+ :public => false,
2367
+ :type => Integer,
2368
+ :allowed_from_server => false,
2369
+ :description => 'Port for the New Relic data collection service.'
2370
+ },
2371
+ :prepend_net_instrumentation => {
2372
+ :default => true,
2373
+ :public => false,
2374
+ :type => Boolean,
2375
+ :allowed_from_server => false,
2376
+ :deprecated => true,
2377
+ :description => deprecated_description(:'instrumentation.net_http',
2378
+ 'If `true`, uses `Module#prepend` rather than alias_method for Net::HTTP instrumentation.')
1875
2379
  },
1876
2380
  :primary_application_id => {
1877
2381
  :default => nil,
@@ -1879,32 +2383,42 @@ module NewRelic
1879
2383
  :public => false,
1880
2384
  :type => String,
1881
2385
  :allowed_from_server => true,
1882
- :description => 'The primary id associated with this application.'
2386
+ :description => 'The primary id associated with your application.'
1883
2387
  },
1884
- :'distributed_tracing.enabled' => {
1885
- :default => false,
1886
- :public => true,
1887
- :type => Boolean,
2388
+ :put_for_data_send => {
2389
+ :default => false,
2390
+ :public => false,
2391
+ :type => Boolean,
1888
2392
  :allowed_from_server => false,
1889
- :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.'
2393
+ :description => 'Use HTTP PUT requests instead of POST.'
1890
2394
  },
1891
- :'distributed_tracing.format' => {
1892
- :default => 'newrelic',
2395
+ :report_instance_busy => {
2396
+ :default => true,
1893
2397
  :public => false,
1894
- :type => String,
1895
- :transform => DefaultSource.enforce_fallback(
1896
- allowed_values: ['w3c', 'newrelic'],
1897
- fallback: 'newrelic'),
2398
+ :type => Boolean,
1898
2399
  :allowed_from_server => false,
1899
- :description => 'The format to use for distributed tracing if it is enabled. Options are w3c for W3C Trace Context or newrelic for New Relic Distriburted Tracing. Defaults to New Relic Distributed Tracing.'
2400
+ :description => 'Enable or disable transmission of metrics recording the percentage of time application instances spend servicing requests (duty cycle metrics).'
1900
2401
  },
1901
- :trusted_account_key => {
1902
- :default => nil,
1903
- :allow_nil => true,
2402
+ :restart_thread_in_children => {
2403
+ :default => true,
1904
2404
  :public => false,
1905
- :type => String,
2405
+ :type => Boolean,
2406
+ :allowed_from_server => false,
2407
+ :description => 'Controls whether to check on running a transaction whether to respawn the harvest thread.'
2408
+ },
2409
+ :'resque.use_ruby_dns' => {
2410
+ :default => true,
2411
+ :public => false,
2412
+ :type => Boolean,
2413
+ :allowed_from_server => false,
2414
+ :description => 'Replace the libc DNS resolver with the all Ruby resolver Resolv'
2415
+ },
2416
+ :'rum.enabled' => {
2417
+ :default => true,
2418
+ :public => false,
2419
+ :type => Boolean,
1906
2420
  :allowed_from_server => true,
1907
- :description => 'A shared key to validate that a distributed trace payload came from a trusted account.'
2421
+ :description => 'Enable or disable page load timing (sometimes referred to as real user monitoring or RUM).'
1908
2422
  },
1909
2423
  :sampling_target => {
1910
2424
  :default => 10,
@@ -1920,19 +2434,93 @@ module NewRelic
1920
2434
  :allowed_from_server => true,
1921
2435
  :description => 'The period during which a target number of transactions should be marked as sampled.'
1922
2436
  },
1923
- :'span_events.enabled' => {
2437
+ :send_environment_info => {
1924
2438
  :default => true,
1925
- :public => true,
2439
+ :public => false,
2440
+ :type => Boolean,
2441
+ :allowed_from_server => false,
2442
+ :description => 'Enable or disable transmission of application environment information to the New Relic data collection service.'
2443
+ },
2444
+ :simple_compression => {
2445
+ :default => false,
2446
+ :public => false,
2447
+ :type => Boolean,
2448
+ :allowed_from_server => false,
2449
+ :description => 'When enabled the agent will compress payloads destined for the collector, but will not pre-compress parts of the payload.'
2450
+ },
2451
+ :skip_ar_instrumentation => {
2452
+ :default => false,
2453
+ :public => false,
1926
2454
  :type => Boolean,
2455
+ :allowed_from_server => false,
2456
+ :description => 'Enable or disable active record instrumentation.'
2457
+ },
2458
+ :'synthetics.traces_limit' => {
2459
+ :default => 20,
2460
+ :public => false,
2461
+ :type => Integer,
1927
2462
  :allowed_from_server => true,
1928
- :description => 'If <code>true</code>, enables span event sampling.'
2463
+ :description => 'Maximum number of synthetics transaction traces to hold for a given harvest'
1929
2464
  },
1930
- :'span_events.max_samples_stored' => {
1931
- :default => 1000,
1932
- :public => true,
2465
+ :'synthetics.events_limit' => {
2466
+ :default => 200,
2467
+ :public => false,
1933
2468
  :type => Integer,
1934
2469
  :allowed_from_server => true,
1935
- :description => 'Defines the maximum number of span events reported from a single harvest.'
2470
+ :description => 'Maximum number of synthetics transaction events to hold for a given harvest'
2471
+ },
2472
+ :test_mode => {
2473
+ :default => false,
2474
+ :public => false,
2475
+ :type => Boolean,
2476
+ :allowed_from_server => false,
2477
+ :description => 'Used in tests for the agent to start up, but not connect to the collector. Formerly used `developer_mode` in test config for this purpose.'
2478
+ },
2479
+ :'thread_profiler.max_profile_overhead' => {
2480
+ :default => 0.05,
2481
+ :public => false,
2482
+ :type => Float,
2483
+ :allowed_from_server => true,
2484
+ :description => 'Maximum overhead percentage for thread profiling before agent reduces polling frequency'
2485
+ },
2486
+ :trusted_account_ids => {
2487
+ :default => [],
2488
+ :public => false,
2489
+ :type => Array,
2490
+ :allowed_from_server => true,
2491
+ :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.'
2492
+ },
2493
+ :trusted_account_key => {
2494
+ :default => nil,
2495
+ :allow_nil => true,
2496
+ :public => false,
2497
+ :type => String,
2498
+ :allowed_from_server => true,
2499
+ :description => 'A shared key to validate that a distributed trace payload came from a trusted account.'
2500
+ },
2501
+ :'utilization.billing_hostname' => {
2502
+ :default => nil,
2503
+ :allow_nil => true,
2504
+ :public => false,
2505
+ :type => String,
2506
+ :allowed_from_server => false,
2507
+ :description => 'The configured server name by a customer.'
2508
+ },
2509
+ :'utilization.logical_processors' => {
2510
+ :default => nil,
2511
+ :allow_nil => true,
2512
+ :public => false,
2513
+ :type => Integer,
2514
+ :allowed_from_server => false,
2515
+ :description => 'The total number of hyper-threaded execution contexts available.'
2516
+ },
2517
+ :'utilization.total_ram_mib' => {
2518
+ :default => nil,
2519
+ :allow_nil => true,
2520
+ :public => false,
2521
+ :type => Integer,
2522
+ :allowed_from_server => false,
2523
+ :description => 'This value represents the total amount of memory available to the host (not the process), in mebibytes (1024 squared or 1,048,576 bytes).'
1936
2524
  }
1937
2525
  }.freeze
1938
2526
  end