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
data/newrelic.yml CHANGED
@@ -2,7 +2,7 @@
2
2
  # This file configures the New Relic Agent. New Relic monitors Ruby, Java,
3
3
  # .NET, PHP, Python, Node, and Go applications with deep visibility and low
4
4
  # overhead. For more information, visit www.newrelic.com.
5
- #
5
+
6
6
  # Generated <%= Time.now.strftime('%B %d, %Y') %><%= ", for version #{@agent_version}" if @agent_version %>
7
7
  #<%= "\n# #{generated_for_user}\n#" if generated_for_user %>
8
8
  # For full documentation of agent configuration options, please refer to
@@ -13,15 +13,678 @@ common: &default_settings
13
13
  license_key: <%= license_key %>
14
14
 
15
15
  # Your application name. Renaming here affects where data displays in New
16
- # Relic. For more details, see https://docs.newrelic.com/docs/apm/new-relic-apm/maintenance/renaming-applications
16
+ # Relic. For more details, see https://docs.newrelic.com/docs/apm/new-relic-apm/maintenance/renaming-applications
17
17
  app_name: <%= app_name %>
18
18
 
19
19
  # To disable the agent regardless of other settings, uncomment the following:
20
20
  # agent_enabled: false
21
21
 
22
- # Logging level for log/newrelic_agent.log
22
+ # Logging level for log/newrelic_agent.log; options are error, warn, info, or
23
+ # debug.
23
24
  log_level: info
24
25
 
26
+ # All of the following configuration options are optional. Review them, and
27
+ # uncomment or edit them if they appear relevant to your application needs.
28
+
29
+ # An array of ActiveSupport custom events names to subscribe to and provide
30
+ # instrumentation for. For example,
31
+ # - my.custom.event
32
+ # - another.event
33
+ # - a.third.event
34
+ # active_support_custom_events_names: ""
35
+
36
+ # If `true`, all logging-related features for the agent can be enabled or disabled
37
+ # independently. If `false`, all logging-related features are disabled.
38
+ # application_logging.enabled: true
39
+
40
+ # If `true`, the agent captures log records emitted by this application.
41
+ # application_logging.forwarding.enabled: true
42
+
43
+ # Defines the maximum number of log records to buffer in memory at a time.
44
+ # application_logging.forwarding.max_samples_stored: 10000
45
+
46
+ # If `true`, the agent captures metrics related to logging for this application.
47
+ # application_logging.metrics.enabled: true
48
+
49
+ # If `true`, the agent decorates logs with metadata to link to entities, hosts, traces, and spans.
50
+ # application_logging.local_decorating.enabled: false
51
+
52
+ # If `true`, the agent will report source code level metrics for traced methods
53
+ # see: https://docs.newrelic.com/docs/apm/agents/ruby-agent/features/ruby-codestream-integration/
54
+ # code_level_metrics.enabled: true
55
+
56
+ # If true, enables transaction event sampling.
57
+ # transaction_events.enabled: true
58
+
59
+ # Defines the maximum number of request events reported from a single harvest.
60
+ # transaction_events.max_samples_stored: 1200
61
+
62
+ # Prefix of attributes to exclude from all destinations. Allows * as wildcard at
63
+ # end.
64
+ # attributes_exclude: []
65
+
66
+ # Prefix of attributes to include in all destinations. Allows * as wildcard at
67
+ # end.
68
+ # attributes_include: []
69
+
70
+ # If true, enables capture of attributes for all destinations.
71
+ # attributes.enabled: true
72
+
73
+ # If true, enables an audit log which logs communications with the New Relic
74
+ # collector.
75
+ # audit_log.enabled: false
76
+
77
+ # List of allowed endpoints to include in audit log.
78
+ # audit_log.endpoints: [".*"]
79
+
80
+ # Specifies a path to the audit log file (including the filename).
81
+ # audit_log.path: "/audit_log"
82
+
83
+ # Specify a list of constants that should prevent the agent from starting
84
+ # automatically. Separate individual constants with a comma ,.
85
+ # For example, Rails::Console,UninstrumentedBackgroundJob.
86
+ # autostart.denylisted_constants: "rails::console"
87
+
88
+ # Defines a comma-delimited list of executables that the agent should not
89
+ # instrument. For example, rake,my_ruby_script.rb.
90
+ # autostart.denylisted_executables: "irb,rspec"
91
+
92
+ # Defines a comma-delimited list of Rake tasks that the agent should not
93
+ # instrument. For example, assets:precompile,db:migrate.
94
+ # autostart.denylisted_rake_tasks: "about,assets:clean,assets:clobber,assets:environment,assets:precompile,assets:precompile:all,db:create,db:drop,db:fixtures:load,db:migrate,db:migrate:status,db:rollback,db:schema:cache:clear,db:schema:cache:dump,db:schema:dump,db:schema:load,db:seed,db:setup,db:structure:dump,db:version,doc:app,log:clear,middleware,notes,notes:custom,rails:template,rails:update,routes,secret,spec,spec:features,spec:requests,spec:controllers,spec:helpers,spec:models,spec:views,spec:routing,spec:rcov,stats,test,test:all,test:all:db,test:recent,test:single,test:uncommitted,time:zones:all,tmp:clear,tmp:create,webpacker:compile"
95
+
96
+ # Backports the faster Active Record connection lookup introduced in Rails 6,
97
+ # which improves agent performance when instrumenting Active Record. Note that
98
+ # this setting may not be compatible with other gems that patch Active Record.
99
+ # backport_fast_active_record_connection_lookup: false
100
+
101
+ # If true, the agent captures attributes from browser monitoring.
102
+ # browser_monitoring.attributes.enabled: false
103
+
104
+ # Prefix of attributes to exclude from browser monitoring. Allows * as wildcard
105
+ # at end.
106
+ # browser_monitoring.attributes.exclude: []
107
+
108
+ # Prefix of attributes to include in browser monitoring. Allows * as wildcard at
109
+ # end.
110
+ # browser_monitoring.attributes.include: []
111
+
112
+ # This is true by default, this enables auto-injection of the JavaScript header
113
+ # for page load timing (sometimes referred to as real user monitoring or RUM).
114
+ # browser_monitoring.auto_instrument: true
115
+
116
+ # Manual override for the path to your local CA bundle. This CA bundle will be
117
+ # used to validate the SSL certificate presented by New Relic's data collection
118
+ # service.
119
+ # ca_bundle_path: nil
120
+
121
+ # Enable or disable the capture of memcache keys from transaction traces.
122
+ # capture_memcache_keys: false
123
+
124
+ # When true, the agent captures HTTP request parameters and attaches them to
125
+ # transaction traces, traced errors, and TransactionError events. When using the
126
+ # capture_params setting, the Ruby agent will not attempt to filter secret
127
+ # information. Recommendation: To filter secret information from request
128
+ # parameters,use the attributes.include setting instead. For more information,
129
+ # see the Ruby attribute examples.
130
+ # capture_params: false
131
+
132
+ # If true, the agent will clear Tracer::State in Agent.drop_buffered_data.
133
+ # clear_transaction_state_after_fork: false
134
+
135
+ # Path to newrelic.yml. If undefined, the agent checks the following directories
136
+ # (in order): config/newrelic.yml, newrelic.yml, $HOME/.newrelic/newrelic.yml
137
+ # and $HOME/newrelic.yml.
138
+ # config_path: newrelic.yml
139
+
140
+ # If true, enables cross application tracing. Cross application tracing is now
141
+ # deprecated, and disabled by default. Distributed tracing is replacing cross
142
+ # application tracing as the default means of tracing between services.
143
+ # To continue using it, set `cross_application_tracer.enabled: true` and
144
+ # `distributed_tracing.enabled: false`
145
+ # cross_application_tracer.enabled: false
146
+
147
+ # If false, custom attributes will not be sent on New Relic Insights events.
148
+ # custom_attributes.enabled: true
149
+
150
+ # If true, the agent captures New Relic Insights custom events.
151
+ # custom_insights_events.enabled: true
152
+
153
+ # Specify a maximum number of custom Insights events to buffer in memory at a
154
+ # time.
155
+ # custom_insights_events.max_samples_stored: 3000
156
+
157
+ # If false, the agent will not add database_name parameter to transaction or #
158
+ # slow sql traces.
159
+ # datastore_tracer.database_name_reporting.enabled: true
160
+
161
+ # If false, the agent will not report datastore instance metrics, nor add host
162
+ # or port_path_or_id parameters to transaction or slow SQL traces.
163
+ # datastore_tracer.instance_reporting.enabled: true
164
+
165
+ # If true, when the agent is in an application using Ruby on Rails, it will start after
166
+ # config/initializers have run.
167
+ # defer_rails_initialization: false
168
+
169
+ # If true, disables Action Cable instrumentation.
170
+ # disable_action_cable_instrumentation: false
171
+
172
+ # If true, disables instrumentation for Active Record 4, 5, and 6.
173
+ # disable_active_record_notifications: false
174
+
175
+ # If true, disables Active Storage instrumentation.
176
+ # disable_active_storage: false
177
+
178
+ # If true, disables Active Job instrumentation.
179
+ # disable_activejob: false
180
+
181
+ # If true, disables Active Record instrumentation.
182
+ # disable_active_record_instrumentation: false
183
+
184
+ # If true, the agent won't sample the CPU usage of the host process.
185
+ # disable_cpu_sampler: false
186
+
187
+ # If true, disables ActiveSupport custom events instrumentation.
188
+ # disable_custom_events_instrumentation: false
189
+
190
+ # If true, disables DataMapper instrumentation.
191
+ # disable_data_mapper: false
192
+
193
+ # If true, the agent won't measure the depth of Delayed Job queues.
194
+ # disable_delayed_job_sampler: false
195
+
196
+ # If true, disables the use of GC::Profiler to measure time spent in garbage
197
+ # collection
198
+ # disable_gc_profiler: false
199
+
200
+ # If true, the agent won't sample the memory usage of the host process.
201
+ # disable_memory_sampler: false
202
+
203
+ # If true, the agent won't wrap third-party middlewares in instrumentation
204
+ # (regardless of whether they are installed via Rack::Builder or Rails).
205
+ # disable_middleware_instrumentation: false
206
+
207
+ # If true, disables the collection of sampler metrics. Sampler metrics are
208
+ # metrics that are not event-based (such as CPU time or memory usage).
209
+ # disable_samplers: false
210
+
211
+ # If true, disables Sequel instrumentation.
212
+ # disable_sequel_instrumentation: false
213
+
214
+ # If true, disables Sidekiq instrumentation.
215
+ # disable_sidekiq: false
216
+
217
+ # If true, disables agent middleware for Sinatra. This middleware is responsible
218
+ # for advanced feature support such as distributed tracing, page load
219
+ # timing, and error collection.
220
+ # disable_sinatra_auto_middleware: false
221
+
222
+ # If true, disables view instrumentation.
223
+ # disable_view_instrumentation: false
224
+
225
+ # If true, the agent won't sample performance measurements from the Ruby VM.
226
+ # disable_vm_sampler: false
227
+
228
+ # Distributed tracing tracks and observes service requests as they flow through distributed systems.
229
+ # With distributed tracing data, you can quickly pinpoint failures or performance issues and fix them.
230
+ # distributed_tracing.enabled: true
231
+
232
+ # If true, the agent captures attributes from error collection.
233
+ # error_collector.attributes.enabled: false
234
+
235
+ # Prefix of attributes to exclude from error collection.
236
+ # Allows * as wildcard at end.
237
+ # error_collector.attributes.exclude: []
238
+
239
+ # Prefix of attributes to include in error collection.
240
+ # Allows * as wildcard at end.
241
+ # error_collector.attributes.include: []
242
+
243
+ # If true, the agent collects TransactionError events.
244
+ # error_collector.capture_events: true
245
+
246
+ # If true, the agent captures traced errors and error count metrics.
247
+ # error_collector.enabled: true
248
+
249
+ # A list of error classes that the agent should treat as expected.
250
+ # error_collector.expected_classes: []
251
+
252
+ # A map of error classes to a list of messages. When an error of one of the
253
+ # classes specified here occurs, if its error message contains one of the
254
+ # strings corresponding to it here, that error will be treated as expected.
255
+ # error_collector.expected_messages: {}
256
+
257
+ # A comma separated list of status codes, possibly including ranges. Errors
258
+ # associated with these status codes, where applicable, will be treated as
259
+ # expected.
260
+ # error_collector.expected_status_codes: ""
261
+
262
+ # A list of error classes that the agent should ignore.
263
+ # error_collector.ignore_classes: []
264
+
265
+ # A map of error classes to a list of messages. When an error of one of the
266
+ # classes specified here occurs, if its error message contains one of the
267
+ # strings corresponding to it here, that error will be ignored.
268
+ # error_collector.ignore_messages: ""
269
+
270
+ # A comma separated list of status codes, possibly including ranges. Errors
271
+ # associated with these status codes, where applicable, will be ignored.
272
+ # error_collector.ignore_status_codes: ""
273
+
274
+ # Defines the maximum number of frames in an error backtrace. Backtraces over
275
+ # this amount are truncated at the beginning and end.
276
+ # error_collector.max_backtrace_frames: 50
277
+
278
+ # Defines the maximum number of TransactionError events sent to Insights per
279
+ # harvest cycle.
280
+ # error_collector.max_event_samples_stored: 100
281
+
282
+ # Allows newrelic distributed tracing headers to be suppressed on outbound
283
+ # requests.
284
+ # exclude_newrelic_header: false
285
+
286
+ # Forces the exit handler that sends all cached data to collector before
287
+ # shutting down to be installed regardless of detecting scenarios where it
288
+ # generally should not be. Known use-case for this option is where Sinatra is
289
+ # running as an embedded service within another framework and the agent is
290
+ # detecting the Sinatra app and skipping the at_exit handler as a result.
291
+ # Sinatra classically runs the entire application in an at_exit block and would
292
+ # otherwise misbehave if the Agent's at_exit handler was also installed in
293
+ # those circumstances. Note: send_data_on_exit should also be set to true in
294
+ # tandem with this setting.
295
+ # force_install_exit_handler: false
296
+
297
+ # Ordinarily the agent reports dyno names with a trailing dot and process ID
298
+ # (for example, worker.3). You can remove this trailing data by specifying the
299
+ # prefixes you want to report without trailing data (for example, worker).
300
+ # heroku.dyno_name_prefixes_to_shorten: ["scheduler", "run"]
301
+
302
+ # If true, the agent uses Heroku dyno names as the hostname.
303
+ # heroku.use_dyno_names: true
304
+
305
+ # If true, enables high security mode. Ensure that you understand the
306
+ # implication of enabling high security mode before enabling this setting.
307
+ # https://docs.newrelic.com/docs/agents/manage-apm-agents/configuration/high-security-mode/
308
+ # high_security: false
309
+
310
+ # Configures the hostname for the Trace Observer Host. When configured, enables
311
+ # tail-based sampling by sending all recorded spans to a Trace Observer for
312
+ # further sampling decisions, irrespective of any usual agent sampling decision.
313
+ # infinite_tracing.trace_observer.host: ""
314
+
315
+ # Configures the TCP/IP port for the Trace Observer Host
316
+ # infinite_tracing.trace_observer.port: 443
317
+
318
+ # Configure the compression level for data sent to the Trace Observer
319
+ # May be one of [none|low|medium|high]
320
+ # 'high' is the default. Set the level to 'none' to disable compression
321
+ # infinite_tracing.compression_level: high
322
+
323
+ # If true (the default), data sent to the Trace Observer will be batched
324
+ # instead of each span being sent individually
325
+ # infinite_tracing.batching: true
326
+
327
+ # Controls auto-instrumentation of bunny at start up.
328
+ # May be one of [auto|prepend|chain|disabled].
329
+ # instrumentation.bunny: auto
330
+
331
+ # Controls auto-instrumentation of concurrent_ruby at start up.
332
+ # May be one of [auto|prepend|chain|disabled]
333
+ # instrumentation.concurrent_ruby: auto
334
+
335
+ # Controls auto-instrumentation of Curb at start up.
336
+ # May be one of [auto|prepend|chain|disabled].
337
+ # instrumentation.curb: auto
338
+
339
+ # Controls auto-instrumentation of Delayed Job at start up.
340
+ # May be one of [auto|prepend|chain|disabled].
341
+ # instrumentation.delayed_job: auto
342
+
343
+ # Controls auto-instrumentation of the elasticsearch library at start up.
344
+ # May be one of [auto|prepend|chain|disabled].
345
+ # instrumentation.elasticsearch: auto
346
+
347
+ # Controls auto-instrumentation of Excon at start up.
348
+ # May be one of [enabled|disabled].
349
+ # instrumentation.excon: auto
350
+
351
+ # Controls auto-instrumentation of Grape at start up.
352
+ # May be one of [auto|prepend|chain|disabled].
353
+ # instrumentation.grape: auto
354
+
355
+ # Controls auto-instrumentation of HTTPClient at start up.
356
+ # May be one of [auto|prepend|chain|disabled].
357
+ # instrumentation.httpclient: auto
358
+
359
+ # Controls auto-instrumentation of http.rb gem at start up.
360
+ # May be one of [auto|prepend|chain|disabled].
361
+ # instrumentation.httprb: auto
362
+
363
+ # Controls auto-instrumentation of the Ruby standard library Logger.rb.
364
+ # May be one of [auto|prepend|chain|disabled].
365
+ # instrumentation.logger: auto
366
+
367
+ # Controls auto-instrumentation of ActiveSupport::Logger at start up.
368
+ # May be one of [auto|prepend|chain|disabled].
369
+ # instrumentation.active_support.logger: auto
370
+
371
+ # Controls auto-instrumentation of memcache-client gem for Memcache at start up.
372
+ # May be one of [auto|prepend|chain|disabled].
373
+ # instrumentation.memcache_client: auto
374
+
375
+ # Controls auto-instrumentation of dalli gem for Memcache at start up.
376
+ # May be one of [auto|prepend|chain|disabled].
377
+ # instrumentation.memcache: auto
378
+
379
+ # Controls auto-instrumentation of memcached gem for Memcache at start up.
380
+ # May be one of [auto|prepend|chain|disabled].
381
+ # instrumentation.memcached: auto
382
+
383
+ # Controls auto-instrumentation of Mongo at start up.
384
+ # May be one of [enabled|disabled].
385
+ # instrumentation.mongo: auto
386
+
387
+ # Controls auto-instrumentation of Net::HTTP at start up.
388
+ # May be one of [auto|prepend|chain|disabled].
389
+ # instrumentation.net_http: auto
390
+
391
+ # Controls auto-instrumentation of Puma::Rack::URLMap at start up.
392
+ # May be one of [auto|prepend|chain|disabled].
393
+ # instrumentation.puma_rack_urlmap: auto
394
+
395
+ # Controls auto-instrumentation of Puma::Rack. When enabled, the agent hooks
396
+ # into the to_app method in Puma::Rack::Builder to find gems to instrument
397
+ # during application startup. May be one of [auto|prepend|chain|disabled].
398
+ # instrumentation.puma_rack: auto
399
+
400
+ # Controls auto-instrumentation of Rack::URLMap at start up.
401
+ # May be one of [auto|prepend|chain|disabled].
402
+ # instrumentation.rack_urlmap: auto
403
+
404
+ # Controls auto-instrumentation of Rack. When enabled, the agent hooks into the
405
+ # to_app method in Rack::Builder to find gems to instrument during application
406
+ # startup. May be one of [auto|prepend|chain|disabled].
407
+ # instrumentation.rack: auto
408
+
409
+ # Controls auto-instrumentation of rake at start up.
410
+ # May be one of [auto|prepend|chain|disabled].
411
+ # instrumentation.rake: auto
412
+
413
+ # Controls auto-instrumentation of Redis at start up.
414
+ # May be one of [auto|prepend|chain|disabled].
415
+ # instrumentation.redis: auto
416
+
417
+ # Controls auto-instrumentation of resque at start up.
418
+ # May be one of [auto|prepend|chain|disabled].
419
+ # instrumentation.resque: auto
420
+
421
+ # Controls auto-instrumentation of Sinatra at start up.
422
+ # May be one of [auto|prepend|chain|disabled].
423
+ # instrumentation.sinatra: auto
424
+
425
+ # Controls auto-instrumentation of Tilt at start up.
426
+ # May be one of [auto|prepend|chain|disabled].
427
+ # instrumentation.tilt: auto
428
+
429
+ # Controls auto-instrumentation of Typhoeus at start up.
430
+ # May be one of [auto|prepend|chain|disabled].
431
+ # instrumentation.typhoeus: auto
432
+
433
+ # Controls auto-instrumentation of the Thread class at start up to allow the agent to correctly nest spans inside of an asynchronous transaction.
434
+ # May be one of [auto|prepend|chain|disabled].
435
+ # instrumentation.thread: auto
436
+
437
+ # Controls auto-instrumentation of the Thread class at start up to automatically add tracing to all Threads created in the application.
438
+ # instrumentation.thread.tracing: false
439
+
440
+ # Controls auto-instrumentation of gRPC clients at start up.
441
+ # May be one of [auto|prepend|chain|disabled].
442
+ # instrumentation.grpc_client: auto
443
+
444
+ # Controls auto-instrumentation of gRPC servers at start up.
445
+ # May be one of [auto|prepend|chain|disabled].
446
+ # instrumentation.grpc_server: auto
447
+
448
+ # Specifies a list of hostname patterns separated by commas that will match
449
+ # gRPC hostnames that traffic is to be ignored by New Relic for.
450
+ # New Relic's gRPC client instrumentation will ignore traffic streamed to a
451
+ # host matching any of these patterns, and New Relic's gRPC server
452
+ # instrumentation will ignore traffic for a server running on a host whose
453
+ # hostname matches any of these patterns. By default, no traffic is ignored
454
+ # when gRPC instrumentation is itself enabled.
455
+ # For example, "private.com$,exception.*"
456
+ # instrumentation.grpc.host_denylist: ""
457
+
458
+ # A dictionary of label names and values that will be applied to the data sent
459
+ # from this agent. May also be expressed as a semicolon-delimited ; string of
460
+ # colon-separated : pairs.
461
+ # For example,<var>Server</var>:<var>One</var>;<var>Data Center</var>:<var>Primary</var>.
462
+ # labels: ""
463
+
464
+ # Defines a name for the log file.
465
+ # log_file_name: "newrelic_agent.log"
466
+
467
+ # Defines a path to the agent log file, excluding the filename.
468
+ # log_file_path: "log/"
469
+
470
+ # Specifies a marshaller for transmitting data to the New Relic collector.
471
+ # Currently json is the only valid value for this setting.
472
+ # marshaller: json
473
+
474
+ # If true, the agent will collect metadata about messages and attach them as
475
+ # segment parameters.
476
+ # message_tracer.segment_parameters.enabled: true
477
+
478
+ # If true, the agent captures Mongo queries in transaction traces.
479
+ # mongo.capture_queries: true
480
+
481
+ # If true, the agent obfuscates Mongo queries in transaction traces.
482
+ # mongo.obfuscate_queries: true
483
+
484
+ # If true, the agent captures Elasticsearch queries in transaction traces.
485
+ # elasticsearch.capture_queries: true
486
+
487
+ # If true, the agent obfuscates Elasticsearch queries in transaction traces.
488
+ # elasticsearch.obfuscate_queries: true
489
+
490
+ # When true, the agent transmits data about your app to the New Relic collector.
491
+ # monitor_mode: true
492
+
493
+ # If true, uses Module#prepend rather than alias_method for Active Record
494
+ # instrumentation.
495
+ # prepend_active_record_instrumentation: false
496
+
497
+ # Specify a custom host name for display in the New Relic UI
498
+ # Be be aware that you cannot rename a hostname, so please rename
499
+ # process_host.display_name: "default hostname"
500
+
501
+ # Defines a host for communicating with the New Relic collector via a proxy
502
+ # server.
503
+ # proxy_host: nil
504
+
505
+ # Defines a password for communicating with the New Relic collector via a proxy
506
+ # server.
507
+ # proxy_pass: nil
508
+
509
+ # Defines a port for communicating with the New Relic collector via a proxy
510
+ # server.
511
+ # proxy_port: nil
512
+
513
+ # Defines a user for communicating with the New Relic collector via a proxy
514
+ # server.
515
+ # proxy_user: nil
516
+
517
+ # Timeout for waiting on connect to complete before a rake task
518
+ # rake.connect_timeout: 10
519
+
520
+ # Specify an array of Rake tasks to automatically instrument.
521
+ # This configuration option converts the Array to a RegEx list.
522
+ # If you'd like to allow all tasks by default, use `rake.tasks: [.+]`.
523
+ # Rake tasks will not be instrumented unless they're added to this list.
524
+ # For more information, visit the (New Relic Rake Instrumentation docs)[/docs/apm/agents/ruby-agent/background-jobs/rake-instrumentation].
525
+ # rake.tasks: []
526
+
527
+ # Define transactions you want the agent to ignore, by specifying a list of
528
+ # patterns matching the URI you want to ignore.
529
+ # rules.ignore_url_regexes: []
530
+
531
+ # Applies Language Agent Security Policy settings.
532
+ # security_policies_token: ""
533
+
534
+ # If true, enables the exit handler that sends data to the New Relic collector
535
+ # before shutting down.
536
+ # send_data_on_exit: true
537
+
538
+ # If true, the agent collects slow SQL queries.
539
+ # slow_sql.enabled: false
540
+
541
+ # If true, the agent collects explain plans in slow SQL queries. If this setting
542
+ # is omitted, the transaction_tracer.explain.enabled setting will be applied as
543
+ # the default setting for explain plans in slow SQL as well.
544
+ # slow_sql.explain_enabled: false
545
+
546
+ # Specify a threshold in seconds. The agent collects slow SQL queries and
547
+ # explain plans that exceed this threshold.
548
+ # slow_sql.explain_threshold: 1.0
549
+
550
+ # Defines an obfuscation level for slow SQL queries.
551
+ # Valid options are obfuscated, raw, or none.
552
+ # slow_sql.record_sql: none
553
+
554
+ # Generate a longer sql_id for slow SQL traces. sql_id is used for aggregation
555
+ # of similar queries.
556
+ # slow_sql.use_longer_sql_id: false
557
+
558
+ # If true, the agent captures attributes on span events.
559
+ # span_events_attributes.enabled: true
560
+
561
+ # Defines the maximum number of span events reported from a single harvest.
562
+ # This can be any integer between 1 and 10000. Increasing this value may impact
563
+ # memory usage.
564
+ # span_events.max_samples_stored: 2000
565
+
566
+ # Prefix of attributes to exclude from span events. Allows * as wildcard at end.
567
+ # span_events.attributes.exclude: []
568
+
569
+ # Prefix of attributes to include on span events. Allows * as wildcard at end.
570
+ # span_events.attributes.include: []
571
+
572
+ # If true, enables span event sampling.
573
+ # span_events.enabled: true
574
+
575
+ # Sets the maximum number of span events to buffer when streaming to the trace
576
+ # observer.
577
+ # span_events.queue_size: 10000
578
+
579
+ # Specify a list of exceptions you do not want the agent to strip when
580
+ # strip_exception_messages is true. Separate exceptions with a comma. For
581
+ # example, "ImportantException,PreserveMessageException".
582
+ # strip_exception_messages.allowed_classes: ""
583
+
584
+ # If true, the agent strips messages from all exceptions except those in the
585
+ # allowlist. Enabled automatically in high security mode.
586
+ # strip_exception_messages.enabled: true
587
+
588
+ # When set to true, forces a synchronous connection to the New Relic collector
589
+ # during application startup. For very short-lived processes, this helps ensure # the New Relic agent has time to report.
590
+ # sync_startup: false
591
+
592
+ # If true, enables use of the thread profiler.
593
+ # thread_profiler.enabled: false
594
+
595
+ # Defines the maximum number of seconds the agent should spend attempting to
596
+ # connect to the collector.
597
+ # timeout: 120
598
+
599
+ # If true, the agent captures attributes from transaction events.
600
+ # transaction_events_attributes.enabled: false
601
+
602
+ # Prefix of attributes to exclude from transaction events.
603
+ # Allows * as wildcard at end.
604
+ # transaction_events.attributes.exclude: []
605
+
606
+ # Prefix of attributes to include in transaction events.
607
+ # Allows * as wildcard at end.
608
+ # transaction_events.attributes.include: []
609
+
610
+ # If true, the agent captures attributes on transaction segments.
611
+ # transaction_segments_attributes.enabled: true
612
+
613
+ # Prefix of attributes to exclude from transaction segments.
614
+ # Allows * as wildcard at end.
615
+ # transaction_segments.attributes.exclude: []
616
+
617
+ # Prefix of attributes to include on transaction segments.
618
+ # Allows * as wildcard at end.
619
+ # transaction_segments.attributes.include: []
620
+
621
+ # If true, the agent captures attributes from transaction traces.
622
+ # transaction_tracer.attributes.enabled: false
623
+
624
+ # Prefix of attributes to exclude from transaction traces.
625
+ # Allows * as wildcard at end.
626
+ # transaction_tracer.attributes.exclude: []
627
+
628
+ # Prefix of attributes to include in transaction traces.
629
+ # Allows * as wildcard at end.
630
+ # transaction_tracer.attributes.include: []
631
+
632
+ # If true, enables collection of transaction traces.
633
+ # transaction_tracer.enabled: true
634
+
635
+ # Threshold (in seconds) above which the agent will collect explain plans.
636
+ # Relevant only when explain.enabled is true.
637
+ # transaction_tracer.explain_threshold: 0.5
638
+
639
+ # If true, enables the collection of explain plans in transaction traces.
640
+ # This setting will also apply to explain plans in slow SQL traces if
641
+ # slow_sql.explain enabled is not set separately.
642
+ # transaction_tracer.explain.enabled: true
643
+
644
+ # Maximum number of transaction trace nodes to record in a single transaction
645
+ # trace.
646
+ # transaction_tracer.limit_segments: 4000
647
+
648
+ # If true, the agent records Redis command arguments in transaction traces.
649
+ # transaction_tracer.record_redis_arguments: false
650
+
651
+ # Obfuscation level for SQL queries reported in transaction trace nodes.
652
+ # By default, this is set to obfuscated, which strips out the numeric and string
653
+ # literals. If you do not want the agent to capture query information, set this
654
+ # to 'none'. If you want the agent to capture all query information in its
655
+ # original form, set this to 'raw'. When you enable high security mode this is
656
+ # automatically set to 'obfuscated'
657
+ # transaction_tracer.record_sql: 'obfuscated'
658
+
659
+ # Specify a threshold in seconds. The agent includes stack traces in transaction
660
+ # trace nodes when the stack trace duration exceeds this threshold.
661
+ # transaction_tracer.stack_trace_threshold: 0.5
662
+
663
+ # Specify a threshold in seconds. Transactions with a duration longer than this
664
+ # threshold are eligible for transaction traces. Specify a float value or the
665
+ # string apdex_f.
666
+ # transaction_tracer.transaction_threshold: 1.0
667
+
668
+ # If true, the agent automatically detects that it is running in an AWS
669
+ # environment.
670
+ # utilization.detect_aws: true
671
+
672
+ # If true, the agent automatically detects that it is running in an Azure
673
+ # environment.
674
+ # utilization.detect_azure: true
675
+
676
+ # If true, the agent automatically detects that it is running in Docker.
677
+ # utilization.detect_docker: true
678
+
679
+ # If true, the agent automatically detects that it is running in an Google Cloud
680
+ # Platform environment.
681
+ # utilization.detect_gcp: true
682
+
683
+ # If true, the agent automatically detects that it is running in Kubernetes.
684
+ # utilization.detect_kubernetes: true
685
+
686
+ # If true, the agent automatically detects that it is running in a Pivotal Cloud Foundry environment.
687
+ # utilization.detect_pcf: true
25
688
 
26
689
  # Environment-specific settings are in this section.
27
690
  # RAILS_ENV or RACK_ENV (as appropriate) is used to determine the environment.