newrelic_rpm 6.15.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +96 -22
  3. data/README.md +2 -2
  4. data/lib/new_relic/agent.rb +0 -6
  5. data/lib/new_relic/agent/autostart.rb +1 -2
  6. data/lib/new_relic/agent/configuration/default_source.rb +270 -104
  7. data/lib/new_relic/agent/configuration/manager.rb +2 -2
  8. data/lib/new_relic/agent/datastores/redis.rb +0 -4
  9. data/lib/new_relic/agent/distributed_tracing.rb +0 -66
  10. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +0 -16
  11. data/lib/new_relic/agent/instrumentation/bunny.rb +10 -152
  12. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +45 -0
  13. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +152 -0
  14. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +35 -0
  15. data/lib/new_relic/agent/instrumentation/curb.rb +9 -241
  16. data/lib/new_relic/agent/instrumentation/curb/chain.rb +93 -0
  17. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +222 -0
  18. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +63 -0
  19. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +38 -0
  20. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +53 -0
  21. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +34 -0
  22. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +8 -50
  23. data/lib/new_relic/agent/instrumentation/excon.rb +2 -1
  24. data/lib/new_relic/agent/instrumentation/grape.rb +13 -113
  25. data/lib/new_relic/agent/instrumentation/grape/chain.rb +25 -0
  26. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +100 -0
  27. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +17 -0
  28. data/lib/new_relic/agent/instrumentation/httpclient.rb +8 -30
  29. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +25 -0
  30. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +38 -0
  31. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +17 -0
  32. data/lib/new_relic/agent/instrumentation/httprb.rb +29 -0
  33. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +22 -0
  34. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +30 -0
  35. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +15 -0
  36. data/lib/new_relic/agent/instrumentation/memcache.rb +54 -69
  37. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +16 -0
  38. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +38 -121
  39. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +56 -0
  40. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +88 -0
  41. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +88 -0
  42. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +2 -0
  43. data/lib/new_relic/agent/instrumentation/mongo.rb +7 -0
  44. data/lib/new_relic/agent/instrumentation/net_http.rb +39 -0
  45. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +25 -0
  46. data/lib/new_relic/agent/instrumentation/{net_prepend.rb → net_http/instrumentation.rb} +3 -3
  47. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +21 -0
  48. data/lib/new_relic/agent/instrumentation/padrino.rb +18 -53
  49. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +34 -0
  50. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +27 -0
  51. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +20 -0
  52. data/lib/new_relic/agent/instrumentation/rack.rb +29 -139
  53. data/lib/new_relic/agent/instrumentation/rack/chain.rb +57 -0
  54. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +32 -0
  55. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +73 -0
  56. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +36 -0
  57. data/lib/new_relic/agent/instrumentation/rake.rb +13 -154
  58. data/lib/new_relic/agent/instrumentation/rake/chain.rb +25 -0
  59. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +144 -0
  60. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +14 -0
  61. data/lib/new_relic/agent/instrumentation/redis.rb +10 -109
  62. data/lib/new_relic/agent/instrumentation/redis/chain.rb +34 -0
  63. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +65 -0
  64. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +24 -0
  65. data/lib/new_relic/agent/instrumentation/resque.rb +8 -28
  66. data/lib/new_relic/agent/instrumentation/resque/chain.rb +22 -0
  67. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +33 -0
  68. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +16 -0
  69. data/lib/new_relic/agent/instrumentation/sinatra.rb +20 -158
  70. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +55 -0
  71. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +29 -34
  72. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +118 -0
  73. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +33 -0
  74. data/lib/new_relic/agent/instrumentation/typhoeus.rb +10 -89
  75. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +22 -0
  76. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +82 -0
  77. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +14 -0
  78. data/lib/new_relic/agent/new_relic_service.rb +3 -12
  79. data/lib/new_relic/agent/sql_sampler.rb +1 -1
  80. data/lib/new_relic/agent/transaction.rb +1 -4
  81. data/lib/new_relic/control/frameworks/rails.rb +11 -9
  82. data/lib/new_relic/control/instance_methods.rb +1 -0
  83. data/lib/new_relic/dependency_detection.rb +116 -10
  84. data/lib/new_relic/noticed_error.rb +1 -5
  85. data/lib/new_relic/supportability_helper.rb +1 -2
  86. data/lib/new_relic/version.rb +2 -2
  87. data/newrelic_rpm.gemspec +1 -1
  88. metadata +53 -8
  89. data/cert/cacert.pem +0 -1177
  90. data/lib/new_relic/agent/instrumentation/http.rb +0 -49
  91. data/lib/new_relic/agent/instrumentation/net.rb +0 -70
@@ -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
- DependencyDetection.defer do
6
- named :httprb
7
-
8
- depends_on do
9
- defined?(HTTP) && defined?(HTTP::Client)
10
- end
11
-
12
- executes do
13
- ::NewRelic::Agent.logger.info 'Installing http.rb instrumentation'
14
- require 'new_relic/agent/distributed_tracing/cross_app_tracing'
15
- require 'new_relic/agent/http_clients/http_rb_wrappers'
16
- end
17
-
18
- executes do
19
- class HTTP::Client
20
- def perform_with_newrelic_trace(request, options)
21
- wrapped_request = ::NewRelic::Agent::HTTPClients::HTTPRequest.new(request)
22
-
23
- begin
24
- segment = NewRelic::Agent::Tracer.start_external_request_segment(
25
- library: wrapped_request.type,
26
- uri: wrapped_request.uri,
27
- procedure: wrapped_request.method
28
- )
29
-
30
- segment.add_request_headers wrapped_request
31
-
32
- response = NewRelic::Agent::Tracer.capture_segment_error segment do
33
- perform_without_newrelic_trace(request, options)
34
- end
35
-
36
- wrapped_response = ::NewRelic::Agent::HTTPClients::HTTPResponse.new response
37
- segment.process_response_headers wrapped_response
38
-
39
- response
40
- ensure
41
- segment.finish if segment
42
- end
43
- end
44
-
45
- alias perform_without_newrelic_trace perform
46
- alias perform perform_with_newrelic_trace
47
- end
48
- end
49
- end
@@ -1,70 +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
- named :net_http
7
-
8
- depends_on do
9
- defined?(Net) && defined?(Net::HTTP)
10
- end
11
-
12
- executes do
13
- ::NewRelic::Agent.logger.info 'Installing Net instrumentation'
14
- require 'new_relic/agent/distributed_tracing/cross_app_tracing'
15
- require 'new_relic/agent/http_clients/net_http_wrappers'
16
- end
17
-
18
- def monkey_patched
19
- defined?(::Airbrake) ||
20
- defined?(::Rack::MiniProfiler) ||
21
- source_location_for(Net::HTTP, "request") =~ /airbrake|profiler/i
22
- end
23
-
24
- executes do
25
- if ::NewRelic::Agent.config[:prepend_net_instrumentation] && !monkey_patched
26
- if RUBY_VERSION < "2.1.0"
27
- ::Net::HTTP.send(:prepend, ::NewRelic::Agent::Instrumentation::NetPrepend)
28
- else
29
- ::Net::HTTP.prepend ::NewRelic::Agent::Instrumentation::NetPrepend
30
- end
31
- else
32
- NewRelic::Agent.record_metric("Supportability/Instrumentation/NetHTTP/MethodChaining", 0.0)
33
-
34
- class Net::HTTP
35
- def request_with_newrelic_trace(request, *args, &block)
36
- wrapped_request = NewRelic::Agent::HTTPClients::NetHTTPRequest.new(self, request)
37
-
38
- segment = NewRelic::Agent::Tracer.start_external_request_segment(
39
- library: wrapped_request.type,
40
- uri: wrapped_request.uri,
41
- procedure: wrapped_request.method
42
- )
43
-
44
- begin
45
- response = nil
46
- segment.add_request_headers wrapped_request
47
-
48
- # RUBY-1244 Disable further tracing in request to avoid double
49
- # counting if connection wasn't started (which calls request again).
50
- NewRelic::Agent.disable_all_tracing do
51
- response = NewRelic::Agent::Tracer.capture_segment_error segment do
52
- request_without_newrelic_trace(request, *args, &block)
53
- end
54
- end
55
-
56
- wrapped_response = NewRelic::Agent::HTTPClients::NetHTTPResponse.new response
57
- segment.process_response_headers wrapped_response
58
- response
59
- ensure
60
- segment.finish
61
- end
62
- end
63
-
64
- alias request_without_newrelic_trace request
65
- alias request request_with_newrelic_trace
66
- end
67
- end
68
-
69
- end
70
- end