newrelic_postgres_plugin 0.1.0 → 0.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c5dbbac674a6b9755b660189a8bb72673ac49196
4
- data.tar.gz: 8e8a5df463aba43e10e2a07161f0243646b7ff27
3
+ metadata.gz: 49e0f69488f29a73417c293ccc51c0157f1c91be
4
+ data.tar.gz: eac1744679e6e7a36a1a87461d407cf66fcfaab5
5
5
  SHA512:
6
- metadata.gz: dfac2bed440d8d21e6f84b40841a32990ff2f612ef887a9934d9b9335eabf2bcb761b795677e945798d0834ba49ac18bf27e0983724c468f91e5697134f849da
7
- data.tar.gz: 9cb90edba403d5bffd8f8baf7a3c1afc872fe0d6c54478e112c51e0599bcc48454b3047a7ca4660989e216c898c6b194653c21c04c43205ba08bb5a0f5c2f3b3
6
+ metadata.gz: 7a8dab6c229fd5806e70d2114e9ffe697339daf62575d4c49a3ff76c5dad23278d6f4221ffd2fbf2de3ccd47e2ffb99feee30f4697c2c4644d0eb4062cd78695
7
+ data.tar.gz: e84d2b09ea7a8e81dbe04f5a69dd9a9245a6a4677f2e6ad212110137169051d502f3eed6084a2b0f47fb0c8438cecd5687b619ea0d2a6d082c20e596a0de0692
@@ -7,51 +7,6 @@ require 'pg'
7
7
 
8
8
  module NewRelic::PostgresPlugin
9
9
 
10
- BACKEND_QUERY = %Q(
11
- SELECT count(*) - ( SELECT count(*) FROM pg_stat_activity WHERE
12
- #{
13
- if nine_two?
14
- "state <> 'idle'"
15
- else
16
- "current_query <> '<IDLE>'"
17
- end
18
- }
19
- ) AS backends_active, ( SELECT count(*) FROM pg_stat_activity WHERE
20
- #{
21
- if nine_two?
22
- "AND state = 'idle'"
23
- else
24
- "AND current_query = '<IDLE>'"
25
- end
26
- }
27
- ) AS backends_idle FROM pg_stat_activity;
28
- )
29
- DATABASE_QUERY = %Q(
30
- SELECT * FROM pg_stat_database;
31
- )
32
- BGWRITER_QUERY = %Q(
33
- SELECT * FROM pg_stat_bgwriter;
34
- )
35
- INDEX_COUNT_QUERY = %Q(
36
- SELECT count(1) as indexes FROM pg_class WHERE relkind = 'i';
37
- )
38
- INDEX_HIT_RATE_QUERY = %Q(
39
- SELECT
40
- 'index hit rate' AS name,
41
- (sum(idx_blks_hit)) / sum(idx_blks_hit + idx_blks_read) AS ratio
42
- FROM pg_statio_user_indexes
43
- UNION ALL
44
- SELECT
45
- 'cache hit rate' AS name,
46
- sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)) AS ratio
47
- FROM pg_statio_user_tables;
48
- )
49
- INDEX_SIZE_QUERY = %Q(
50
- SELECT pg_size_pretty(sum(relpages*8192)) AS size
51
- FROM pg_class
52
- WHERE reltype = 0;
53
- )
54
-
55
10
  # Register and run the agent
56
11
  def self.run
57
12
  # Register this agent.
@@ -63,6 +18,7 @@ module NewRelic::PostgresPlugin
63
18
 
64
19
 
65
20
  class Agent < NewRelic::Plugin::Agent::Base
21
+
66
22
  agent_guid 'com.boundless.postgres'
67
23
  agent_version '1.0.0'
68
24
  agent_config_options :host, :port, :user, :password, :dbname, :sslmode
@@ -126,14 +82,14 @@ module NewRelic::PostgresPlugin
126
82
 
127
83
 
128
84
  def report_backend_metrics
129
- @connection.exec(BACKEND_QUERY) do |result|
85
+ @connection.exec(backend_query) do |result|
130
86
  report_metric "Backends/Active", 'queries', result[0]['backends_active']
131
87
  report_metric "Backends/Idle", 'queries', result[0]['backends_idle']
132
88
  end
133
89
  end
134
90
 
135
91
  def report_database_metrics
136
- @connection.exec(DATABASE_QUERY) do |result|
92
+ @connection.exec(database_query) do |result|
137
93
  result.each do |row|
138
94
  database_name = row['datname']
139
95
  report_metric "Database/#{database_name}/Backends", '', row['numbackends'].to_i
@@ -152,25 +108,80 @@ module NewRelic::PostgresPlugin
152
108
  end
153
109
 
154
110
  def report_bgwriter_metrics
155
- @connection.exec(BGWRITER_QUERY) do |result|
111
+ @connection.exec(bgwriter_query) do |result|
156
112
  report_derived_metric "Background Writer/Checkpoints/Scheduled", 'checkpoints', result[0]['checkpoints_timed'].to_i
157
113
  report_derived_metric "Background Writer/Checkpoints/Requested", 'checkpoints', result[0]['checkpoints_requests'].to_i
158
114
  end
159
115
  end
160
116
 
161
117
  def report_index_metrics
162
- @connection.exec(INDEX_COUNT_QUERY) do |result|
118
+ @connection.exec(index_count_query) do |result|
163
119
  report_metric "Indexes/Total", 'indexes', result[0]['indexes'].to_i
164
120
  report_metric "Indexes/Disk Utilization", 'bytes', result[0]['size_indexes'].to_f
165
121
  end
166
- @connection.exec(INDEX_HIT_RATE_QUERY) do |result|
122
+ @connection.exec(index_hit_rate_query) do |result|
167
123
  report_metric "Indexes/Hit Rate", '%', result[0]['ratio'].to_f
168
124
  report_metric "Indexes/Cache Hit Rate", '%', result[1]['ratio'].to_f
169
125
  end
170
- @connection.exec(INDEX_SIZE_QUERY) do |result|
126
+ @connection.exec(index_size_query) do |result|
171
127
  report_metric "Indexes/Size", 'bytes', result[0]['size'].to_f
172
128
  end
173
129
  end
174
130
 
131
+ def backend_query
132
+ %Q(
133
+ SELECT count(*) - ( SELECT count(*) FROM pg_stat_activity WHERE
134
+ #{
135
+ if nine_two?
136
+ "state <> 'idle'"
137
+ else
138
+ "current_query <> '<IDLE>'"
139
+ end
140
+ }
141
+ ) AS backends_active, ( SELECT count(*) FROM pg_stat_activity WHERE
142
+ #{
143
+ if nine_two?
144
+ "AND state = 'idle'"
145
+ else
146
+ "AND current_query = '<IDLE>'"
147
+ end
148
+ }
149
+ ) AS backends_idle FROM pg_stat_activity;
150
+ )
151
+ end
152
+
153
+ def database_query
154
+ "SELECT * FROM pg_stat_database;"
155
+ end
156
+
157
+ def bgwriter_query
158
+ "SELECT * FROM pg_stat_bgwriter;"
159
+ end
160
+
161
+ def index_count_query
162
+ "SELECT count(1) as indexes FROM pg_class WHERE relkind = 'i';"
163
+
164
+ def index_hit_rate_query
165
+ %Q(
166
+ SELECT
167
+ 'index hit rate' AS name,
168
+ (sum(idx_blks_hit)) / sum(idx_blks_hit + idx_blks_read) AS ratio
169
+ FROM pg_statio_user_indexes
170
+ UNION ALL
171
+ SELECT
172
+ 'cache hit rate' AS name,
173
+ sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)) AS ratio
174
+ FROM pg_statio_user_tables;
175
+ )
176
+ end
177
+
178
+ def index_size_query
179
+ %Q(
180
+ SELECT pg_size_pretty(sum(relpages*8192)) AS size
181
+ FROM pg_class
182
+ WHERE reltype = 0;
183
+ )
184
+ end
185
+
175
186
  end
176
187
  end
@@ -2,5 +2,5 @@ require 'rubygems'
2
2
  require 'newrelic_postgres_plugin/agent'
3
3
 
4
4
  module NewRelic::PostgresPlugin
5
- VERSION = '0.1.0'
5
+ VERSION = '0.1.1'
6
6
  end
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'newrelic_postgres_plugin'
16
- s.version = '0.1.0'
16
+ s.version = '0.1.1'
17
17
  s.date = '2013-06-20'
18
18
  s.rubyforge_project = 'newrelic_postgres_plugin'
19
19
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: newrelic_postgres_plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Hodgson