newrelic_rpm 7.0.0 → 8.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (320) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.rubocop.yml +1941 -0
  4. data/.yardopts +1 -0
  5. data/Brewfile +10 -0
  6. data/CHANGELOG.md +431 -1
  7. data/CONTRIBUTING.md +32 -5
  8. data/DOCKER.md +167 -0
  9. data/Dockerfile +10 -0
  10. data/Guardfile +8 -8
  11. data/LICENSE +0 -6
  12. data/README.md +20 -18
  13. data/Rakefile +39 -29
  14. data/THIRD_PARTY_NOTICES.md +14 -199
  15. data/bin/mongrel_rpm +8 -9
  16. data/bin/newrelic +1 -1
  17. data/bin/nrdebug +14 -14
  18. data/docker-compose.yml +85 -0
  19. data/init.rb +0 -2
  20. data/lefthook.yml +9 -0
  21. data/lib/new_relic/agent/adaptive_sampler.rb +9 -5
  22. data/lib/new_relic/agent/agent.rb +72 -49
  23. data/lib/new_relic/agent/agent_logger.rb +15 -9
  24. data/lib/new_relic/agent/attribute_filter.rb +31 -31
  25. data/lib/new_relic/agent/attributes.rb +2 -2
  26. data/lib/new_relic/agent/audit_logger.rb +4 -0
  27. data/lib/new_relic/agent/autostart.rb +19 -17
  28. data/lib/new_relic/agent/commands/agent_command.rb +2 -2
  29. data/lib/new_relic/agent/commands/agent_command_router.rb +6 -5
  30. data/lib/new_relic/agent/commands/thread_profiler_session.rb +7 -6
  31. data/lib/new_relic/agent/configuration/default_source.rb +731 -476
  32. data/lib/new_relic/agent/configuration/dotted_hash.rb +3 -3
  33. data/lib/new_relic/agent/configuration/environment_source.rb +5 -4
  34. data/lib/new_relic/agent/configuration/event_harvest_config.rb +39 -16
  35. data/lib/new_relic/agent/configuration/high_security_source.rb +7 -7
  36. data/lib/new_relic/agent/configuration/manager.rb +74 -64
  37. data/lib/new_relic/agent/configuration/mask_defaults.rb +1 -1
  38. data/lib/new_relic/agent/configuration/security_policy_source.rb +73 -73
  39. data/lib/new_relic/agent/configuration/server_source.rb +14 -12
  40. data/lib/new_relic/agent/configuration/yaml_source.rb +26 -5
  41. data/lib/new_relic/agent/connect/request_builder.rb +14 -15
  42. data/lib/new_relic/agent/connect/response_handler.rb +0 -3
  43. data/lib/new_relic/agent/custom_event_aggregator.rb +9 -9
  44. data/lib/new_relic/agent/database/explain_plan_helpers.rb +3 -4
  45. data/lib/new_relic/agent/database/obfuscation_helpers.rb +12 -12
  46. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +2 -2
  47. data/lib/new_relic/agent/database.rb +30 -31
  48. data/lib/new_relic/agent/datastores/metric_helper.rb +13 -11
  49. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +2 -3
  50. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +3 -5
  51. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +1 -2
  52. data/lib/new_relic/agent/datastores/mongo.rb +5 -10
  53. data/lib/new_relic/agent/datastores/redis.rb +2 -4
  54. data/lib/new_relic/agent/datastores.rb +7 -9
  55. data/lib/new_relic/agent/distributed_tracing/cross_app_payload.rb +9 -9
  56. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +21 -16
  57. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +10 -12
  58. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +42 -43
  59. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +3 -3
  60. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +41 -43
  61. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +25 -25
  62. data/lib/new_relic/agent/distributed_tracing.rb +17 -18
  63. data/lib/new_relic/agent/encoding_normalizer.rb +1 -1
  64. data/lib/new_relic/agent/error_collector.rb +65 -50
  65. data/lib/new_relic/agent/error_event_aggregator.rb +1 -1
  66. data/lib/new_relic/agent/error_filter.rb +173 -0
  67. data/lib/new_relic/agent/error_trace_aggregator.rb +1 -1
  68. data/lib/new_relic/agent/event_aggregator.rb +1 -1
  69. data/lib/new_relic/agent/event_buffer.rb +6 -7
  70. data/lib/new_relic/agent/event_listener.rb +0 -1
  71. data/lib/new_relic/agent/event_loop.rb +14 -14
  72. data/lib/new_relic/agent/external.rb +1 -34
  73. data/lib/new_relic/agent/guid_generator.rb +2 -9
  74. data/lib/new_relic/agent/harvester.rb +3 -4
  75. data/lib/new_relic/agent/heap.rb +1 -3
  76. data/lib/new_relic/agent/hostname.rb +16 -10
  77. data/lib/new_relic/agent/http_clients/abstract.rb +7 -9
  78. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +1 -5
  79. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +4 -4
  80. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +3 -3
  81. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +1 -2
  82. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +8 -3
  83. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +2 -3
  84. data/lib/new_relic/agent/http_clients/uri_util.rb +0 -1
  85. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +2 -3
  86. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +28 -26
  87. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +5 -7
  88. data/lib/new_relic/agent/instrumentation/active_job.rb +12 -5
  89. data/lib/new_relic/agent/instrumentation/active_merchant.rb +17 -3
  90. data/lib/new_relic/agent/instrumentation/active_record.rb +20 -18
  91. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +56 -46
  92. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +28 -25
  93. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +3 -3
  94. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +22 -16
  95. data/lib/new_relic/agent/instrumentation/active_storage.rb +1 -1
  96. data/lib/new_relic/agent/instrumentation/active_support_logger/chain.rb +23 -0
  97. data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +20 -0
  98. data/lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb +12 -0
  99. data/lib/new_relic/agent/instrumentation/active_support_logger.rb +24 -0
  100. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +18 -9
  101. data/lib/new_relic/agent/instrumentation/authlogic.rb +10 -0
  102. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +1 -1
  103. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +8 -9
  104. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +52 -46
  105. data/lib/new_relic/agent/instrumentation/curb/chain.rb +20 -21
  106. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +34 -38
  107. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +10 -11
  108. data/lib/new_relic/agent/instrumentation/data_mapper.rb +22 -10
  109. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +5 -7
  110. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +5 -9
  111. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +23 -4
  112. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +2 -2
  113. data/lib/new_relic/agent/instrumentation/excon.rb +3 -23
  114. data/lib/new_relic/agent/instrumentation/grape/chain.rb +1 -2
  115. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +6 -7
  116. data/lib/new_relic/agent/instrumentation/grape.rb +2 -3
  117. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +2 -3
  118. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +0 -1
  119. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +0 -2
  120. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +2 -2
  121. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +6 -6
  122. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +1 -1
  123. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +2 -3
  124. data/lib/new_relic/agent/instrumentation/logger/chain.rb +21 -0
  125. data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +58 -0
  126. data/lib/new_relic/agent/instrumentation/logger/prepend.rb +13 -0
  127. data/lib/new_relic/agent/instrumentation/logger.rb +26 -0
  128. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +7 -2
  129. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +5 -1
  130. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +9 -2
  131. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +9 -10
  132. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +5 -6
  133. data/lib/new_relic/agent/instrumentation/mongo.rb +3 -141
  134. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +4 -4
  135. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +3 -4
  136. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +5 -5
  137. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +4 -4
  138. data/lib/new_relic/agent/instrumentation/net_http.rb +7 -2
  139. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +2 -3
  140. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +23 -19
  141. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +3 -2
  142. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +2 -2
  143. data/lib/new_relic/agent/instrumentation/padrino.rb +2 -5
  144. data/lib/new_relic/agent/instrumentation/queue_time.rb +8 -8
  145. data/lib/new_relic/agent/instrumentation/rack/chain.rb +8 -7
  146. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +2 -1
  147. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +4 -5
  148. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +2 -2
  149. data/lib/new_relic/agent/instrumentation/rack.rb +1 -1
  150. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +11 -47
  151. data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +2 -2
  152. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +0 -1
  153. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +11 -0
  154. data/lib/new_relic/agent/instrumentation/rake/chain.rb +0 -5
  155. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +6 -6
  156. data/lib/new_relic/agent/instrumentation/rake.rb +1 -1
  157. data/lib/new_relic/agent/instrumentation/redis/chain.rb +6 -6
  158. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +2 -2
  159. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +1 -1
  160. data/lib/new_relic/agent/instrumentation/redis.rb +5 -1
  161. data/lib/new_relic/agent/instrumentation/resque/chain.rb +2 -3
  162. data/lib/new_relic/agent/instrumentation/resque/helper.rb +19 -0
  163. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +9 -7
  164. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +1 -2
  165. data/lib/new_relic/agent/instrumentation/resque.rb +17 -8
  166. data/lib/new_relic/agent/instrumentation/sequel.rb +7 -9
  167. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +1 -1
  168. data/lib/new_relic/agent/instrumentation/sidekiq.rb +22 -1
  169. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +0 -1
  170. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +12 -5
  171. data/lib/new_relic/agent/instrumentation/sinatra.rb +21 -11
  172. data/lib/new_relic/agent/instrumentation/sunspot.rb +11 -1
  173. data/lib/new_relic/agent/instrumentation/thread/chain.rb +24 -0
  174. data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +27 -0
  175. data/lib/new_relic/agent/instrumentation/thread/prepend.rb +22 -0
  176. data/lib/new_relic/agent/instrumentation/thread.rb +20 -0
  177. data/lib/new_relic/agent/instrumentation/tilt/chain.rb +24 -0
  178. data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +40 -0
  179. data/lib/new_relic/agent/instrumentation/tilt/prepend.rb +13 -0
  180. data/lib/new_relic/agent/instrumentation/tilt.rb +25 -0
  181. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +4 -4
  182. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +3 -5
  183. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +1 -1
  184. data/lib/new_relic/agent/internal_agent_error.rb +1 -1
  185. data/lib/new_relic/agent/javascript_instrumentor.rb +38 -33
  186. data/lib/new_relic/agent/linking_metadata.rb +45 -0
  187. data/lib/new_relic/agent/local_log_decorator.rb +37 -0
  188. data/lib/new_relic/agent/log_event_aggregator.rb +234 -0
  189. data/lib/new_relic/agent/log_priority.rb +20 -0
  190. data/lib/new_relic/agent/logging.rb +11 -8
  191. data/lib/new_relic/agent/memory_logger.rb +1 -1
  192. data/lib/new_relic/agent/messaging.rb +46 -62
  193. data/lib/new_relic/agent/method_tracer.rb +145 -144
  194. data/lib/new_relic/agent/method_tracer_helpers.rb +82 -2
  195. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +21 -13
  196. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +2 -2
  197. data/lib/new_relic/agent/monitors/inbound_request_monitor.rb +0 -1
  198. data/lib/new_relic/agent/monitors/synthetics_monitor.rb +4 -7
  199. data/lib/new_relic/agent/monitors.rb +1 -2
  200. data/lib/new_relic/agent/new_relic_service/encoders.rb +4 -4
  201. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +1 -1
  202. data/lib/new_relic/agent/new_relic_service/marshaller.rb +1 -1
  203. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +4 -3
  204. data/lib/new_relic/agent/new_relic_service.rb +61 -53
  205. data/lib/new_relic/agent/noticible_error.rb +0 -2
  206. data/lib/new_relic/agent/null_logger.rb +6 -2
  207. data/lib/new_relic/agent/obfuscator.rb +6 -8
  208. data/lib/new_relic/agent/parameter_filtering.rb +16 -8
  209. data/lib/new_relic/agent/payload_metric_mapping.rb +8 -9
  210. data/lib/new_relic/agent/pipe_channel_manager.rb +15 -12
  211. data/lib/new_relic/agent/pipe_service.rb +6 -3
  212. data/lib/new_relic/agent/priority_sampled_buffer.rb +4 -7
  213. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +9 -9
  214. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +12 -12
  215. data/lib/new_relic/agent/rules_engine.rb +2 -2
  216. data/lib/new_relic/agent/sampler.rb +2 -3
  217. data/lib/new_relic/agent/sampler_collection.rb +2 -3
  218. data/lib/new_relic/agent/samplers/cpu_sampler.rb +1 -1
  219. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +10 -7
  220. data/lib/new_relic/agent/samplers/memory_sampler.rb +9 -3
  221. data/lib/new_relic/agent/samplers/vm_sampler.rb +18 -18
  222. data/lib/new_relic/agent/span_event_aggregator.rb +10 -10
  223. data/lib/new_relic/agent/span_event_primitive.rb +48 -45
  224. data/lib/new_relic/agent/sql_sampler.rb +9 -9
  225. data/lib/new_relic/agent/stats.rb +62 -37
  226. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +7 -9
  227. data/lib/new_relic/agent/stats_engine/stats_hash.rb +8 -9
  228. data/lib/new_relic/agent/stats_engine.rb +7 -7
  229. data/lib/new_relic/agent/synthetics_event_aggregator.rb +1 -2
  230. data/lib/new_relic/agent/system_info.rb +22 -20
  231. data/lib/new_relic/agent/threading/agent_thread.rb +4 -5
  232. data/lib/new_relic/agent/threading/backtrace_node.rb +6 -9
  233. data/lib/new_relic/agent/threading/backtrace_service.rb +12 -13
  234. data/lib/new_relic/agent/threading/thread_profile.rb +16 -19
  235. data/lib/new_relic/agent/tracer.rb +57 -72
  236. data/lib/new_relic/agent/transaction/abstract_segment.rb +38 -10
  237. data/lib/new_relic/agent/transaction/datastore_segment.rb +7 -6
  238. data/lib/new_relic/agent/transaction/distributed_tracer.rb +8 -9
  239. data/lib/new_relic/agent/transaction/distributed_tracing.rb +21 -22
  240. data/lib/new_relic/agent/transaction/external_request_segment.rb +6 -5
  241. data/lib/new_relic/agent/transaction/message_broker_segment.rb +24 -30
  242. data/lib/new_relic/agent/transaction/request_attributes.rb +7 -7
  243. data/lib/new_relic/agent/transaction/segment.rb +6 -3
  244. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +0 -2
  245. data/lib/new_relic/agent/transaction/trace.rb +8 -8
  246. data/lib/new_relic/agent/transaction/trace_context.rb +14 -16
  247. data/lib/new_relic/agent/transaction/trace_node.rb +16 -16
  248. data/lib/new_relic/agent/transaction/tracing.rb +9 -6
  249. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +1 -2
  250. data/lib/new_relic/agent/transaction.rb +132 -119
  251. data/lib/new_relic/agent/transaction_error_primitive.rb +18 -16
  252. data/lib/new_relic/agent/transaction_event_aggregator.rb +7 -8
  253. data/lib/new_relic/agent/transaction_event_primitive.rb +29 -29
  254. data/lib/new_relic/agent/transaction_event_recorder.rb +1 -1
  255. data/lib/new_relic/agent/transaction_metrics.rb +8 -7
  256. data/lib/new_relic/agent/transaction_sampler.rb +0 -1
  257. data/lib/new_relic/agent/transaction_time_aggregator.rb +11 -11
  258. data/lib/new_relic/agent/utilization/aws.rb +32 -2
  259. data/lib/new_relic/agent/utilization/azure.rb +1 -1
  260. data/lib/new_relic/agent/utilization/vendor.rb +15 -2
  261. data/lib/new_relic/agent/utilization_data.rb +3 -4
  262. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +1 -1
  263. data/lib/new_relic/agent/vm/mri_vm.rb +13 -1
  264. data/lib/new_relic/agent/vm/snapshot.rb +4 -4
  265. data/lib/new_relic/agent/worker_loop.rb +8 -10
  266. data/lib/new_relic/agent.rb +36 -41
  267. data/lib/new_relic/cli/command.rb +15 -17
  268. data/lib/new_relic/cli/commands/deployments.rb +21 -23
  269. data/lib/new_relic/cli/commands/install.rb +6 -10
  270. data/lib/new_relic/coerce.rb +5 -8
  271. data/lib/new_relic/collection_helper.rb +48 -47
  272. data/lib/new_relic/constants.rb +0 -4
  273. data/lib/new_relic/control/class_methods.rb +2 -2
  274. data/lib/new_relic/control/frameworks/external.rb +1 -1
  275. data/lib/new_relic/control/frameworks/rails.rb +5 -6
  276. data/lib/new_relic/control/frameworks/rails3.rb +2 -3
  277. data/lib/new_relic/control/frameworks/ruby.rb +2 -2
  278. data/lib/new_relic/control/frameworks/sinatra.rb +6 -0
  279. data/lib/new_relic/control/instance_methods.rb +4 -5
  280. data/lib/new_relic/control/instrumentation.rb +35 -5
  281. data/lib/new_relic/control/server_methods.rb +2 -3
  282. data/lib/new_relic/control.rb +0 -1
  283. data/lib/new_relic/dependency_detection.rb +7 -9
  284. data/lib/new_relic/environment_report.rb +16 -18
  285. data/lib/new_relic/helper.rb +45 -5
  286. data/lib/new_relic/language_support.rb +20 -2
  287. data/lib/new_relic/latest_changes.rb +2 -2
  288. data/lib/new_relic/local_environment.rb +9 -7
  289. data/lib/new_relic/metric_data.rb +6 -7
  290. data/lib/new_relic/metric_spec.rb +3 -3
  291. data/lib/new_relic/noticed_error.rb +18 -19
  292. data/lib/new_relic/rack/agent_middleware.rb +2 -2
  293. data/lib/new_relic/rack/browser_monitoring.rb +9 -9
  294. data/lib/new_relic/recipes/capistrano3.rb +11 -13
  295. data/lib/new_relic/recipes/capistrano_legacy.rb +11 -14
  296. data/lib/new_relic/supportability_helper.rb +2 -2
  297. data/lib/new_relic/traced_thread.rb +35 -0
  298. data/lib/new_relic/version.rb +5 -16
  299. data/lib/newrelic_rpm.rb +10 -34
  300. data/lib/sequel/extensions/newrelic_instrumentation.rb +4 -7
  301. data/lib/sequel/plugins/newrelic_instrumentation.rb +3 -9
  302. data/lib/tasks/all.rb +2 -2
  303. data/lib/tasks/config.html.erb +14 -25
  304. data/lib/tasks/config.rake +36 -27
  305. data/lib/tasks/multiverse.rb +4 -6
  306. data/lib/tasks/tests.rake +3 -7
  307. data/newrelic.yml +610 -3
  308. data/newrelic_rpm.gemspec +14 -14
  309. data/recipes/newrelic.rb +1 -1
  310. data/test/agent_helper.rb +98 -59
  311. metadata +69 -20
  312. data/ROADMAP.md +0 -24
  313. data/lib/new_relic/agent/datastores/mongo/statement_formatter.rb +0 -53
  314. data/lib/new_relic/agent/instrumentation/excon/connection.rb +0 -49
  315. data/lib/new_relic/agent/instrumentation/merb/controller.rb +0 -44
  316. data/lib/new_relic/agent/instrumentation/merb/errors.rb +0 -33
  317. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +0 -125
  318. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +0 -46
  319. data/lib/new_relic/agent/supported_versions.rb +0 -275
  320. data/lib/new_relic/control/frameworks/merb.rb +0 -29
metadata CHANGED
@@ -1,16 +1,17 @@
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: 8.8.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: 2022-06-02 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: rake
@@ -68,6 +69,20 @@ dependencies:
68
69
  - - '='
69
70
  - !ruby/object:Gem::Version
70
71
  version: 4.7.5
72
+ - !ruby/object:Gem::Dependency
73
+ name: minitest-stub-const
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - '='
77
+ - !ruby/object:Gem::Version
78
+ version: '0.6'
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - '='
84
+ - !ruby/object:Gem::Version
85
+ version: '0.6'
71
86
  - !ruby/object:Gem::Dependency
72
87
  name: mocha
73
88
  requirement: !ruby/object:Gem::Requirement
@@ -153,21 +168,35 @@ dependencies:
153
168
  - !ruby/object:Gem::Version
154
169
  version: 2.4.0
155
170
  - !ruby/object:Gem::Dependency
156
- name: hometown
171
+ name: bundler
157
172
  requirement: !ruby/object:Gem::Requirement
158
173
  requirements:
159
- - - "~>"
174
+ - - ">="
160
175
  - !ruby/object:Gem::Version
161
- version: 0.2.5
176
+ version: '0'
162
177
  type: :development
163
178
  prerelease: false
164
179
  version_requirements: !ruby/object:Gem::Requirement
165
180
  requirements:
166
- - - "~>"
181
+ - - ">="
167
182
  - !ruby/object:Gem::Version
168
- version: 0.2.5
183
+ version: '0'
169
184
  - !ruby/object:Gem::Dependency
170
- name: bundler
185
+ name: rubocop
186
+ requirement: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - ">="
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
191
+ type: :development
192
+ prerelease: false
193
+ version_requirements: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ - !ruby/object:Gem::Dependency
199
+ name: rubocop-performance
171
200
  requirement: !ruby/object:Gem::Requirement
172
201
  requirements:
173
202
  - - ">="
@@ -203,14 +232,17 @@ extra_rdoc_files:
203
232
  files:
204
233
  - ".gitignore"
205
234
  - ".project"
235
+ - ".rubocop.yml"
206
236
  - ".yardopts"
237
+ - Brewfile
207
238
  - CHANGELOG.md
208
239
  - CONTRIBUTING.md
240
+ - DOCKER.md
241
+ - Dockerfile
209
242
  - Gemfile
210
243
  - Guardfile
211
244
  - LICENSE
212
245
  - README.md
213
- - ROADMAP.md
214
246
  - Rakefile
215
247
  - THIRD_PARTY_NOTICES.md
216
248
  - bin/mongrel_rpm
@@ -219,8 +251,10 @@ files:
219
251
  - bin/nrdebug
220
252
  - config.dot
221
253
  - config/database.yml
254
+ - docker-compose.yml
222
255
  - init.rb
223
256
  - install.rb
257
+ - lefthook.yml
224
258
  - lib/new_relic/agent.rb
225
259
  - lib/new_relic/agent/adaptive_sampler.rb
226
260
  - lib/new_relic/agent/agent.rb
@@ -261,7 +295,6 @@ files:
261
295
  - lib/new_relic/agent/datastores/mongo/event_formatter.rb
262
296
  - lib/new_relic/agent/datastores/mongo/metric_translator.rb
263
297
  - lib/new_relic/agent/datastores/mongo/obfuscator.rb
264
- - lib/new_relic/agent/datastores/mongo/statement_formatter.rb
265
298
  - lib/new_relic/agent/datastores/redis.rb
266
299
  - lib/new_relic/agent/deprecator.rb
267
300
  - lib/new_relic/agent/distributed_tracing.rb
@@ -276,6 +309,7 @@ files:
276
309
  - lib/new_relic/agent/encoding_normalizer.rb
277
310
  - lib/new_relic/agent/error_collector.rb
278
311
  - lib/new_relic/agent/error_event_aggregator.rb
312
+ - lib/new_relic/agent/error_filter.rb
279
313
  - lib/new_relic/agent/error_trace_aggregator.rb
280
314
  - lib/new_relic/agent/event_aggregator.rb
281
315
  - lib/new_relic/agent/event_buffer.rb
@@ -307,6 +341,10 @@ files:
307
341
  - lib/new_relic/agent/instrumentation/active_record_subscriber.rb
308
342
  - lib/new_relic/agent/instrumentation/active_storage.rb
309
343
  - lib/new_relic/agent/instrumentation/active_storage_subscriber.rb
344
+ - lib/new_relic/agent/instrumentation/active_support_logger.rb
345
+ - lib/new_relic/agent/instrumentation/active_support_logger/chain.rb
346
+ - lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb
347
+ - lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb
310
348
  - lib/new_relic/agent/instrumentation/acts_as_solr.rb
311
349
  - lib/new_relic/agent/instrumentation/authlogic.rb
312
350
  - lib/new_relic/agent/instrumentation/bunny.rb
@@ -324,7 +362,6 @@ files:
324
362
  - lib/new_relic/agent/instrumentation/delayed_job/prepend.rb
325
363
  - lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb
326
364
  - lib/new_relic/agent/instrumentation/excon.rb
327
- - lib/new_relic/agent/instrumentation/excon/connection.rb
328
365
  - lib/new_relic/agent/instrumentation/excon/middleware.rb
329
366
  - lib/new_relic/agent/instrumentation/grape.rb
330
367
  - lib/new_relic/agent/instrumentation/grape/chain.rb
@@ -339,14 +376,16 @@ files:
339
376
  - lib/new_relic/agent/instrumentation/httprb/instrumentation.rb
340
377
  - lib/new_relic/agent/instrumentation/httprb/prepend.rb
341
378
  - lib/new_relic/agent/instrumentation/ignore_actions.rb
379
+ - lib/new_relic/agent/instrumentation/logger.rb
380
+ - lib/new_relic/agent/instrumentation/logger/chain.rb
381
+ - lib/new_relic/agent/instrumentation/logger/instrumentation.rb
382
+ - lib/new_relic/agent/instrumentation/logger/prepend.rb
342
383
  - lib/new_relic/agent/instrumentation/memcache.rb
343
384
  - lib/new_relic/agent/instrumentation/memcache/chain.rb
344
385
  - lib/new_relic/agent/instrumentation/memcache/dalli.rb
345
386
  - lib/new_relic/agent/instrumentation/memcache/helper.rb
346
387
  - lib/new_relic/agent/instrumentation/memcache/instrumentation.rb
347
388
  - 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
389
  - lib/new_relic/agent/instrumentation/middleware_proxy.rb
351
390
  - lib/new_relic/agent/instrumentation/middleware_tracing.rb
352
391
  - lib/new_relic/agent/instrumentation/mongo.rb
@@ -367,8 +406,6 @@ files:
367
406
  - lib/new_relic/agent/instrumentation/rack/helpers.rb
368
407
  - lib/new_relic/agent/instrumentation/rack/instrumentation.rb
369
408
  - 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
409
  - lib/new_relic/agent/instrumentation/rails3/action_controller.rb
373
410
  - lib/new_relic/agent/instrumentation/rails_middleware.rb
374
411
  - lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb
@@ -385,6 +422,7 @@ files:
385
422
  - lib/new_relic/agent/instrumentation/redis/prepend.rb
386
423
  - lib/new_relic/agent/instrumentation/resque.rb
387
424
  - lib/new_relic/agent/instrumentation/resque/chain.rb
425
+ - lib/new_relic/agent/instrumentation/resque/helper.rb
388
426
  - lib/new_relic/agent/instrumentation/resque/instrumentation.rb
389
427
  - lib/new_relic/agent/instrumentation/resque/prepend.rb
390
428
  - lib/new_relic/agent/instrumentation/sequel.rb
@@ -397,13 +435,25 @@ files:
397
435
  - lib/new_relic/agent/instrumentation/sinatra/prepend.rb
398
436
  - lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb
399
437
  - lib/new_relic/agent/instrumentation/sunspot.rb
438
+ - lib/new_relic/agent/instrumentation/thread.rb
439
+ - lib/new_relic/agent/instrumentation/thread/chain.rb
440
+ - lib/new_relic/agent/instrumentation/thread/instrumentation.rb
441
+ - lib/new_relic/agent/instrumentation/thread/prepend.rb
442
+ - lib/new_relic/agent/instrumentation/tilt.rb
443
+ - lib/new_relic/agent/instrumentation/tilt/chain.rb
444
+ - lib/new_relic/agent/instrumentation/tilt/instrumentation.rb
445
+ - lib/new_relic/agent/instrumentation/tilt/prepend.rb
400
446
  - lib/new_relic/agent/instrumentation/typhoeus.rb
401
447
  - lib/new_relic/agent/instrumentation/typhoeus/chain.rb
402
448
  - lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb
403
449
  - lib/new_relic/agent/instrumentation/typhoeus/prepend.rb
404
450
  - lib/new_relic/agent/internal_agent_error.rb
405
451
  - lib/new_relic/agent/javascript_instrumentor.rb
452
+ - lib/new_relic/agent/linking_metadata.rb
453
+ - lib/new_relic/agent/local_log_decorator.rb
454
+ - lib/new_relic/agent/log_event_aggregator.rb
406
455
  - lib/new_relic/agent/log_once.rb
456
+ - lib/new_relic/agent/log_priority.rb
407
457
  - lib/new_relic/agent/logging.rb
408
458
  - lib/new_relic/agent/memory_logger.rb
409
459
  - lib/new_relic/agent/messaging.rb
@@ -446,7 +496,6 @@ files:
446
496
  - lib/new_relic/agent/stats_engine.rb
447
497
  - lib/new_relic/agent/stats_engine/gc_profiler.rb
448
498
  - lib/new_relic/agent/stats_engine/stats_hash.rb
449
- - lib/new_relic/agent/supported_versions.rb
450
499
  - lib/new_relic/agent/synthetics_event_aggregator.rb
451
500
  - lib/new_relic/agent/system_info.rb
452
501
  - lib/new_relic/agent/threading/agent_thread.rb
@@ -501,7 +550,6 @@ files:
501
550
  - lib/new_relic/control/class_methods.rb
502
551
  - lib/new_relic/control/frameworks.rb
503
552
  - lib/new_relic/control/frameworks/external.rb
504
- - lib/new_relic/control/frameworks/merb.rb
505
553
  - lib/new_relic/control/frameworks/rails.rb
506
554
  - lib/new_relic/control/frameworks/rails3.rb
507
555
  - lib/new_relic/control/frameworks/rails4.rb
@@ -529,6 +577,7 @@ files:
529
577
  - lib/new_relic/recipes/capistrano3.rb
530
578
  - lib/new_relic/recipes/capistrano_legacy.rb
531
579
  - lib/new_relic/supportability_helper.rb
580
+ - lib/new_relic/traced_thread.rb
532
581
  - lib/new_relic/version.rb
533
582
  - lib/newrelic_rpm.rb
534
583
  - lib/sequel/extensions/newrelic_instrumentation.rb
@@ -563,7 +612,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
563
612
  requirements:
564
613
  - - ">="
565
614
  - !ruby/object:Gem::Version
566
- version: 2.0.0
615
+ version: 2.2.0
567
616
  required_rubygems_version: !ruby/object:Gem::Requirement
568
617
  requirements:
569
618
  - - ">"
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.
@@ -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
@@ -1,49 +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 ::Excon
6
- class Connection
7
- # @connection is deprecated in newer excon versions and replaced with @data
8
- def newrelic_connection_params
9
- (@data || @connection)
10
- end
11
-
12
- def newrelic_resolved_request_params(request_params)
13
- resolved = newrelic_connection_params.merge(request_params)
14
- resolved[:headers] = resolved[:headers].merge(request_params[:headers] || {})
15
- resolved
16
- end
17
-
18
- def request_with_newrelic_trace(params, &block)
19
- resolved_params = newrelic_resolved_request_params(params)
20
- wrapped_request = ::NewRelic::Agent::HTTPClients::ExconHTTPRequest.new(resolved_params)
21
- segment = NewRelic::Agent::Tracer.start_external_request_segment(
22
- library: wrapped_request.type,
23
- uri: wrapped_request.uri,
24
- procedure: wrapped_request.method
25
- )
26
-
27
- begin
28
- response = nil
29
- segment.add_request_headers wrapped_request
30
-
31
- response = NewRelic::Agent::Tracer.capture_segment_error segment do
32
- request_without_newrelic_trace(resolved_params, &block)
33
- end
34
-
35
- wrapped_response = ::NewRelic::Agent::HTTPClients::ExconHTTPResponse.new(response)
36
- segment.process_response_headers wrapped_response
37
-
38
- response
39
- ensure
40
- segment.finish if segment
41
- end
42
- end
43
-
44
- def self.install_newrelic_instrumentation
45
- alias request_without_newrelic_trace request
46
- alias request request_with_newrelic_trace
47
- end
48
- end
49
- end
@@ -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
- require 'set'
6
-
7
- DependencyDetection.defer do
8
- @name = :merb_controller
9
-
10
- depends_on do
11
- defined?(Merb) && defined?(Merb::Controller)
12
- end
13
-
14
- executes do
15
- ::NewRelic::Agent.logger.info 'Installing Merb Controller instrumentation'
16
- end
17
-
18
- executes do
19
- require 'merb-core/controller/merb_controller'
20
-
21
- Merb::Controller.class_eval do
22
- include NewRelic::Agent::Instrumentation::ControllerInstrumentation
23
-
24
- # determine the path that is used in the metric name for
25
- # the called controller action
26
- def newrelic_metric_path
27
- "#{controller_name}/#{action_name}"
28
- end
29
-
30
- protected
31
-
32
- def _dispatch_with_newrelic_trace(*args)
33
- options = {}
34
- options[:params] = params
35
- perform_action_with_newrelic_trace(options) do
36
- _dispatch_without_newrelic_trace(*args)
37
- end
38
- end
39
-
40
- alias_method :_dispatch_without_newrelic_trace, :_dispatch
41
- alias_method :_dispatch, :_dispatch_with_newrelic_trace
42
- end
43
- end
44
- end
@@ -1,33 +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 = :merb_error
7
-
8
- depends_on do
9
- defined?(Merb) && defined?(Merb::Dispatcher) && defined?(Merb::Dispatcher::DefaultException)
10
- end
11
-
12
- depends_on do
13
- Merb::Dispatcher::DefaultException.respond_to?(:before)
14
- end
15
-
16
- executes do
17
- ::NewRelic::Agent.logger.info 'Installing Merb Errors instrumentation'
18
- end
19
-
20
- executes do
21
-
22
- # Hook in the notification to merb
23
- error_notifier = Proc.new {
24
- if request.exceptions #check that there's actually an exception
25
- # Note, this assumes we have already captured the other information such as uri and params in the Transaction.
26
- NewRelic::Agent::Transaction.notice_error(request.exceptions.first)
27
- end
28
- }
29
- Merb::Dispatcher::DefaultException.before error_notifier
30
- Exceptions.before error_notifier
31
-
32
- end
33
- end
@@ -1,125 +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/parameter_filtering'
6
-
7
- DependencyDetection.defer do
8
- @name = :rails21_view
9
-
10
- depends_on do
11
- !NewRelic::Agent.config[:disable_view_instrumentation] &&
12
- defined?(ActionController) && defined?(ActionController::Base) && defined?(ActionView::PartialTemplate) && defined?(ActionView::Template) &&
13
- defined?(Rails::VERSION::STRING) && Rails::VERSION::STRING =~ /^2\.1\./ # Rails 2.1 &&
14
- end
15
-
16
- executes do
17
- ::NewRelic::Agent.logger.info 'Installing Rails 2.1 View instrumentation'
18
- end
19
-
20
- executes do
21
- ActionView::PartialTemplate.class_eval do
22
- include NewRelic::Agent::MethodTracer
23
- add_method_tracer :render, 'View/#{path_without_extension[%r{^(/.*/)?(.*)$},2]}.#{@view.template_format}.#{extension}/Partial'
24
- end
25
-
26
- # this is for template rendering, as opposed to partial rendering.
27
- ActionView::Template.class_eval do
28
- include NewRelic::Agent::MethodTracer
29
- add_method_tracer :render, 'View/#{(path_without_extension || @view.controller.newrelic_metric_path)[%r{^(/.*/)?(.*)$},2]}.#{@view.template_format}.#{extension}/Rendering'
30
- end
31
- end
32
- end
33
-
34
- DependencyDetection.defer do
35
- @name = :old_rails_view
36
-
37
- depends_on do
38
- !NewRelic::Agent.config[:disable_view_instrumentation] &&
39
- defined?(ActionController) && defined?(ActionController::Base) &&
40
- defined?(Rails::VERSION::STRING) && Rails::VERSION::STRING =~ /^(1\.|2\.0)/ # Rails 1.* - 2.0
41
- end
42
-
43
- executes do
44
- ::NewRelic::Agent.logger.info 'Installing Rails 1.* - 2.0 View instrumentation'
45
- end
46
-
47
- executes do
48
- ActionController::Base.class_eval do
49
- include NewRelic::Agent::MethodTracer
50
- add_method_tracer :render, 'View/#{newrelic_metric_path}/Rendering'
51
- end
52
- end
53
- end
54
-
55
- DependencyDetection.defer do
56
- @name = :rails23_view
57
-
58
- depends_on do
59
- !NewRelic::Agent.config[:disable_view_instrumentation] &&
60
- defined?(ActionView) && defined?(ActionView::Template) && defined?(ActionView::RenderablePartial) &&
61
- defined?(Rails::VERSION::STRING) && Rails::VERSION::STRING =~ /^2\.[23]/
62
- end
63
-
64
- executes do
65
- ::NewRelic::Agent.logger.info 'Installing Rails 2.2 - 2.3 View instrumentation'
66
- end
67
-
68
- executes do
69
- ActionView::RenderablePartial.module_eval do
70
- include NewRelic::Agent::MethodTracer
71
- add_method_tracer :render_partial, 'View/#{path[%r{^(/.*/)?(.*)$},2]}/Partial'
72
- end
73
-
74
- ActionView::Template.class_eval do
75
- include NewRelic::Agent::MethodTracer
76
- add_method_tracer :render, 'View/#{path[%r{^(/.*/)?(.*)$},2]}/Rendering'
77
- end
78
- end
79
- end
80
-
81
- DependencyDetection.defer do
82
- @name = :rails2_controller
83
-
84
- depends_on do
85
- defined?(ActionController) && defined?(ActionController::Base)
86
- end
87
-
88
- depends_on do
89
- defined?(Rails::VERSION::MAJOR) && Rails::VERSION::MAJOR.to_i == 2
90
- end
91
-
92
- executes do
93
- ::NewRelic::Agent.logger.info 'Installing Rails 2 Controller instrumentation'
94
- end
95
-
96
- executes do
97
- ActionController::Base.class_eval do
98
- include NewRelic::Agent::Instrumentation::ControllerInstrumentation
99
-
100
- def perform_action_with_newrelic_trace_wrapper
101
- munged_params = (respond_to?(:filter_parameters)) ? filter_parameters(params) : params
102
- munged_params = NewRelic::Agent::ParameterFiltering.filter_rails_request_parameters(munged_params)
103
-
104
- perform_action_with_newrelic_trace(:params => munged_params) do
105
- perform_action_without_newrelic_trace
106
- end
107
- end
108
-
109
- alias_method :perform_action_without_newrelic_trace, :perform_action
110
- alias_method :perform_action, :perform_action_with_newrelic_trace_wrapper
111
- private :perform_action
112
-
113
- # determine the path that is used in the metric name for
114
- # the called controller action
115
- def newrelic_metric_path(action_name_override = nil)
116
- action_part = action_name_override || action_name
117
- if action_name_override || self.class.action_methods.include?(action_part)
118
- "#{self.class.controller_path}/#{action_part}"
119
- else
120
- "#{self.class.controller_path}/(other)"
121
- end
122
- end
123
- end
124
- end
125
- end
@@ -1,46 +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 = :rails_action_web_service
7
-
8
- depends_on do
9
- defined?(ActionWebService)
10
- end
11
-
12
- executes do
13
- ::NewRelic::Agent.logger.info 'Installing Rails ActionWebService instrumentation'
14
- end
15
-
16
- executes do
17
- # NewRelic Agent instrumentation for WebServices
18
-
19
- # Note Action Web Service is removed from default package in rails
20
- # 2.0, this is purely here as a service to our legacy customers.
21
-
22
- # instrumentation for Web Service martialing - XML RPC
23
- ActionWebService::Protocol::XmlRpc::XmlRpcProtocol.class_eval do
24
- add_method_tracer :decode_request, "WebService/Xml Rpc/XML Decode"
25
- add_method_tracer :encode_request, "WebService/Xml Rpc/XML Encode"
26
- add_method_tracer :decode_response, "WebService/Xml Rpc/XML Decode"
27
- add_method_tracer :encode_response, "WebService/Xml Rpc/XML Encode"
28
- end
29
-
30
- # instrumentation for Web Service martialing - Soap
31
- ActionWebService::Protocol::Soap::SoapProtocol.class_eval do
32
- add_method_tracer :decode_request, "WebService/Soap/XML Decode"
33
- add_method_tracer :encode_request, "WebService/Soap/XML Encode"
34
- add_method_tracer :decode_response, "WebService/Soap/XML Decode"
35
- add_method_tracer :encode_response, "WebService/Soap/XML Encode"
36
- end
37
-
38
- if defined?(ActionController) && defined?(ActionController::Base)
39
- ActionController::Base.class_eval do
40
- if method_defined? :perform_invocation
41
- add_method_tracer :perform_invocation, 'WebService/#{controller_name}/#{args.first}'
42
- end
43
- end
44
- end
45
- end
46
- end