newrelic_rpm 6.10.0.364 → 8.15.0

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