newrelic_rpm 7.0.0 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (448) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -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 +3754 -2825
  10. data/CONTRIBUTING.md +33 -7
  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 +23 -19
  17. data/Rakefile +27 -29
  18. data/THIRD_PARTY_NOTICES.md +14 -199
  19. data/Thorfile +5 -0
  20. data/bin/newrelic +3 -2
  21. data/bin/newrelic_cmd +1 -0
  22. data/bin/nrdebug +76 -53
  23. data/config.dot +5 -5
  24. data/docker-compose.yml +107 -0
  25. data/init.rb +4 -6
  26. data/install.rb +2 -2
  27. data/lefthook.yml +9 -0
  28. data/lib/new_relic/agent/adaptive_sampler.rb +13 -9
  29. data/lib/new_relic/agent/agent.rb +96 -925
  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 +12 -10
  47. data/lib/new_relic/agent/configuration/default_source.rb +1366 -1297
  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 +40 -17
  51. data/lib/new_relic/agent/configuration/high_security_source.rb +8 -9
  52. data/lib/new_relic/agent/configuration/manager.rb +82 -69
  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 +21 -19
  57. data/lib/new_relic/agent/configuration/yaml_source.rb +31 -7
  58. data/lib/new_relic/agent/configuration.rb +1 -1
  59. data/lib/new_relic/agent/connect/request_builder.rb +18 -18
  60. data/lib/new_relic/agent/connect/response_handler.rb +5 -8
  61. data/lib/new_relic/agent/custom_event_aggregator.rb +14 -14
  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 +42 -50
  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 +6 -11
  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 +13 -15
  75. data/lib/new_relic/agent/deprecator.rb +1 -1
  76. data/lib/new_relic/agent/distributed_tracing/cross_app_payload.rb +10 -10
  77. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +40 -34
  78. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +22 -22
  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 +50 -52
  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 +39 -38
  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 +73 -54
  87. data/lib/new_relic/agent/error_event_aggregator.rb +4 -5
  88. data/lib/new_relic/agent/error_filter.rb +174 -0
  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 +26 -24
  94. data/lib/new_relic/agent/external.rb +11 -44
  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 +10 -11
  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 +8 -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 +38 -31
  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 +20 -6
  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 +27 -20
  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 +21 -23
  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 +69 -59
  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 +7 -12
  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 +27 -30
  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 +21 -0
  187. data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +66 -0
  188. data/lib/new_relic/agent/instrumentation/logger/prepend.rb +13 -0
  189. data/lib/new_relic/agent/instrumentation/logger.rb +26 -0
  190. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +2 -3
  191. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +31 -19
  192. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +12 -9
  193. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +20 -18
  194. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +28 -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 +6 -144
  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 +12 -7
  204. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +51 -9
  205. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +24 -20
  206. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +4 -3
  207. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +3 -3
  208. data/lib/new_relic/agent/instrumentation/padrino.rb +5 -8
  209. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +6 -6
  210. data/lib/new_relic/agent/instrumentation/queue_time.rb +8 -9
  211. data/lib/new_relic/agent/instrumentation/rack/chain.rb +30 -21
  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 +15 -8
  215. data/lib/new_relic/agent/instrumentation/rack.rb +15 -15
  216. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +18 -54
  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 +16 -6
  232. data/lib/new_relic/agent/instrumentation/resque/chain.rb +4 -5
  233. data/lib/new_relic/agent/instrumentation/resque/helper.rb +19 -0
  234. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +9 -8
  235. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +2 -3
  236. data/lib/new_relic/agent/instrumentation/resque.rb +25 -16
  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 -65
  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 +13 -6
  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 +24 -0
  254. data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +41 -0
  255. data/lib/new_relic/agent/instrumentation/tilt/prepend.rb +13 -0
  256. data/lib/new_relic/agent/instrumentation/tilt.rb +25 -0
  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 +48 -42
  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 +24 -21
  270. data/lib/new_relic/agent/memory_logger.rb +2 -2
  271. data/lib/new_relic/agent/messaging.rb +65 -81
  272. data/lib/new_relic/agent/method_tracer.rb +154 -149
  273. data/lib/new_relic/agent/method_tracer_helpers.rb +88 -11
  274. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +24 -17
  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 +247 -186
  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 +27 -17
  290. data/lib/new_relic/agent/pipe_service.rb +8 -5
  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 +3 -2
  300. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +13 -10
  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 +12 -12
  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 +8 -8
  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 +14 -14
  316. data/lib/new_relic/agent/threading/thread_profile.rb +23 -23
  317. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +1 -1
  318. data/lib/new_relic/agent/tracer.rb +89 -85
  319. data/lib/new_relic/agent/transaction/abstract_segment.rb +103 -40
  320. data/lib/new_relic/agent/transaction/datastore_segment.rb +21 -17
  321. data/lib/new_relic/agent/transaction/distributed_tracer.rb +63 -56
  322. data/lib/new_relic/agent/transaction/distributed_tracing.rb +43 -44
  323. data/lib/new_relic/agent/transaction/external_request_segment.rb +44 -34
  324. data/lib/new_relic/agent/transaction/message_broker_segment.rb +31 -36
  325. data/lib/new_relic/agent/transaction/request_attributes.rb +35 -35
  326. data/lib/new_relic/agent/transaction/segment.rb +20 -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 +175 -152
  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 +26 -25
  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 +5 -5
  353. data/lib/new_relic/agent/vm.rb +1 -1
  354. data/lib/new_relic/agent/worker_loop.rb +10 -12
  355. data/lib/new_relic/agent.rb +70 -86
  356. data/lib/new_relic/cli/command.rb +20 -22
  357. data/lib/new_relic/cli/commands/deployments.rb +92 -42
  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 +1 -4
  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 +21 -25
  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 +5 -16
  397. data/lib/newrelic_rpm.rb +19 -32
  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 +3 -3
  401. data/lib/tasks/config.rake +22 -117
  402. data/lib/tasks/coverage_report.rake +28 -0
  403. data/lib/tasks/helpers/config.html.erb +21 -0
  404. data/lib/tasks/helpers/format.rb +123 -0
  405. data/lib/tasks/helpers/matches.rb +12 -0
  406. data/lib/tasks/helpers/prompt.rb +24 -0
  407. data/lib/tasks/helpers/removers.rb +33 -0
  408. data/lib/tasks/install.rake +4 -0
  409. data/lib/tasks/instrumentation_generator/README.md +63 -0
  410. data/lib/tasks/instrumentation_generator/TODO.md +33 -0
  411. data/lib/tasks/instrumentation_generator/instrumentation.thor +121 -0
  412. data/lib/tasks/instrumentation_generator/templates/Envfile.tt +9 -0
  413. data/lib/tasks/instrumentation_generator/templates/chain.tt +22 -0
  414. data/lib/tasks/instrumentation_generator/templates/chain_method.tt +8 -0
  415. data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +29 -0
  416. data/lib/tasks/instrumentation_generator/templates/instrumentation.tt +13 -0
  417. data/lib/tasks/instrumentation_generator/templates/instrumentation_method.tt +3 -0
  418. data/lib/tasks/instrumentation_generator/templates/newrelic.yml.tt +19 -0
  419. data/lib/tasks/instrumentation_generator/templates/prepend.tt +13 -0
  420. data/lib/tasks/instrumentation_generator/templates/prepend_method.tt +3 -0
  421. data/lib/tasks/instrumentation_generator/templates/test.tt +15 -0
  422. data/lib/tasks/multiverse.rake +4 -0
  423. data/lib/tasks/multiverse.rb +5 -32
  424. data/lib/tasks/newrelic.rb +1 -1
  425. data/lib/tasks/tests.rake +10 -15
  426. data/newrelic.yml +672 -3
  427. data/newrelic_rpm.gemspec +35 -31
  428. data/recipes/newrelic.rb +2 -2
  429. data/test/agent_helper.rb +221 -180
  430. metadata +141 -111
  431. data/ROADMAP.md +0 -24
  432. data/bin/mongrel_rpm +0 -33
  433. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +0 -44
  434. data/lib/new_relic/agent/datastores/mongo/statement_formatter.rb +0 -53
  435. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +0 -75
  436. data/lib/new_relic/agent/instrumentation/authlogic.rb +0 -25
  437. data/lib/new_relic/agent/instrumentation/data_mapper.rb +0 -204
  438. data/lib/new_relic/agent/instrumentation/excon/connection.rb +0 -49
  439. data/lib/new_relic/agent/instrumentation/merb/controller.rb +0 -44
  440. data/lib/new_relic/agent/instrumentation/merb/errors.rb +0 -33
  441. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +0 -125
  442. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +0 -46
  443. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +0 -26
  444. data/lib/new_relic/agent/instrumentation/sunspot.rb +0 -33
  445. data/lib/new_relic/agent/supported_versions.rb +0 -275
  446. data/lib/new_relic/control/frameworks/merb.rb +0 -29
  447. data/lib/tasks/config.html.erb +0 -32
  448. /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: 7.0.0
4
+ version: 9.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Aaron Huntsman
8
7
  - Tanna McClure
9
- - Michael Lang
8
+ - Kayla Reopelle
9
+ - James Bunch
10
+ - Hannah Ramadan
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2021-04-23 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,8 +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
264
- - lib/new_relic/agent/datastores/mongo/statement_formatter.rb
222
+ - lib/new_relic/agent/datastores/nosql_obfuscator.rb
265
223
  - lib/new_relic/agent/datastores/redis.rb
266
224
  - lib/new_relic/agent/deprecator.rb
267
225
  - lib/new_relic/agent/distributed_tracing.rb
@@ -276,6 +234,7 @@ files:
276
234
  - lib/new_relic/agent/encoding_normalizer.rb
277
235
  - lib/new_relic/agent/error_collector.rb
278
236
  - lib/new_relic/agent/error_event_aggregator.rb
237
+ - lib/new_relic/agent/error_filter.rb
279
238
  - lib/new_relic/agent/error_trace_aggregator.rb
280
239
  - lib/new_relic/agent/event_aggregator.rb
281
240
  - lib/new_relic/agent/event_buffer.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,29 +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
- - lib/new_relic/agent/instrumentation/excon/connection.rb
328
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
329
312
  - lib/new_relic/agent/instrumentation/grape.rb
330
313
  - lib/new_relic/agent/instrumentation/grape/chain.rb
331
314
  - lib/new_relic/agent/instrumentation/grape/instrumentation.rb
332
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
333
327
  - lib/new_relic/agent/instrumentation/httpclient.rb
334
328
  - lib/new_relic/agent/instrumentation/httpclient/chain.rb
335
329
  - lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb
@@ -339,14 +333,16 @@ files:
339
333
  - lib/new_relic/agent/instrumentation/httprb/instrumentation.rb
340
334
  - lib/new_relic/agent/instrumentation/httprb/prepend.rb
341
335
  - lib/new_relic/agent/instrumentation/ignore_actions.rb
336
+ - lib/new_relic/agent/instrumentation/logger.rb
337
+ - lib/new_relic/agent/instrumentation/logger/chain.rb
338
+ - lib/new_relic/agent/instrumentation/logger/instrumentation.rb
339
+ - lib/new_relic/agent/instrumentation/logger/prepend.rb
342
340
  - lib/new_relic/agent/instrumentation/memcache.rb
343
341
  - lib/new_relic/agent/instrumentation/memcache/chain.rb
344
342
  - lib/new_relic/agent/instrumentation/memcache/dalli.rb
345
343
  - lib/new_relic/agent/instrumentation/memcache/helper.rb
346
344
  - lib/new_relic/agent/instrumentation/memcache/instrumentation.rb
347
345
  - lib/new_relic/agent/instrumentation/memcache/prepend.rb
348
- - lib/new_relic/agent/instrumentation/merb/controller.rb
349
- - lib/new_relic/agent/instrumentation/merb/errors.rb
350
346
  - lib/new_relic/agent/instrumentation/middleware_proxy.rb
351
347
  - lib/new_relic/agent/instrumentation/middleware_tracing.rb
352
348
  - lib/new_relic/agent/instrumentation/mongo.rb
@@ -367,43 +363,58 @@ files:
367
363
  - lib/new_relic/agent/instrumentation/rack/helpers.rb
368
364
  - lib/new_relic/agent/instrumentation/rack/instrumentation.rb
369
365
  - lib/new_relic/agent/instrumentation/rack/prepend.rb
370
- - lib/new_relic/agent/instrumentation/rails/action_controller.rb
371
- - lib/new_relic/agent/instrumentation/rails/action_web_service.rb
372
366
  - lib/new_relic/agent/instrumentation/rails3/action_controller.rb
373
367
  - lib/new_relic/agent/instrumentation/rails_middleware.rb
374
368
  - lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb
375
369
  - lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb
376
370
  - lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb
377
- - lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb
371
+ - lib/new_relic/agent/instrumentation/rails_notifications/custom_events.rb
378
372
  - lib/new_relic/agent/instrumentation/rake.rb
379
373
  - lib/new_relic/agent/instrumentation/rake/chain.rb
380
374
  - lib/new_relic/agent/instrumentation/rake/instrumentation.rb
381
375
  - lib/new_relic/agent/instrumentation/rake/prepend.rb
382
376
  - lib/new_relic/agent/instrumentation/redis.rb
383
377
  - lib/new_relic/agent/instrumentation/redis/chain.rb
378
+ - lib/new_relic/agent/instrumentation/redis/constants.rb
384
379
  - lib/new_relic/agent/instrumentation/redis/instrumentation.rb
380
+ - lib/new_relic/agent/instrumentation/redis/middleware.rb
385
381
  - lib/new_relic/agent/instrumentation/redis/prepend.rb
386
382
  - lib/new_relic/agent/instrumentation/resque.rb
387
383
  - lib/new_relic/agent/instrumentation/resque/chain.rb
384
+ - lib/new_relic/agent/instrumentation/resque/helper.rb
388
385
  - lib/new_relic/agent/instrumentation/resque/instrumentation.rb
389
386
  - lib/new_relic/agent/instrumentation/resque/prepend.rb
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
403
+ - lib/new_relic/agent/instrumentation/tilt.rb
404
+ - lib/new_relic/agent/instrumentation/tilt/chain.rb
405
+ - lib/new_relic/agent/instrumentation/tilt/instrumentation.rb
406
+ - lib/new_relic/agent/instrumentation/tilt/prepend.rb
400
407
  - lib/new_relic/agent/instrumentation/typhoeus.rb
401
408
  - lib/new_relic/agent/instrumentation/typhoeus/chain.rb
402
409
  - lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb
403
410
  - lib/new_relic/agent/instrumentation/typhoeus/prepend.rb
404
411
  - lib/new_relic/agent/internal_agent_error.rb
405
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
406
416
  - lib/new_relic/agent/log_once.rb
417
+ - lib/new_relic/agent/log_priority.rb
407
418
  - lib/new_relic/agent/logging.rb
408
419
  - lib/new_relic/agent/memory_logger.rb
409
420
  - lib/new_relic/agent/messaging.rb
@@ -419,7 +430,7 @@ files:
419
430
  - lib/new_relic/agent/new_relic_service/json_marshaller.rb
420
431
  - lib/new_relic/agent/new_relic_service/marshaller.rb
421
432
  - lib/new_relic/agent/new_relic_service/security_policy_settings.rb
422
- - lib/new_relic/agent/noticible_error.rb
433
+ - lib/new_relic/agent/noticeable_error.rb
423
434
  - lib/new_relic/agent/null_logger.rb
424
435
  - lib/new_relic/agent/obfuscator.rb
425
436
  - lib/new_relic/agent/parameter_filtering.rb
@@ -446,7 +457,6 @@ files:
446
457
  - lib/new_relic/agent/stats_engine.rb
447
458
  - lib/new_relic/agent/stats_engine/gc_profiler.rb
448
459
  - lib/new_relic/agent/stats_engine/stats_hash.rb
449
- - lib/new_relic/agent/supported_versions.rb
450
460
  - lib/new_relic/agent/synthetics_event_aggregator.rb
451
461
  - lib/new_relic/agent/system_info.rb
452
462
  - lib/new_relic/agent/threading/agent_thread.rb
@@ -501,7 +511,6 @@ files:
501
511
  - lib/new_relic/control/class_methods.rb
502
512
  - lib/new_relic/control/frameworks.rb
503
513
  - lib/new_relic/control/frameworks/external.rb
504
- - lib/new_relic/control/frameworks/merb.rb
505
514
  - lib/new_relic/control/frameworks/rails.rb
506
515
  - lib/new_relic/control/frameworks/rails3.rb
507
516
  - lib/new_relic/control/frameworks/rails4.rb
@@ -510,6 +519,7 @@ files:
510
519
  - lib/new_relic/control/frameworks/sinatra.rb
511
520
  - lib/new_relic/control/instance_methods.rb
512
521
  - lib/new_relic/control/instrumentation.rb
522
+ - lib/new_relic/control/private_instance_methods.rb
513
523
  - lib/new_relic/control/server_methods.rb
514
524
  - lib/new_relic/delayed_job_injection.rb
515
525
  - lib/new_relic/dependency_detection.rb
@@ -528,16 +538,36 @@ files:
528
538
  - lib/new_relic/recipes.rb
529
539
  - lib/new_relic/recipes/capistrano3.rb
530
540
  - lib/new_relic/recipes/capistrano_legacy.rb
541
+ - lib/new_relic/recipes/helpers/send_deployment.rb
531
542
  - lib/new_relic/supportability_helper.rb
543
+ - lib/new_relic/traced_thread.rb
532
544
  - lib/new_relic/version.rb
533
545
  - lib/newrelic_rpm.rb
534
- - lib/sequel/extensions/newrelic_instrumentation.rb
535
- - lib/sequel/plugins/newrelic_instrumentation.rb
546
+ - lib/sequel/extensions/new_relic_instrumentation.rb
547
+ - lib/sequel/plugins/new_relic_instrumentation.rb
536
548
  - lib/tasks/all.rb
537
- - lib/tasks/config.html.erb
538
549
  - lib/tasks/config.rake
539
- - 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
540
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
541
571
  - lib/tasks/multiverse.rake
542
572
  - lib/tasks/multiverse.rb
543
573
  - lib/tasks/newrelic.rb
@@ -563,7 +593,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
563
593
  requirements:
564
594
  - - ">="
565
595
  - !ruby/object:Gem::Version
566
- version: 2.0.0
596
+ version: 2.4.0
567
597
  required_rubygems_version: !ruby/object:Gem::Requirement
568
598
  requirements:
569
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,53 +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/datastores/mongo/obfuscator'
6
-
7
- module NewRelic
8
- module Agent
9
- module Datastores
10
- module Mongo
11
- module StatementFormatter
12
-
13
- PLAINTEXT_KEYS = [
14
- :database,
15
- :collection,
16
- :operation,
17
- :fields,
18
- :skip,
19
- :limit,
20
- :order
21
- ]
22
-
23
- OBFUSCATE_KEYS = [
24
- :selector
25
- ]
26
-
27
- def self.format(statement, operation)
28
- return nil unless NewRelic::Agent.config[:'mongo.capture_queries']
29
-
30
- result = { :operation => operation }
31
-
32
- PLAINTEXT_KEYS.each do |key|
33
- result[key] = statement[key] if statement.key?(key)
34
- end
35
-
36
- OBFUSCATE_KEYS.each do |key|
37
- if statement.key?(key) && statement[key]
38
- obfuscated = obfuscate(statement[key])
39
- result[key] = obfuscated if obfuscated
40
- end
41
- end
42
- result
43
- end
44
-
45
- def self.obfuscate(statement)
46
- statement = Obfuscator.obfuscate_statement(statement) if NewRelic::Agent.config[:'mongo.obfuscate_queries']
47
- statement
48
- end
49
- end
50
- end
51
- end
52
- end
53
- end