rpm_contrib 2.1.7 → 2.1.8

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,12 +1,17 @@
1
+ * Version 2.1.8
2
+ - Removed redis instrumenation in favor of https://github.com/evanphx/newrelic-redis
3
+ - [FIX] adding check for aws-sdk (Tom Caspy)
4
+ - Improved Mongo instrumenation from pull request #16 titanous/mongoid-instrumentation
5
+
1
6
  * Version 2.1.7
2
7
 
3
- Community contributed instrumentation
4
- - ThinkingSphinx instrumentation improvement (Martin Sarsale)
5
- - Picky search engine instrumentation (Niko Dittmann)
6
- Community Contributed Bug Fixes
7
- - Fix instrumentation injection for ActiveMessaging (W. Andrew Loe III)
8
- Other
9
- - Improvements to resque instrumentation detection of if its in a forking ruby implementation
8
+ Community contributed instrumentation
9
+ - ThinkingSphinx instrumentation improvement (Martin Sarsale)
10
+ - Picky search engine instrumentation (Niko Dittmann)
11
+ Community Contributed Bug Fixes
12
+ - Fix instrumentation injection for ActiveMessaging (W. Andrew Loe III)
13
+ Other
14
+ - Improvements to resque instrumentation detection of if its in a forking ruby implementation
10
15
 
11
16
  * Version 2.1.6
12
17
 
data/README.md CHANGED
@@ -3,6 +3,29 @@
3
3
  The `rpm_contrib` gem contains instrumentation for the New Relic RPM agent
4
4
  contributed by the community of RPM users. It requires the RPM Agent to run.
5
5
 
6
+ ## Deprecation of RPM Contrib
7
+
8
+ Over the next several months we are planning to phase out the rpm_contrib gem.
9
+ We plan to migrate the existing instrumentation into separate projects that
10
+ instrument indivdual libraries or frameworks. We see this as having a number of
11
+ advantages for newrelic users. We will provide a list of recommended
12
+ instrumentation projects.
13
+
14
+ ### Removal of Redis Instrumenation
15
+
16
+ As of version 2.1.8 Redis instrumentation has been removed from rpm_contrib.
17
+ Please use Evan Phoenix's `newrelic-redis` gem instead.
18
+ https://github.com/evanphx/newrelic-redis
19
+
20
+ ### Request for Maintainers
21
+
22
+ If you're interested in maintaining instrumentation for a specific
23
+ library/framework, please let us know. We'd love to work with you and promote
24
+ your project. -The New Relic Ruby Agent Team
25
+
26
+
27
+ ## Getting Started
28
+
6
29
  To use the rpm_contrib gem, install the `rpm_contrib` gem from rubygems.org.
7
30
  It will also install the required version of the `newrelic_rpm` gem if it's not
8
31
  already installed.
@@ -23,9 +46,6 @@ require the rpm_contrib gem:
23
46
  require 'rubygems'
24
47
  require 'rpm_contrib'
25
48
 
26
- When you load the rpm_contrib gem, the `newrelic_rpm` gem will also be
27
- initialized. No need for a separate require statement for `newrelic_rpm`.
28
-
29
49
  In non-Rails frameworks, it's important that the New Relic Agent gets
30
50
  loaded as late as possible, or that the final initialization hook is called
31
51
  after all other frameworks have loaded:
@@ -43,6 +63,7 @@ fix the auto-detection logic.
43
63
  If this does not help then set the `log_level` to `debug` in the `newrelic.yml` file
44
64
  and examine the `newrelic_agent.log` file for errors after restarting your app.
45
65
 
66
+
46
67
  ## Supported Frameworks
47
68
 
48
69
  A number of frameworks are supported in the contrib gem. They are all turned on
@@ -122,11 +143,10 @@ To disable resque, set 'disable_resque' to true in your newrelic.yml file.
122
143
 
123
144
  ### Redis
124
145
 
125
- Redis instrumentation will record operations as well as `allWeb` and `allOther`
126
- summary metrics under the `Database/Redis` metric namespace. This instrumentation
127
- supports Redis versions 1.x and 2.x.
146
+ Redis instrumentation has been removed from rpm_contrib.
128
147
 
129
- To disable Redis instrumentation, set 'disable_redis' to true in your newrelic.yml file.
148
+ Please use Evan Phoenix's `newrelic-redis` gem instead.
149
+ https://github.com/evanphx/newrelic-redis
130
150
 
131
151
  ### Riak
132
152
 
@@ -13,8 +13,14 @@ DependencyDetection.defer do
13
13
 
14
14
  executes do
15
15
  # Instrument connections to the AWS-S3 service
16
- ::AWS::S3::Connection::Management::ClassMethods.module_eval do
17
- add_method_tracer :establish_connection!, 'AWS-S3/establish_connection!'
16
+ if defined?(::AWS::S3::Connection)
17
+ ::AWS::S3::Connection::Management::ClassMethods.module_eval do
18
+ add_method_tracer :establish_connection!, 'AWS-S3/establish_connection!'
19
+ end
20
+ else #using aws-sdk
21
+ ::AWS::S3.class_eval do
22
+ add_method_tracer :initialize, 'AWS-S3/establish_connection!'
23
+ end
18
24
  end
19
25
 
20
26
  # Instrument methods on Bucket
@@ -11,7 +11,7 @@ DependencyDetection.defer do
11
11
  end
12
12
 
13
13
  executes do
14
- ::Mongo::Connection.class_eval do
14
+ ::Mongo::Logging.class_eval do
15
15
  include NewRelic::Agent::MethodTracer
16
16
 
17
17
  def instrument_with_newrelic_trace(name, payload = {}, &blk)
@@ -32,17 +32,21 @@ DependencyDetection.defer do
32
32
  alias_method :instrument_without_newrelic_trace, :instrument
33
33
  alias_method :instrument, :instrument_with_newrelic_trace
34
34
  end
35
+ class Mongo::Collection; include Mongo::Logging; end
36
+ class Mongo::Connection; include Mongo::Logging; end
37
+ class Mongo::Cursor; include Mongo::Logging; end
35
38
 
39
+ # cursor refresh is not currently instrumented in mongo driver, so not picked up by above - have to add our own here
36
40
  ::Mongo::Cursor.class_eval do
37
41
  include NewRelic::Agent::MethodTracer
38
42
 
39
- def refresh_with_newrelic_trace
43
+ def send_get_more_with_newrelic_trace
40
44
  trace_execution_scoped("Database/#{collection.name}/refresh") do
41
- refresh_without_newrelic_trace
45
+ send_get_more_without_newrelic_trace
42
46
  end
43
47
  end
44
- alias_method :refresh_without_newrelic_trace, :refresh
45
- alias_method :refresh, :refresh_with_newrelic_trace
48
+ alias_method :send_get_more_without_newrelic_trace, :send_get_more
49
+ alias_method :send_get_more, :send_get_more_with_newrelic_trace
46
50
  add_method_tracer :close, 'Database/#{collection.name}/close'
47
51
  end
48
52
  end
@@ -0,0 +1,21 @@
1
+ DependencyDetection.defer do
2
+ @name = :mongoid
3
+
4
+ depends_on do
5
+ defined?(::Mongoid) and not NewRelic::Control.instance['disable_mongoid']
6
+ end
7
+
8
+ executes do
9
+ NewRelic::Agent.logger.debug 'Installing Mongoid instrumentation'
10
+ end
11
+
12
+ executes do
13
+ Mongoid::Collection.class_eval do
14
+ include NewRelic::Agent::MethodTracer
15
+
16
+ (Mongoid::Collections::Operations::ALL - [:<<, :[]]).each do |method|
17
+ add_method_tracer method, "ActiveRecord/\#{@klass}/#{method}"
18
+ end
19
+ end
20
+ end
21
+ end
metadata CHANGED
@@ -1,69 +1,53 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rpm_contrib
3
- version: !ruby/object:Gem::Version
4
- hash: 5
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.1.8
5
5
  prerelease:
6
- segments:
7
- - 2
8
- - 1
9
- - 7
10
- version: 2.1.7
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Bill Kayser
14
9
  - Jon Guymon
15
10
  autorequire:
16
11
  bindir: bin
17
12
  cert_chain: []
18
-
19
- date: 2011-12-22 00:00:00 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
13
+ date: 2012-03-19 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: newrelic_rpm
17
+ requirement: &70251204964480 !ruby/object:Gem::Requirement
23
18
  none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 1
28
- segments:
29
- - 3
30
- - 1
31
- - 1
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
32
22
  version: 3.1.1
33
- name: newrelic_rpm
34
- prerelease: false
35
23
  type: :runtime
36
- requirement: *id001
37
- - !ruby/object:Gem::Dependency
38
- version_requirements: &id002 !ruby/object:Gem::Requirement
24
+ prerelease: false
25
+ version_requirements: *70251204964480
26
+ - !ruby/object:Gem::Dependency
27
+ name: newrelic_rpm
28
+ requirement: &70251204963860 !ruby/object:Gem::Requirement
39
29
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 1
44
- segments:
45
- - 3
46
- - 1
47
- - 1
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
48
33
  version: 3.1.1
49
- name: newrelic_rpm
50
- prerelease: false
51
34
  type: :runtime
52
- requirement: *id002
53
- description: |
54
- Community contributed instrumentation for various frameworks based on
35
+ prerelease: false
36
+ version_requirements: *70251204963860
37
+ description: ! 'Community contributed instrumentation for various frameworks based
38
+ on
39
+
55
40
  the New Relic Ruby monitoring gem newrelic_rpm.
56
41
 
42
+ '
57
43
  email: support@newrelic.com
58
44
  executables: []
59
-
60
45
  extensions: []
61
-
62
- extra_rdoc_files:
46
+ extra_rdoc_files:
63
47
  - CHANGELOG
64
48
  - LICENSE
65
49
  - README.md
66
- files:
50
+ files:
67
51
  - CHANGELOG
68
52
  - Gemfile
69
53
  - LICENSE
@@ -84,9 +68,9 @@ files:
84
68
  - lib/rpm_contrib/instrumentation/elastic_search.rb
85
69
  - lib/rpm_contrib/instrumentation/kyototycoon.rb
86
70
  - lib/rpm_contrib/instrumentation/mongo.rb
71
+ - lib/rpm_contrib/instrumentation/mongoid.rb
87
72
  - lib/rpm_contrib/instrumentation/paperclip.rb
88
73
  - lib/rpm_contrib/instrumentation/picky.rb
89
- - lib/rpm_contrib/instrumentation/redis.rb
90
74
  - lib/rpm_contrib/instrumentation/resque.rb
91
75
  - lib/rpm_contrib/instrumentation/riak_client.rb
92
76
  - lib/rpm_contrib/instrumentation/ripple.rb
@@ -102,46 +86,39 @@ files:
102
86
  - test/schema.rb
103
87
  - test/test_curb.rb
104
88
  - test/test_picky.rb
105
- - test/test_redis.rb
106
89
  - test/test_resque.rb
107
90
  - test/test_workling.rb
108
91
  homepage: http://github.com/newrelic/rpm_contrib
109
92
  licenses: []
110
-
111
93
  post_install_message:
112
- rdoc_options:
94
+ rdoc_options:
113
95
  - --line-numbers
114
96
  - --inline-source
115
97
  - --title
116
98
  - Contributed Instrumentation for New Relic RPM
117
99
  - -m
118
100
  - README.md
119
- require_paths:
101
+ require_paths:
120
102
  - lib
121
- required_ruby_version: !ruby/object:Gem::Requirement
103
+ required_ruby_version: !ruby/object:Gem::Requirement
122
104
  none: false
123
- requirements:
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- hash: 3
127
- segments:
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ segments:
128
110
  - 0
129
- version: "0"
130
- required_rubygems_version: !ruby/object:Gem::Requirement
111
+ hash: 1487779751657344136
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
113
  none: false
132
- requirements:
133
- - - ">="
134
- - !ruby/object:Gem::Version
135
- hash: 3
136
- segments:
137
- - 0
138
- version: "0"
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
139
118
  requirements: []
140
-
141
119
  rubyforge_project:
142
120
  rubygems_version: 1.8.10
143
121
  signing_key:
144
122
  specification_version: 3
145
123
  summary: Contributed Instrumentation for New Relic RPM
146
124
  test_files: []
147
-
@@ -1,42 +0,0 @@
1
- # Redis instrumentation contributed by Ashley Martens of ngmoco
2
- #
3
- DependencyDetection.defer do
4
- @name = :redis
5
-
6
- depends_on do
7
- defined?(::Redis) && !NewRelic::Control.instance['disable_redis']
8
- end
9
-
10
- executes do
11
- NewRelic::Agent.logger.debug 'Installing Redis instrumentation'
12
- end
13
-
14
- executes do
15
- ::Redis::Client.class_eval do
16
-
17
- include NewRelic::Agent::MethodTracer
18
-
19
- def self.redis_call_method
20
- ::Redis::Client.new.respond_to?(:call) ? :call : :raw_call_command
21
- end
22
-
23
-
24
- def raw_call_command_with_newrelic_trace *args
25
- method_name = args[0].is_a?(Array) ? args[0][0] : args[0]
26
- metrics = ["Database/Redis/#{method_name}",
27
- (NewRelic::Agent::Instrumentation::MetricFrame.recording_web_transaction? ? 'Database/Redis/allWeb' : 'Database/Redis/allOther')]
28
- self.class.trace_execution_scoped(metrics) do
29
- # NewRelic::Control.instance.log.debug("Instrumenting Redis Call[#{method_name}]: #{args[0].inspect}")
30
- raw_call_command_without_newrelic_trace(*args)
31
- end
32
- end
33
-
34
- alias_method :raw_call_command_without_newrelic_trace, redis_call_method
35
- alias_method redis_call_method, :raw_call_command_with_newrelic_trace
36
-
37
- end
38
- end
39
- end
40
-
41
-
42
-
data/test/test_redis.rb DELETED
@@ -1,34 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/helper"
2
- begin
3
- require 'redis'
4
- require 'ruby-debug'
5
- rescue LoadError
6
- end
7
-
8
- require "#{File.dirname(__FILE__)}/../lib/rpm_contrib/instrumentation/redis"
9
-
10
- if defined?(::Redis)
11
-
12
-
13
- class RedisTest < Test::Unit::TestCase
14
-
15
- # Called before every test method runs. Can be used
16
- # to set up fixture information.
17
- def setup
18
- # Do nothing
19
- end
20
-
21
- # Called after every test method runs. Can be used to tear
22
- # down fixture information.
23
-
24
- def teardown
25
- # Do nothing
26
- end
27
-
28
- # Fake test
29
- def test_fail
30
-
31
-
32
- end
33
- end
34
- end