newrelic_rpm 6.15.0 → 8.13.1

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