newrelic_rpm 8.2.0 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (439) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -2
  3. data/.rubocop.yml +1919 -0
  4. data/.rubocop_todo.yml +100 -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 +3654 -2951
  10. data/CONTRIBUTING.md +21 -6
  11. data/DOCKER.md +167 -0
  12. data/Dockerfile +10 -0
  13. data/Gemfile +0 -1
  14. data/Guardfile +9 -8
  15. data/LICENSE +0 -6
  16. data/README.md +20 -20
  17. data/Rakefile +27 -29
  18. data/THIRD_PARTY_NOTICES.md +14 -199
  19. data/Thorfile +5 -0
  20. data/bin/newrelic +3 -2
  21. data/bin/newrelic_cmd +1 -0
  22. data/bin/nrdebug +76 -53
  23. data/config.dot +5 -5
  24. data/docker-compose.yml +107 -0
  25. data/init.rb +4 -6
  26. data/install.rb +2 -2
  27. data/lefthook.yml +9 -0
  28. data/lib/new_relic/agent/adaptive_sampler.rb +11 -7
  29. data/lib/new_relic/agent/agent.rb +94 -924
  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 +74 -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 +23 -19
  38. data/lib/new_relic/agent/attribute_filter.rb +64 -47
  39. data/lib/new_relic/agent/attribute_processing.rb +7 -7
  40. data/lib/new_relic/agent/attributes.rb +5 -4
  41. data/lib/new_relic/agent/audit_logger.rb +8 -3
  42. data/lib/new_relic/agent/autostart.rb +20 -18
  43. data/lib/new_relic/agent/chained_call.rb +1 -1
  44. data/lib/new_relic/agent/commands/agent_command.rb +3 -3
  45. data/lib/new_relic/agent/commands/agent_command_router.rb +12 -11
  46. data/lib/new_relic/agent/commands/thread_profiler_session.rb +5 -7
  47. data/lib/new_relic/agent/configuration/default_source.rb +1353 -1355
  48. data/lib/new_relic/agent/configuration/dotted_hash.rb +6 -5
  49. data/lib/new_relic/agent/configuration/environment_source.rb +11 -9
  50. data/lib/new_relic/agent/configuration/event_harvest_config.rb +13 -6
  51. data/lib/new_relic/agent/configuration/high_security_source.rb +8 -9
  52. data/lib/new_relic/agent/configuration/manager.rb +82 -68
  53. data/lib/new_relic/agent/configuration/manual_source.rb +1 -1
  54. data/lib/new_relic/agent/configuration/mask_defaults.rb +3 -3
  55. data/lib/new_relic/agent/configuration/security_policy_source.rb +82 -85
  56. data/lib/new_relic/agent/configuration/server_source.rb +19 -18
  57. data/lib/new_relic/agent/configuration/yaml_source.rb +16 -13
  58. data/lib/new_relic/agent/configuration.rb +1 -1
  59. data/lib/new_relic/agent/connect/request_builder.rb +17 -19
  60. data/lib/new_relic/agent/connect/response_handler.rb +5 -8
  61. data/lib/new_relic/agent/custom_event_aggregator.rb +14 -15
  62. data/lib/new_relic/agent/database/explain_plan_helpers.rb +4 -5
  63. data/lib/new_relic/agent/database/obfuscation_helpers.rb +14 -13
  64. data/lib/new_relic/agent/database/obfuscator.rb +2 -2
  65. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +3 -3
  66. data/lib/new_relic/agent/database.rb +37 -48
  67. data/lib/new_relic/agent/database_adapter.rb +3 -1
  68. data/lib/new_relic/agent/datastores/metric_helper.rb +17 -18
  69. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +7 -6
  70. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +6 -10
  71. data/lib/new_relic/agent/datastores/mongo.rb +1 -1
  72. data/lib/new_relic/agent/datastores/nosql_obfuscator.rb +41 -0
  73. data/lib/new_relic/agent/datastores/redis.rb +5 -7
  74. data/lib/new_relic/agent/datastores.rb +7 -9
  75. data/lib/new_relic/agent/deprecator.rb +1 -1
  76. data/lib/new_relic/agent/distributed_tracing/cross_app_payload.rb +6 -6
  77. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +31 -29
  78. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +22 -21
  79. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +19 -19
  80. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +49 -51
  81. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +5 -6
  82. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +76 -77
  83. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +37 -36
  84. data/lib/new_relic/agent/distributed_tracing.rb +33 -35
  85. data/lib/new_relic/agent/encoding_normalizer.rb +4 -2
  86. data/lib/new_relic/agent/error_collector.rb +27 -23
  87. data/lib/new_relic/agent/error_event_aggregator.rb +4 -5
  88. data/lib/new_relic/agent/error_filter.rb +15 -16
  89. data/lib/new_relic/agent/error_trace_aggregator.rb +4 -3
  90. data/lib/new_relic/agent/event_aggregator.rb +22 -21
  91. data/lib/new_relic/agent/event_buffer.rb +7 -8
  92. data/lib/new_relic/agent/event_listener.rb +1 -2
  93. data/lib/new_relic/agent/event_loop.rb +22 -20
  94. data/lib/new_relic/agent/external.rb +11 -12
  95. data/lib/new_relic/agent/guid_generator.rb +13 -11
  96. data/lib/new_relic/agent/harvester.rb +4 -5
  97. data/lib/new_relic/agent/heap.rb +7 -9
  98. data/lib/new_relic/agent/hostname.rb +20 -13
  99. data/lib/new_relic/agent/http_clients/abstract.rb +8 -9
  100. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +6 -11
  101. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +8 -9
  102. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +4 -5
  103. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +2 -4
  104. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +2 -4
  105. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +4 -5
  106. data/lib/new_relic/agent/http_clients/uri_util.rb +1 -3
  107. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +9 -22
  108. data/lib/new_relic/agent/instrumentation/action_controller_other_subscriber.rb +39 -0
  109. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +37 -30
  110. data/lib/new_relic/agent/instrumentation/action_dispatch.rb +31 -0
  111. data/lib/new_relic/agent/instrumentation/action_dispatch_subscriber.rb +64 -0
  112. data/lib/new_relic/agent/instrumentation/action_mailbox.rb +30 -0
  113. data/lib/new_relic/agent/instrumentation/action_mailbox_subscriber.rb +33 -0
  114. data/lib/new_relic/agent/instrumentation/action_mailer.rb +30 -0
  115. data/lib/new_relic/agent/instrumentation/action_mailer_subscriber.rb +85 -0
  116. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +18 -19
  117. data/lib/new_relic/agent/instrumentation/active_job.rb +33 -13
  118. data/lib/new_relic/agent/instrumentation/active_job_subscriber.rb +41 -0
  119. data/lib/new_relic/agent/instrumentation/active_merchant.rb +19 -5
  120. data/lib/new_relic/agent/instrumentation/active_record.rb +37 -35
  121. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +71 -61
  122. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +49 -46
  123. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +4 -4
  124. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +26 -17
  125. data/lib/new_relic/agent/instrumentation/active_storage.rb +7 -3
  126. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +8 -33
  127. data/lib/new_relic/agent/instrumentation/active_support.rb +27 -0
  128. data/lib/new_relic/agent/instrumentation/active_support_logger/chain.rb +23 -0
  129. data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +20 -0
  130. data/lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb +12 -0
  131. data/lib/new_relic/agent/instrumentation/active_support_logger.rb +24 -0
  132. data/lib/new_relic/agent/instrumentation/active_support_subscriber.rb +41 -0
  133. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +11 -11
  134. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +20 -22
  135. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +4 -4
  136. data/lib/new_relic/agent/instrumentation/bunny.rb +4 -5
  137. data/lib/new_relic/agent/instrumentation/concurrent_ruby/chain.rb +36 -0
  138. data/lib/new_relic/agent/instrumentation/concurrent_ruby/instrumentation.rb +21 -0
  139. data/lib/new_relic/agent/instrumentation/concurrent_ruby/prepend.rb +27 -0
  140. data/lib/new_relic/agent/instrumentation/concurrent_ruby.rb +31 -0
  141. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +67 -58
  142. data/lib/new_relic/agent/instrumentation/curb/chain.rb +41 -43
  143. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +52 -53
  144. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +12 -14
  145. data/lib/new_relic/agent/instrumentation/curb.rb +7 -7
  146. data/lib/new_relic/agent/instrumentation/custom_events.rb +12 -0
  147. data/lib/new_relic/agent/instrumentation/custom_events_subscriber.rb +37 -0
  148. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +6 -9
  149. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +4 -9
  150. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +1 -2
  151. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +28 -10
  152. data/lib/new_relic/agent/instrumentation/elasticsearch/chain.rb +29 -0
  153. data/lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb +66 -0
  154. data/lib/new_relic/agent/instrumentation/elasticsearch/prepend.rb +13 -0
  155. data/lib/new_relic/agent/instrumentation/elasticsearch.rb +31 -0
  156. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +6 -6
  157. data/lib/new_relic/agent/instrumentation/excon.rb +24 -8
  158. data/lib/new_relic/agent/instrumentation/fiber/chain.rb +20 -0
  159. data/lib/new_relic/agent/instrumentation/fiber/instrumentation.rb +24 -0
  160. data/lib/new_relic/agent/instrumentation/fiber/prepend.rb +18 -0
  161. data/lib/new_relic/agent/instrumentation/fiber.rb +25 -0
  162. data/lib/new_relic/agent/instrumentation/grape/chain.rb +7 -8
  163. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +12 -12
  164. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +4 -4
  165. data/lib/new_relic/agent/instrumentation/grape.rb +12 -13
  166. data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +97 -0
  167. data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +89 -0
  168. data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +111 -0
  169. data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +30 -0
  170. data/lib/new_relic/agent/instrumentation/grpc/helper.rb +32 -0
  171. data/lib/new_relic/agent/instrumentation/grpc/server/chain.rb +69 -0
  172. data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +134 -0
  173. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_desc_prepend.rb +35 -0
  174. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_server_prepend.rb +26 -0
  175. data/lib/new_relic/agent/instrumentation/grpc_client.rb +23 -0
  176. data/lib/new_relic/agent/instrumentation/grpc_server.rb +25 -0
  177. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +3 -4
  178. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +7 -8
  179. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +1 -3
  180. data/lib/new_relic/agent/instrumentation/httpclient.rb +3 -3
  181. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +3 -3
  182. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +11 -11
  183. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +2 -2
  184. data/lib/new_relic/agent/instrumentation/httprb.rb +4 -4
  185. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +4 -5
  186. data/lib/new_relic/agent/instrumentation/logger/chain.rb +2 -2
  187. data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +27 -20
  188. data/lib/new_relic/agent/instrumentation/logger/prepend.rb +1 -1
  189. data/lib/new_relic/agent/instrumentation/logger.rb +7 -6
  190. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +2 -3
  191. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +26 -18
  192. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +8 -10
  193. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +20 -18
  194. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +22 -15
  195. data/lib/new_relic/agent/instrumentation/memcache.rb +22 -23
  196. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +11 -12
  197. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +5 -7
  198. data/lib/new_relic/agent/instrumentation/mongo.rb +3 -3
  199. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +21 -18
  200. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +4 -5
  201. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +10 -10
  202. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +5 -5
  203. data/lib/new_relic/agent/instrumentation/net_http.rb +8 -8
  204. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +51 -9
  205. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +1 -1
  206. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +4 -3
  207. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +2 -2
  208. data/lib/new_relic/agent/instrumentation/padrino.rb +4 -9
  209. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +6 -6
  210. data/lib/new_relic/agent/instrumentation/queue_time.rb +5 -6
  211. data/lib/new_relic/agent/instrumentation/rack/chain.rb +27 -19
  212. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +3 -2
  213. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +14 -12
  214. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +13 -7
  215. data/lib/new_relic/agent/instrumentation/rack.rb +15 -15
  216. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +15 -15
  217. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +4 -4
  218. data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +9 -8
  219. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +17 -5
  220. data/lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb +8 -5
  221. data/lib/new_relic/agent/instrumentation/rails_notifications/custom_events.rb +30 -0
  222. data/lib/new_relic/agent/instrumentation/rake/chain.rb +2 -7
  223. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +14 -16
  224. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +1 -1
  225. data/lib/new_relic/agent/instrumentation/rake.rb +9 -9
  226. data/lib/new_relic/agent/instrumentation/redis/chain.rb +25 -14
  227. data/lib/new_relic/agent/instrumentation/redis/constants.rb +17 -0
  228. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +53 -25
  229. data/lib/new_relic/agent/instrumentation/redis/middleware.rb +16 -0
  230. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +10 -5
  231. data/lib/new_relic/agent/instrumentation/redis.rb +13 -7
  232. data/lib/new_relic/agent/instrumentation/resque/chain.rb +4 -5
  233. data/lib/new_relic/agent/instrumentation/resque/helper.rb +2 -2
  234. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +4 -5
  235. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +2 -3
  236. data/lib/new_relic/agent/instrumentation/resque.rb +17 -17
  237. data/lib/new_relic/agent/instrumentation/sequel.rb +16 -19
  238. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +2 -2
  239. data/lib/new_relic/agent/instrumentation/sidekiq/client.rb +20 -0
  240. data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delayed_class.rb +30 -0
  241. data/lib/new_relic/agent/instrumentation/sidekiq/server.rb +37 -0
  242. data/lib/new_relic/agent/instrumentation/sidekiq.rb +24 -70
  243. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +1 -1
  244. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +2 -3
  245. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +5 -4
  246. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +1 -1
  247. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +2 -2
  248. data/lib/new_relic/agent/instrumentation/sinatra.rb +26 -17
  249. data/lib/new_relic/agent/instrumentation/thread/chain.rb +24 -0
  250. data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +28 -0
  251. data/lib/new_relic/agent/instrumentation/thread/prepend.rb +22 -0
  252. data/lib/new_relic/agent/instrumentation/thread.rb +20 -0
  253. data/lib/new_relic/agent/instrumentation/tilt/chain.rb +1 -1
  254. data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +2 -2
  255. data/lib/new_relic/agent/instrumentation/tilt/prepend.rb +1 -1
  256. data/lib/new_relic/agent/instrumentation/tilt.rb +4 -4
  257. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +5 -5
  258. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +13 -15
  259. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +2 -2
  260. data/lib/new_relic/agent/instrumentation/typhoeus.rb +2 -2
  261. data/lib/new_relic/agent/instrumentation.rb +1 -1
  262. data/lib/new_relic/agent/internal_agent_error.rb +2 -2
  263. data/lib/new_relic/agent/javascript_instrumentor.rb +38 -37
  264. data/lib/new_relic/agent/linking_metadata.rb +44 -0
  265. data/lib/new_relic/agent/local_log_decorator.rb +37 -0
  266. data/lib/new_relic/agent/log_event_aggregator.rb +235 -0
  267. data/lib/new_relic/agent/log_once.rb +1 -1
  268. data/lib/new_relic/agent/log_priority.rb +20 -0
  269. data/lib/new_relic/agent/logging.rb +21 -17
  270. data/lib/new_relic/agent/memory_logger.rb +2 -2
  271. data/lib/new_relic/agent/messaging.rb +61 -63
  272. data/lib/new_relic/agent/method_tracer.rb +28 -22
  273. data/lib/new_relic/agent/method_tracer_helpers.rb +88 -11
  274. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +16 -16
  275. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +5 -4
  276. data/lib/new_relic/agent/monitors/inbound_request_monitor.rb +1 -2
  277. data/lib/new_relic/agent/monitors/synthetics_monitor.rb +6 -9
  278. data/lib/new_relic/agent/monitors.rb +6 -7
  279. data/lib/new_relic/agent/new_relic_service/encoders.rb +6 -6
  280. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +5 -5
  281. data/lib/new_relic/agent/new_relic_service/marshaller.rb +2 -2
  282. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +4 -4
  283. data/lib/new_relic/agent/new_relic_service.rb +242 -185
  284. data/lib/new_relic/agent/{noticible_error.rb → noticeable_error.rb} +2 -5
  285. data/lib/new_relic/agent/null_logger.rb +7 -3
  286. data/lib/new_relic/agent/obfuscator.rb +8 -10
  287. data/lib/new_relic/agent/parameter_filtering.rb +24 -10
  288. data/lib/new_relic/agent/payload_metric_mapping.rb +9 -10
  289. data/lib/new_relic/agent/pipe_channel_manager.rb +17 -11
  290. data/lib/new_relic/agent/pipe_service.rb +7 -4
  291. data/lib/new_relic/agent/prepend_supportability.rb +2 -2
  292. data/lib/new_relic/agent/priority_sampled_buffer.rb +8 -11
  293. data/lib/new_relic/agent/range_extensions.rb +8 -28
  294. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +11 -11
  295. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +12 -13
  296. data/lib/new_relic/agent/rules_engine.rb +5 -4
  297. data/lib/new_relic/agent/sampler.rb +3 -4
  298. data/lib/new_relic/agent/sampler_collection.rb +3 -4
  299. data/lib/new_relic/agent/samplers/cpu_sampler.rb +2 -1
  300. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +6 -6
  301. data/lib/new_relic/agent/samplers/memory_sampler.rb +24 -13
  302. data/lib/new_relic/agent/samplers/object_sampler.rb +1 -1
  303. data/lib/new_relic/agent/samplers/vm_sampler.rb +21 -19
  304. data/lib/new_relic/agent/span_event_aggregator.rb +10 -10
  305. data/lib/new_relic/agent/span_event_primitive.rb +62 -56
  306. data/lib/new_relic/agent/sql_sampler.rb +17 -17
  307. data/lib/new_relic/agent/stats.rb +78 -41
  308. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +9 -11
  309. data/lib/new_relic/agent/stats_engine/stats_hash.rb +12 -13
  310. data/lib/new_relic/agent/stats_engine.rb +7 -7
  311. data/lib/new_relic/agent/synthetics_event_aggregator.rb +7 -8
  312. data/lib/new_relic/agent/system_info.rb +85 -65
  313. data/lib/new_relic/agent/threading/agent_thread.rb +18 -14
  314. data/lib/new_relic/agent/threading/backtrace_node.rb +12 -13
  315. data/lib/new_relic/agent/threading/backtrace_service.rb +10 -9
  316. data/lib/new_relic/agent/threading/thread_profile.rb +22 -22
  317. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +1 -1
  318. data/lib/new_relic/agent/tracer.rb +82 -56
  319. data/lib/new_relic/agent/transaction/abstract_segment.rb +100 -37
  320. data/lib/new_relic/agent/transaction/datastore_segment.rb +19 -18
  321. data/lib/new_relic/agent/transaction/distributed_tracer.rb +62 -56
  322. data/lib/new_relic/agent/transaction/distributed_tracing.rb +43 -44
  323. data/lib/new_relic/agent/transaction/external_request_segment.rb +41 -34
  324. data/lib/new_relic/agent/transaction/message_broker_segment.rb +30 -29
  325. data/lib/new_relic/agent/transaction/request_attributes.rb +35 -35
  326. data/lib/new_relic/agent/transaction/segment.rb +17 -10
  327. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +1 -3
  328. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +1 -1
  329. data/lib/new_relic/agent/transaction/trace.rb +15 -11
  330. data/lib/new_relic/agent/transaction/trace_builder.rb +10 -10
  331. data/lib/new_relic/agent/transaction/trace_context.rb +35 -35
  332. data/lib/new_relic/agent/transaction/trace_node.rb +25 -24
  333. data/lib/new_relic/agent/transaction/tracing.rb +14 -11
  334. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +5 -5
  335. data/lib/new_relic/agent/transaction.rb +169 -125
  336. data/lib/new_relic/agent/transaction_error_primitive.rb +27 -25
  337. data/lib/new_relic/agent/transaction_event_aggregator.rb +12 -12
  338. data/lib/new_relic/agent/transaction_event_primitive.rb +32 -33
  339. data/lib/new_relic/agent/transaction_event_recorder.rb +16 -15
  340. data/lib/new_relic/agent/transaction_metrics.rb +10 -9
  341. data/lib/new_relic/agent/transaction_sampler.rb +5 -6
  342. data/lib/new_relic/agent/transaction_time_aggregator.rb +21 -20
  343. data/lib/new_relic/agent/utilization/aws.rb +33 -3
  344. data/lib/new_relic/agent/utilization/azure.rb +3 -3
  345. data/lib/new_relic/agent/utilization/gcp.rb +7 -7
  346. data/lib/new_relic/agent/utilization/pcf.rb +5 -4
  347. data/lib/new_relic/agent/utilization/vendor.rb +43 -28
  348. data/lib/new_relic/agent/utilization_data.rb +7 -5
  349. data/lib/new_relic/agent/vm/jruby_vm.rb +1 -1
  350. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +2 -2
  351. data/lib/new_relic/agent/vm/mri_vm.rb +40 -15
  352. data/lib/new_relic/agent/vm/snapshot.rb +4 -4
  353. data/lib/new_relic/agent/vm.rb +1 -1
  354. data/lib/new_relic/agent/worker_loop.rb +5 -7
  355. data/lib/new_relic/agent.rb +62 -81
  356. data/lib/new_relic/cli/command.rb +20 -22
  357. data/lib/new_relic/cli/commands/deployments.rb +91 -41
  358. data/lib/new_relic/cli/commands/install.rb +21 -24
  359. data/lib/new_relic/coerce.rb +15 -13
  360. data/lib/new_relic/collection_helper.rb +50 -48
  361. data/lib/new_relic/constants.rb +2 -1
  362. data/lib/new_relic/control/class_methods.rb +3 -3
  363. data/lib/new_relic/control/frameworks/external.rb +2 -2
  364. data/lib/new_relic/control/frameworks/rails.rb +13 -9
  365. data/lib/new_relic/control/frameworks/rails3.rb +3 -4
  366. data/lib/new_relic/control/frameworks/rails4.rb +1 -1
  367. data/lib/new_relic/control/frameworks/rails_notifications.rb +1 -1
  368. data/lib/new_relic/control/frameworks/ruby.rb +3 -3
  369. data/lib/new_relic/control/frameworks/sinatra.rb +7 -1
  370. data/lib/new_relic/control/frameworks.rb +1 -1
  371. data/lib/new_relic/control/instance_methods.rb +26 -45
  372. data/lib/new_relic/control/instrumentation.rb +39 -11
  373. data/lib/new_relic/control/private_instance_methods.rb +48 -0
  374. data/lib/new_relic/control/server_methods.rb +3 -4
  375. data/lib/new_relic/control.rb +1 -2
  376. data/lib/new_relic/delayed_job_injection.rb +1 -1
  377. data/lib/new_relic/dependency_detection.rb +29 -28
  378. data/lib/new_relic/environment_report.rb +40 -32
  379. data/lib/new_relic/helper.rb +48 -7
  380. data/lib/new_relic/language_support.rb +29 -5
  381. data/lib/new_relic/latest_changes.rb +7 -6
  382. data/lib/new_relic/local_environment.rb +22 -26
  383. data/lib/new_relic/metric_data.rb +31 -26
  384. data/lib/new_relic/metric_spec.rb +8 -6
  385. data/lib/new_relic/noticed_error.rb +17 -21
  386. data/lib/new_relic/rack/agent_hooks.rb +1 -1
  387. data/lib/new_relic/rack/agent_middleware.rb +5 -3
  388. data/lib/new_relic/rack/browser_monitoring.rb +133 -123
  389. data/lib/new_relic/rack.rb +1 -1
  390. data/lib/new_relic/recipes/capistrano3.rb +3 -61
  391. data/lib/new_relic/recipes/capistrano_legacy.rb +23 -26
  392. data/lib/new_relic/recipes/helpers/send_deployment.rb +70 -0
  393. data/lib/new_relic/recipes.rb +1 -1
  394. data/lib/new_relic/supportability_helper.rb +8 -9
  395. data/lib/new_relic/traced_thread.rb +39 -0
  396. data/lib/new_relic/version.rb +6 -17
  397. data/lib/newrelic_rpm.rb +14 -3
  398. data/lib/sequel/extensions/{newrelic_instrumentation.rb → new_relic_instrumentation.rb} +15 -18
  399. data/lib/sequel/plugins/{newrelic_instrumentation.rb → new_relic_instrumentation.rb} +8 -14
  400. data/lib/tasks/all.rb +2 -2
  401. data/lib/tasks/config.rake +21 -117
  402. data/lib/tasks/coverage_report.rake +28 -0
  403. data/lib/tasks/helpers/format.rb +123 -0
  404. data/lib/tasks/helpers/matches.rb +12 -0
  405. data/lib/tasks/helpers/prompt.rb +24 -0
  406. data/lib/tasks/helpers/removers.rb +33 -0
  407. data/lib/tasks/install.rake +4 -0
  408. data/lib/tasks/instrumentation_generator/README.md +63 -0
  409. data/lib/tasks/instrumentation_generator/TODO.md +33 -0
  410. data/lib/tasks/instrumentation_generator/instrumentation.thor +121 -0
  411. data/lib/tasks/instrumentation_generator/templates/Envfile.tt +9 -0
  412. data/lib/tasks/instrumentation_generator/templates/chain.tt +22 -0
  413. data/lib/tasks/instrumentation_generator/templates/chain_method.tt +8 -0
  414. data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +29 -0
  415. data/lib/tasks/instrumentation_generator/templates/instrumentation.tt +13 -0
  416. data/lib/tasks/instrumentation_generator/templates/instrumentation_method.tt +3 -0
  417. data/lib/tasks/instrumentation_generator/templates/newrelic.yml.tt +19 -0
  418. data/lib/tasks/instrumentation_generator/templates/prepend.tt +13 -0
  419. data/lib/tasks/instrumentation_generator/templates/prepend_method.tt +3 -0
  420. data/lib/tasks/instrumentation_generator/templates/test.tt +15 -0
  421. data/lib/tasks/multiverse.rake +4 -0
  422. data/lib/tasks/multiverse.rb +5 -32
  423. data/lib/tasks/newrelic.rb +1 -1
  424. data/lib/tasks/tests.rake +10 -15
  425. data/newrelic.yml +544 -452
  426. data/newrelic_rpm.gemspec +35 -31
  427. data/recipes/newrelic.rb +2 -2
  428. data/test/agent_helper.rb +196 -180
  429. metadata +130 -102
  430. data/ROADMAP.md +0 -24
  431. data/bin/mongrel_rpm +0 -33
  432. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +0 -44
  433. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +0 -75
  434. data/lib/new_relic/agent/instrumentation/authlogic.rb +0 -25
  435. data/lib/new_relic/agent/instrumentation/data_mapper.rb +0 -204
  436. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +0 -26
  437. data/lib/new_relic/agent/instrumentation/sunspot.rb +0 -33
  438. /data/lib/tasks/{config.html.erb → helpers/config.html.erb} +0 -0
  439. /data/lib/tasks/{config.text.erb → helpers/config.text.erb} +0 -0
metadata CHANGED
@@ -1,89 +1,90 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: newrelic_rpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.2.0
4
+ version: 9.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Aaron Huntsman
8
7
  - Tanna McClure
9
8
  - Kayla Reopelle
9
+ - James Bunch
10
+ - Hannah Ramadan
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2021-11-29 00:00:00.000000000 Z
14
+ date: 2023-02-21 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
- name: rake
17
+ name: bundler
17
18
  requirement: !ruby/object:Gem::Requirement
18
19
  requirements:
19
- - - '='
20
+ - - ">="
20
21
  - !ruby/object:Gem::Version
21
- version: 12.3.3
22
+ version: '0'
22
23
  type: :development
23
24
  prerelease: false
24
25
  version_requirements: !ruby/object:Gem::Requirement
25
26
  requirements:
26
- - - '='
27
+ - - ">="
27
28
  - !ruby/object:Gem::Version
28
- version: 12.3.3
29
+ version: '0'
29
30
  - !ruby/object:Gem::Dependency
30
- name: rb-inotify
31
+ name: minitest
31
32
  requirement: !ruby/object:Gem::Requirement
32
33
  requirements:
33
34
  - - '='
34
35
  - !ruby/object:Gem::Version
35
- version: 0.9.10
36
+ version: 5.3.3
36
37
  type: :development
37
38
  prerelease: false
38
39
  version_requirements: !ruby/object:Gem::Requirement
39
40
  requirements:
40
41
  - - '='
41
42
  - !ruby/object:Gem::Version
42
- version: 0.9.10
43
+ version: 5.3.3
43
44
  - !ruby/object:Gem::Dependency
44
- name: listen
45
+ name: minitest-stub-const
45
46
  requirement: !ruby/object:Gem::Requirement
46
47
  requirements:
47
48
  - - '='
48
49
  - !ruby/object:Gem::Version
49
- version: 3.0.8
50
+ version: '0.6'
50
51
  type: :development
51
52
  prerelease: false
52
53
  version_requirements: !ruby/object:Gem::Requirement
53
54
  requirements:
54
55
  - - '='
55
56
  - !ruby/object:Gem::Version
56
- version: 3.0.8
57
+ version: '0.6'
57
58
  - !ruby/object:Gem::Dependency
58
- name: minitest
59
+ name: mocha
59
60
  requirement: !ruby/object:Gem::Requirement
60
61
  requirements:
61
- - - '='
62
+ - - "~>"
62
63
  - !ruby/object:Gem::Version
63
- version: 4.7.5
64
+ version: '1.16'
64
65
  type: :development
65
66
  prerelease: false
66
67
  version_requirements: !ruby/object:Gem::Requirement
67
68
  requirements:
68
- - - '='
69
+ - - "~>"
69
70
  - !ruby/object:Gem::Version
70
- version: 4.7.5
71
+ version: '1.16'
71
72
  - !ruby/object:Gem::Dependency
72
- name: mocha
73
+ name: rake
73
74
  requirement: !ruby/object:Gem::Requirement
74
75
  requirements:
75
- - - "~>"
76
+ - - '='
76
77
  - !ruby/object:Gem::Version
77
- version: 1.9.0
78
+ version: 12.3.3
78
79
  type: :development
79
80
  prerelease: false
80
81
  version_requirements: !ruby/object:Gem::Requirement
81
82
  requirements:
82
- - - "~>"
83
+ - - '='
83
84
  - !ruby/object:Gem::Version
84
- version: 1.9.0
85
+ version: 12.3.3
85
86
  - !ruby/object:Gem::Dependency
86
- name: yard
87
+ name: simplecov
87
88
  requirement: !ruby/object:Gem::Requirement
88
89
  requirements:
89
90
  - - ">="
@@ -97,77 +98,21 @@ dependencies:
97
98
  - !ruby/object:Gem::Version
98
99
  version: '0'
99
100
  - !ruby/object:Gem::Dependency
100
- name: pry-nav
101
- requirement: !ruby/object:Gem::Requirement
102
- requirements:
103
- - - "~>"
104
- - !ruby/object:Gem::Version
105
- version: 0.3.0
106
- type: :development
107
- prerelease: false
108
- version_requirements: !ruby/object:Gem::Requirement
109
- requirements:
110
- - - "~>"
111
- - !ruby/object:Gem::Version
112
- version: 0.3.0
113
- - !ruby/object:Gem::Dependency
114
- name: pry-stack_explorer
115
- requirement: !ruby/object:Gem::Requirement
116
- requirements:
117
- - - "~>"
118
- - !ruby/object:Gem::Version
119
- version: 0.4.9
120
- type: :development
121
- prerelease: false
122
- version_requirements: !ruby/object:Gem::Requirement
123
- requirements:
124
- - - "~>"
125
- - !ruby/object:Gem::Version
126
- version: 0.4.9
127
- - !ruby/object:Gem::Dependency
128
- name: guard
129
- requirement: !ruby/object:Gem::Requirement
130
- requirements:
131
- - - "~>"
132
- - !ruby/object:Gem::Version
133
- version: 2.16.0
134
- type: :development
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- requirements:
138
- - - "~>"
139
- - !ruby/object:Gem::Version
140
- version: 2.16.0
141
- - !ruby/object:Gem::Dependency
142
- name: guard-minitest
101
+ name: warning
143
102
  requirement: !ruby/object:Gem::Requirement
144
103
  requirements:
145
- - - "~>"
146
- - !ruby/object:Gem::Version
147
- version: 2.4.0
148
- type: :development
149
- prerelease: false
150
- version_requirements: !ruby/object:Gem::Requirement
151
- requirements:
152
- - - "~>"
153
- - !ruby/object:Gem::Version
154
- version: 2.4.0
155
- - !ruby/object:Gem::Dependency
156
- name: hometown
157
- requirement: !ruby/object:Gem::Requirement
158
- requirements:
159
- - - "~>"
104
+ - - ">="
160
105
  - !ruby/object:Gem::Version
161
- version: 0.2.5
106
+ version: '0'
162
107
  type: :development
163
108
  prerelease: false
164
109
  version_requirements: !ruby/object:Gem::Requirement
165
110
  requirements:
166
- - - "~>"
111
+ - - ">="
167
112
  - !ruby/object:Gem::Version
168
- version: 0.2.5
113
+ version: '0'
169
114
  - !ruby/object:Gem::Dependency
170
- name: bundler
115
+ name: yard
171
116
  requirement: !ruby/object:Gem::Requirement
172
117
  requirements:
173
118
  - - ">="
@@ -189,7 +134,6 @@ description: |
189
134
  https://github.com/newrelic/newrelic-ruby-agent/
190
135
  email: support@newrelic.com
191
136
  executables:
192
- - mongrel_rpm
193
137
  - newrelic_cmd
194
138
  - newrelic
195
139
  - nrdebug
@@ -203,27 +147,42 @@ extra_rdoc_files:
203
147
  files:
204
148
  - ".gitignore"
205
149
  - ".project"
150
+ - ".rubocop.yml"
151
+ - ".rubocop_todo.yml"
152
+ - ".simplecov"
153
+ - ".snyk"
206
154
  - ".yardopts"
155
+ - Brewfile
207
156
  - CHANGELOG.md
208
157
  - CONTRIBUTING.md
158
+ - DOCKER.md
159
+ - Dockerfile
209
160
  - Gemfile
210
161
  - Guardfile
211
162
  - LICENSE
212
163
  - README.md
213
- - ROADMAP.md
214
164
  - Rakefile
215
165
  - THIRD_PARTY_NOTICES.md
216
- - bin/mongrel_rpm
166
+ - Thorfile
217
167
  - bin/newrelic
218
168
  - bin/newrelic_cmd
219
169
  - bin/nrdebug
220
170
  - config.dot
221
171
  - config/database.yml
172
+ - docker-compose.yml
222
173
  - init.rb
223
174
  - install.rb
175
+ - lefthook.yml
224
176
  - lib/new_relic/agent.rb
225
177
  - lib/new_relic/agent/adaptive_sampler.rb
226
178
  - lib/new_relic/agent/agent.rb
179
+ - lib/new_relic/agent/agent_helpers/connect.rb
180
+ - lib/new_relic/agent/agent_helpers/harvest.rb
181
+ - lib/new_relic/agent/agent_helpers/shutdown.rb
182
+ - lib/new_relic/agent/agent_helpers/special_startup.rb
183
+ - lib/new_relic/agent/agent_helpers/start_worker_thread.rb
184
+ - lib/new_relic/agent/agent_helpers/startup.rb
185
+ - lib/new_relic/agent/agent_helpers/transmit.rb
227
186
  - lib/new_relic/agent/agent_logger.rb
228
187
  - lib/new_relic/agent/attribute_filter.rb
229
188
  - lib/new_relic/agent/attribute_processing.rb
@@ -260,7 +219,7 @@ files:
260
219
  - lib/new_relic/agent/datastores/mongo.rb
261
220
  - lib/new_relic/agent/datastores/mongo/event_formatter.rb
262
221
  - lib/new_relic/agent/datastores/mongo/metric_translator.rb
263
- - lib/new_relic/agent/datastores/mongo/obfuscator.rb
222
+ - lib/new_relic/agent/datastores/nosql_obfuscator.rb
264
223
  - lib/new_relic/agent/datastores/redis.rb
265
224
  - lib/new_relic/agent/deprecator.rb
266
225
  - lib/new_relic/agent/distributed_tracing.rb
@@ -296,9 +255,17 @@ files:
296
255
  - lib/new_relic/agent/http_clients/uri_util.rb
297
256
  - lib/new_relic/agent/instrumentation.rb
298
257
  - lib/new_relic/agent/instrumentation/action_cable_subscriber.rb
258
+ - lib/new_relic/agent/instrumentation/action_controller_other_subscriber.rb
299
259
  - lib/new_relic/agent/instrumentation/action_controller_subscriber.rb
260
+ - lib/new_relic/agent/instrumentation/action_dispatch.rb
261
+ - lib/new_relic/agent/instrumentation/action_dispatch_subscriber.rb
262
+ - lib/new_relic/agent/instrumentation/action_mailbox.rb
263
+ - lib/new_relic/agent/instrumentation/action_mailbox_subscriber.rb
264
+ - lib/new_relic/agent/instrumentation/action_mailer.rb
265
+ - lib/new_relic/agent/instrumentation/action_mailer_subscriber.rb
300
266
  - lib/new_relic/agent/instrumentation/action_view_subscriber.rb
301
267
  - lib/new_relic/agent/instrumentation/active_job.rb
268
+ - lib/new_relic/agent/instrumentation/active_job_subscriber.rb
302
269
  - lib/new_relic/agent/instrumentation/active_merchant.rb
303
270
  - lib/new_relic/agent/instrumentation/active_record.rb
304
271
  - lib/new_relic/agent/instrumentation/active_record_helper.rb
@@ -307,28 +274,56 @@ files:
307
274
  - lib/new_relic/agent/instrumentation/active_record_subscriber.rb
308
275
  - lib/new_relic/agent/instrumentation/active_storage.rb
309
276
  - lib/new_relic/agent/instrumentation/active_storage_subscriber.rb
310
- - lib/new_relic/agent/instrumentation/acts_as_solr.rb
311
- - lib/new_relic/agent/instrumentation/authlogic.rb
277
+ - lib/new_relic/agent/instrumentation/active_support.rb
278
+ - lib/new_relic/agent/instrumentation/active_support_logger.rb
279
+ - lib/new_relic/agent/instrumentation/active_support_logger/chain.rb
280
+ - lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb
281
+ - lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb
282
+ - lib/new_relic/agent/instrumentation/active_support_subscriber.rb
312
283
  - lib/new_relic/agent/instrumentation/bunny.rb
313
284
  - lib/new_relic/agent/instrumentation/bunny/chain.rb
314
285
  - lib/new_relic/agent/instrumentation/bunny/instrumentation.rb
315
286
  - lib/new_relic/agent/instrumentation/bunny/prepend.rb
287
+ - lib/new_relic/agent/instrumentation/concurrent_ruby.rb
288
+ - lib/new_relic/agent/instrumentation/concurrent_ruby/chain.rb
289
+ - lib/new_relic/agent/instrumentation/concurrent_ruby/instrumentation.rb
290
+ - lib/new_relic/agent/instrumentation/concurrent_ruby/prepend.rb
316
291
  - lib/new_relic/agent/instrumentation/controller_instrumentation.rb
317
292
  - lib/new_relic/agent/instrumentation/curb.rb
318
293
  - lib/new_relic/agent/instrumentation/curb/chain.rb
319
294
  - lib/new_relic/agent/instrumentation/curb/instrumentation.rb
320
295
  - lib/new_relic/agent/instrumentation/curb/prepend.rb
321
- - lib/new_relic/agent/instrumentation/data_mapper.rb
296
+ - lib/new_relic/agent/instrumentation/custom_events.rb
297
+ - lib/new_relic/agent/instrumentation/custom_events_subscriber.rb
322
298
  - lib/new_relic/agent/instrumentation/delayed_job/chain.rb
323
299
  - lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb
324
300
  - lib/new_relic/agent/instrumentation/delayed_job/prepend.rb
325
301
  - lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb
302
+ - lib/new_relic/agent/instrumentation/elasticsearch.rb
303
+ - lib/new_relic/agent/instrumentation/elasticsearch/chain.rb
304
+ - lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb
305
+ - lib/new_relic/agent/instrumentation/elasticsearch/prepend.rb
326
306
  - lib/new_relic/agent/instrumentation/excon.rb
327
307
  - lib/new_relic/agent/instrumentation/excon/middleware.rb
308
+ - lib/new_relic/agent/instrumentation/fiber.rb
309
+ - lib/new_relic/agent/instrumentation/fiber/chain.rb
310
+ - lib/new_relic/agent/instrumentation/fiber/instrumentation.rb
311
+ - lib/new_relic/agent/instrumentation/fiber/prepend.rb
328
312
  - lib/new_relic/agent/instrumentation/grape.rb
329
313
  - lib/new_relic/agent/instrumentation/grape/chain.rb
330
314
  - lib/new_relic/agent/instrumentation/grape/instrumentation.rb
331
315
  - lib/new_relic/agent/instrumentation/grape/prepend.rb
316
+ - lib/new_relic/agent/instrumentation/grpc/client/chain.rb
317
+ - lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb
318
+ - lib/new_relic/agent/instrumentation/grpc/client/prepend.rb
319
+ - lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb
320
+ - lib/new_relic/agent/instrumentation/grpc/helper.rb
321
+ - lib/new_relic/agent/instrumentation/grpc/server/chain.rb
322
+ - lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb
323
+ - lib/new_relic/agent/instrumentation/grpc/server/rpc_desc_prepend.rb
324
+ - lib/new_relic/agent/instrumentation/grpc/server/rpc_server_prepend.rb
325
+ - lib/new_relic/agent/instrumentation/grpc_client.rb
326
+ - lib/new_relic/agent/instrumentation/grpc_server.rb
332
327
  - lib/new_relic/agent/instrumentation/httpclient.rb
333
328
  - lib/new_relic/agent/instrumentation/httpclient/chain.rb
334
329
  - lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb
@@ -373,14 +368,16 @@ files:
373
368
  - lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb
374
369
  - lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb
375
370
  - lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb
376
- - lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb
371
+ - lib/new_relic/agent/instrumentation/rails_notifications/custom_events.rb
377
372
  - lib/new_relic/agent/instrumentation/rake.rb
378
373
  - lib/new_relic/agent/instrumentation/rake/chain.rb
379
374
  - lib/new_relic/agent/instrumentation/rake/instrumentation.rb
380
375
  - lib/new_relic/agent/instrumentation/rake/prepend.rb
381
376
  - lib/new_relic/agent/instrumentation/redis.rb
382
377
  - lib/new_relic/agent/instrumentation/redis/chain.rb
378
+ - lib/new_relic/agent/instrumentation/redis/constants.rb
383
379
  - lib/new_relic/agent/instrumentation/redis/instrumentation.rb
380
+ - lib/new_relic/agent/instrumentation/redis/middleware.rb
384
381
  - lib/new_relic/agent/instrumentation/redis/prepend.rb
385
382
  - lib/new_relic/agent/instrumentation/resque.rb
386
383
  - lib/new_relic/agent/instrumentation/resque/chain.rb
@@ -390,13 +387,19 @@ files:
390
387
  - lib/new_relic/agent/instrumentation/sequel.rb
391
388
  - lib/new_relic/agent/instrumentation/sequel_helper.rb
392
389
  - lib/new_relic/agent/instrumentation/sidekiq.rb
390
+ - lib/new_relic/agent/instrumentation/sidekiq/client.rb
391
+ - lib/new_relic/agent/instrumentation/sidekiq/extensions/delayed_class.rb
392
+ - lib/new_relic/agent/instrumentation/sidekiq/server.rb
393
393
  - lib/new_relic/agent/instrumentation/sinatra.rb
394
394
  - lib/new_relic/agent/instrumentation/sinatra/chain.rb
395
395
  - lib/new_relic/agent/instrumentation/sinatra/ignorer.rb
396
396
  - lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb
397
397
  - lib/new_relic/agent/instrumentation/sinatra/prepend.rb
398
398
  - lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb
399
- - lib/new_relic/agent/instrumentation/sunspot.rb
399
+ - lib/new_relic/agent/instrumentation/thread.rb
400
+ - lib/new_relic/agent/instrumentation/thread/chain.rb
401
+ - lib/new_relic/agent/instrumentation/thread/instrumentation.rb
402
+ - lib/new_relic/agent/instrumentation/thread/prepend.rb
400
403
  - lib/new_relic/agent/instrumentation/tilt.rb
401
404
  - lib/new_relic/agent/instrumentation/tilt/chain.rb
402
405
  - lib/new_relic/agent/instrumentation/tilt/instrumentation.rb
@@ -407,7 +410,11 @@ files:
407
410
  - lib/new_relic/agent/instrumentation/typhoeus/prepend.rb
408
411
  - lib/new_relic/agent/internal_agent_error.rb
409
412
  - lib/new_relic/agent/javascript_instrumentor.rb
413
+ - lib/new_relic/agent/linking_metadata.rb
414
+ - lib/new_relic/agent/local_log_decorator.rb
415
+ - lib/new_relic/agent/log_event_aggregator.rb
410
416
  - lib/new_relic/agent/log_once.rb
417
+ - lib/new_relic/agent/log_priority.rb
411
418
  - lib/new_relic/agent/logging.rb
412
419
  - lib/new_relic/agent/memory_logger.rb
413
420
  - lib/new_relic/agent/messaging.rb
@@ -423,7 +430,7 @@ files:
423
430
  - lib/new_relic/agent/new_relic_service/json_marshaller.rb
424
431
  - lib/new_relic/agent/new_relic_service/marshaller.rb
425
432
  - lib/new_relic/agent/new_relic_service/security_policy_settings.rb
426
- - lib/new_relic/agent/noticible_error.rb
433
+ - lib/new_relic/agent/noticeable_error.rb
427
434
  - lib/new_relic/agent/null_logger.rb
428
435
  - lib/new_relic/agent/obfuscator.rb
429
436
  - lib/new_relic/agent/parameter_filtering.rb
@@ -512,6 +519,7 @@ files:
512
519
  - lib/new_relic/control/frameworks/sinatra.rb
513
520
  - lib/new_relic/control/instance_methods.rb
514
521
  - lib/new_relic/control/instrumentation.rb
522
+ - lib/new_relic/control/private_instance_methods.rb
515
523
  - lib/new_relic/control/server_methods.rb
516
524
  - lib/new_relic/delayed_job_injection.rb
517
525
  - lib/new_relic/dependency_detection.rb
@@ -530,16 +538,36 @@ files:
530
538
  - lib/new_relic/recipes.rb
531
539
  - lib/new_relic/recipes/capistrano3.rb
532
540
  - lib/new_relic/recipes/capistrano_legacy.rb
541
+ - lib/new_relic/recipes/helpers/send_deployment.rb
533
542
  - lib/new_relic/supportability_helper.rb
543
+ - lib/new_relic/traced_thread.rb
534
544
  - lib/new_relic/version.rb
535
545
  - lib/newrelic_rpm.rb
536
- - lib/sequel/extensions/newrelic_instrumentation.rb
537
- - lib/sequel/plugins/newrelic_instrumentation.rb
546
+ - lib/sequel/extensions/new_relic_instrumentation.rb
547
+ - lib/sequel/plugins/new_relic_instrumentation.rb
538
548
  - lib/tasks/all.rb
539
- - lib/tasks/config.html.erb
540
549
  - lib/tasks/config.rake
541
- - lib/tasks/config.text.erb
550
+ - lib/tasks/coverage_report.rake
551
+ - lib/tasks/helpers/config.html.erb
552
+ - lib/tasks/helpers/config.text.erb
553
+ - lib/tasks/helpers/format.rb
554
+ - lib/tasks/helpers/matches.rb
555
+ - lib/tasks/helpers/prompt.rb
556
+ - lib/tasks/helpers/removers.rb
542
557
  - lib/tasks/install.rake
558
+ - lib/tasks/instrumentation_generator/README.md
559
+ - lib/tasks/instrumentation_generator/TODO.md
560
+ - lib/tasks/instrumentation_generator/instrumentation.thor
561
+ - lib/tasks/instrumentation_generator/templates/Envfile.tt
562
+ - lib/tasks/instrumentation_generator/templates/chain.tt
563
+ - lib/tasks/instrumentation_generator/templates/chain_method.tt
564
+ - lib/tasks/instrumentation_generator/templates/dependency_detection.tt
565
+ - lib/tasks/instrumentation_generator/templates/instrumentation.tt
566
+ - lib/tasks/instrumentation_generator/templates/instrumentation_method.tt
567
+ - lib/tasks/instrumentation_generator/templates/newrelic.yml.tt
568
+ - lib/tasks/instrumentation_generator/templates/prepend.tt
569
+ - lib/tasks/instrumentation_generator/templates/prepend_method.tt
570
+ - lib/tasks/instrumentation_generator/templates/test.tt
543
571
  - lib/tasks/multiverse.rake
544
572
  - lib/tasks/multiverse.rb
545
573
  - lib/tasks/newrelic.rb
@@ -565,7 +593,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
565
593
  requirements:
566
594
  - - ">="
567
595
  - !ruby/object:Gem::Version
568
- version: 2.0.0
596
+ version: 2.4.0
569
597
  required_rubygems_version: !ruby/object:Gem::Requirement
570
598
  requirements:
571
599
  - - ">"
data/ROADMAP.md DELETED
@@ -1,24 +0,0 @@
1
- # Ruby Agent Roadmap
2
-
3
- ## Product Vision
4
- The goal of the Ruby agent is to provide complete visibility into the health of your service. The agent provides metrics about the runtime health of your service and the process it runs in, and traces that show how specific requests are performing. It also provides information about the environment in which it is running, so you can identify issues with specific hosts, regions, deployments, and other facets.
5
-
6
- New Relic is moving toward OpenTelemetry. OpenTelemetry is a unified standard for service instrumentation. You will soon see an updated version of the agent that uses the OpenTelemetry SDK and auto-instrumentation as its foundation. OpenTelemetry will include a broad set of high-quality community-contributed instrumentation and a powerful vendor-neutral API for adding your own instrumentation.
7
-
8
-
9
- ## Roadmap
10
- ### Description
11
- This roadmap project is broken down into the following sections:
12
-
13
- - **Now**:
14
- - This section contains features that are currently in progress.
15
- - **Next**:
16
- - This section contains work planned within the next three months. These features may still be deprioritized and moved to Future.
17
- - **Future**:
18
- - This section is for ideas for future work that is aligned with the product vision and possible opportunities for community contribution. It contains a list of features that anyone can implement. No guarantees can be provided on if or when these features will be completed.
19
-
20
-
21
- **The roadmap project is found [here](https://github.com/orgs/newrelic/projects/12)**
22
-
23
- #### Disclaimers
24
- > This roadmap is subject to change at any time. Future items should not be considered commitments.
data/bin/mongrel_rpm DELETED
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'rubygems'
3
- require 'rack'
4
- require 'rack/handler/mongrel'
5
- require 'optparse'
6
-
7
- port = 3000
8
- options = { }
9
- appname = nil
10
- OptionParser.new do |opts|
11
- opts.banner = "Usage: #{File.basename($0)} [options] [app_name]"
12
- opts.on("-p", "--port=port", Integer, "default: #{port}") { | port | }
13
- opts.on("--[no-]logging", "turn off request logging" ) { | l | options[:logging] = l }
14
- opts.on("--license=license_key", "override license key" ) { | l | options[:license_key] = l }
15
- opts.on("--install", "install a newrelic.yml template" ) { | l | options[:install] = true }
16
- opts.separator ""
17
- opts.separator "app_name is the name of the application where the metrics will be stored"
18
- opts.separator ""
19
- # The rackup file references this var
20
- appname = opts.parse!(ARGV.clone).first
21
- end
22
-
23
- options[:app_name] = appname if appname
24
-
25
- ru_file = File.expand_path(File.join(File.dirname(__FILE__), "..", "lib", "new_relic", "rack", "mongrel_rpm.ru"))
26
- rackup_code = File.read ru_file
27
- builder = Rack::Builder.new { eval rackup_code, binding, ru_file }
28
-
29
- options = { :Host => '127.0.0.1', :Port => port }
30
- Rack::Handler::Mongrel.run(builder.to_app, options) do | server |
31
- NewRelic::Agent.logger.info "Started Mongrel listening for '#{NewRelic::Control.instance.app_names.join(" and ")}' data at #{server.host}:#{server.port}"
32
- end
33
-
@@ -1,44 +0,0 @@
1
- # encoding: utf-8
2
- # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
-
5
- module NewRelic
6
- module Agent
7
- module Datastores
8
- module Mongo
9
- module Obfuscator
10
-
11
- ALLOWLIST = [:operation].freeze
12
-
13
- def self.obfuscate_statement(source, allowlist = ALLOWLIST)
14
- if source.is_a? Hash
15
- obfuscated = {}
16
- source.each do |key, value|
17
- if allowlist.include?(key)
18
- obfuscated[key] = value
19
- else
20
- obfuscated[key] = obfuscate_value(value, allowlist)
21
- end
22
- end
23
- obfuscated
24
- else
25
- obfuscate_value(source, allowlist)
26
- end
27
- end
28
-
29
- QUESTION_MARK = '?'.freeze
30
-
31
- def self.obfuscate_value(value, allowlist = ALLOWLIST)
32
- if value.is_a?(Hash)
33
- obfuscate_statement(value, allowlist)
34
- elsif value.is_a?(Array)
35
- value.map {|v| obfuscate_value(v, allowlist)}
36
- else
37
- QUESTION_MARK
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,75 +0,0 @@
1
- # encoding: utf-8
2
- # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
-
5
- require 'new_relic/agent/database'
6
-
7
- module NewRelic
8
- module Instrumentation
9
- module ActsAsSolrInstrumentation
10
- module ParserMethodsInstrumentation
11
-
12
- def parse_query_with_newrelic(*args)
13
- self.class.trace_execution_scoped(["SolrClient/ActsAsSolr/query"]) do
14
- begin
15
- parse_query_without_newrelic(*args)
16
- ensure
17
- return unless txn = ::NewRelic::Agent::Tracer.current_transaction
18
- txn.current_segment.params[:statement] = ::NewRelic::Agent::Database.truncate_query(args.first.inspect) rescue nil
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end
25
- end
26
-
27
- DependencyDetection.defer do
28
- @name = :acts_as_solr
29
-
30
- depends_on do
31
- defined?(ActsAsSolr)
32
- end
33
-
34
- depends_on do
35
- defined?(ActsAsSolr::ParserMethods)
36
- end
37
-
38
- depends_on do
39
- defined?(ActsAsSolr::ClassMethods)
40
- end
41
-
42
- depends_on do
43
- defined?(ActsAsSolr::CommonMethods)
44
- end
45
-
46
- executes do
47
- ::NewRelic::Agent.logger.info 'Installing ActsAsSolr instrumentation'
48
- end
49
-
50
- executes do
51
- ActsAsSolr::ParserMethods.module_eval do
52
- include NewRelic::Instrumentation::ActsAsSolrInstrumentation::ParserMethodsInstrumentation
53
- alias :parse_query_without_newrelic :parse_query
54
- alias :parse_query :parse_query_with_newrelic
55
- end
56
- end
57
-
58
- executes do
59
- ActsAsSolr::ClassMethods.module_eval do
60
- %w[find_by_solr find_id_by_solr multi_solr_search count_by_solr].each do |method|
61
- add_method_tracer method, 'SolrClient/ActsAsSolr/query'
62
- end
63
- add_method_tracer :rebuild_solr_index, 'SolrClient/ActsAsSolr/index'
64
- end
65
- end
66
-
67
- executes do
68
- ActsAsSolr::CommonMethods.module_eval do
69
- add_method_tracer :solr_add, 'SolrClient/ActsAsSolr/add'
70
- add_method_tracer :solr_delete, 'SolrClient/ActsAsSolr/delete'
71
- add_method_tracer :solr_commit, 'SolrClient/ActsAsSolr/commit'
72
- add_method_tracer :solr_optimize, 'SolrClient/ActsAsSolr/optimize'
73
- end
74
- end
75
- end
@@ -1,25 +0,0 @@
1
- # encoding: utf-8
2
- # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
-
5
- DependencyDetection.defer do
6
- @name = :authlogic
7
-
8
- depends_on do
9
- defined?(Authlogic) &&
10
- defined?(Authlogic::Session) &&
11
- defined?(Authlogic::Session::Base)
12
- end
13
-
14
- executes do
15
- ::NewRelic::Agent.logger.info 'Installing Authlogic instrumentation'
16
- end
17
-
18
- executes do
19
- Authlogic::Session::Base.class_eval do
20
- class << self
21
- add_method_tracer :find, 'Custom/Authlogic/find'
22
- end
23
- end
24
- end
25
- end