sensu-plugins-mongodb-boutetnico 1.0.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -112,30 +112,23 @@ class MongoDB < Sensu::Plugin::Metric::CLI::Graphite
112
112
  rs.documents[0]
113
113
  end
114
114
 
115
- # connects to mongo and sets @db, works with MongoClient < 2.0.0
116
115
  def connect_mongo_db
117
- if Gem.loaded_specs['mongo'].version < Gem::Version.new('2.0.0')
118
- mongo_client = MongoClient.new(host, port)
119
- @db = mongo_client.db(db_name)
120
- @db.authenticate(db_user, db_password) unless db_user.nil?
121
- else
122
- address_str = "#{config[:host]}:#{config[:port]}"
123
- client_opts = {}
124
- client_opts[:database] = 'admin'
125
- unless config[:user].nil?
126
- client_opts[:user] = config[:user]
127
- client_opts[:password] = config[:password]
128
- end
129
- if config[:ssl]
130
- client_opts[:ssl] = true
131
- client_opts[:ssl_cert] = config[:ssl_cert]
132
- client_opts[:ssl_key] = config[:ssl_key]
133
- client_opts[:ssl_ca_cert] = config[:ssl_ca_cert]
134
- client_opts[:ssl_verify] = config[:ssl_verify]
135
- end
136
- mongo_client = Mongo::Client.new([address_str], client_opts)
137
- @db = mongo_client.database
116
+ address_str = "#{config[:host]}:#{config[:port]}"
117
+ client_opts = {}
118
+ client_opts[:database] = 'admin'
119
+ unless config[:user].nil?
120
+ client_opts[:user] = config[:user]
121
+ client_opts[:password] = config[:password]
122
+ end
123
+ if config[:ssl]
124
+ client_opts[:ssl] = true
125
+ client_opts[:ssl_cert] = config[:ssl_cert]
126
+ client_opts[:ssl_key] = config[:ssl_key]
127
+ client_opts[:ssl_ca_cert] = config[:ssl_ca_cert]
128
+ client_opts[:ssl_verify] = config[:ssl_verify]
138
129
  end
130
+ mongo_client = Mongo::Client.new([address_str], client_opts)
131
+ @db = mongo_client.database
139
132
  end
140
133
 
141
134
  def run
@@ -225,8 +218,6 @@ class MongoDB < Sensu::Plugin::Metric::CLI::Graphite
225
218
  def gather_replication_metrics(replication_status)
226
219
  replication_metrics = {}
227
220
 
228
- replication_metrics['replica_set'] = replication_status['set']
229
- replication_metrics['date'] = replication_status['date']
230
221
  replication_metrics['myState'] = replication_status['myState']
231
222
  replication_metrics['term'] = replication_status['term']
232
223
  replication_metrics['heartbeatIntervalMillis'] = replication_status['heartbeatIntervalMillis']
@@ -238,14 +229,11 @@ class MongoDB < Sensu::Plugin::Metric::CLI::Graphite
238
229
  replication_member_metrics = {}
239
230
 
240
231
  replication_member_metrics['id'] = replication_member_details['_id']
241
- replication_member_metrics['name'] = replication_member_details['name']
242
232
  replication_member_metrics['health'] = replication_member_details['health']
243
233
  replication_member_metrics['state'] = replication_member_details['state']
244
- replication_member_metrics['stateStr'] = replication_member_details['stateStr']
245
234
  member_hierarchy = replication_member_details['stateStr']
246
235
  if member_hierarchy == 'PRIMARY'
247
236
  @primary_optime_date = replication_member_details['optimeDate']
248
- replication_member_metrics['primary.startOptimeDate'] = @primary_optime_date
249
237
  end
250
238
  if member_hierarchy == 'SECONDARY'
251
239
  @secondary_optime_date = replication_member_details['optimeDate']
@@ -256,12 +244,9 @@ class MongoDB < Sensu::Plugin::Metric::CLI::Graphite
256
244
  replication_member_metrics['minutesBehindPrimary'] = difference_in_minutes
257
245
  replication_member_metrics['hoursBehindPrimary'] = difference_in_hours
258
246
  end
259
- replication_member_metrics['optimeDate'] = replication_member_details['optimeDate']
260
247
  replication_member_metrics['uptime'] = replication_member_details['uptime']
261
- replication_member_metrics['lastHeartbeat'] = replication_member_details['lastHeartbeat']
262
248
  replication_member_metrics['lastHeartbeatRecv'] = replication_member_details['lastHeartbeatiRecv']
263
249
  replication_member_metrics['pingMs'] = replication_member_details['pingMs']
264
- replication_member_metrics['syncingTo'] = replication_member_details['syncingTo']
265
250
  replication_member_metrics['configVersion'] = replication_member_details['configVersion']
266
251
 
267
252
  replication_member_metrics
@@ -23,16 +23,9 @@ module SensuPluginsMongoDB
23
23
  raise 'Already connected to a database'
24
24
  end
25
25
 
26
- db_user = @config[:user]
27
- db_password = @config[:password]
28
26
  @mongo_client = get_mongo_client(db_name)
29
27
 
30
- if Gem.loaded_specs['mongo'].version < Gem::Version.new('2.0.0')
31
- @db = @mongo_client.db(db_name)
32
- @db.authenticate(db_user, db_password) unless db_user.nil?
33
- else
34
- @db = @mongo_client.database
35
- end
28
+ @db = @mongo_client.database
36
29
  end
37
30
 
38
31
  # Fetches a document from the mongo db.
@@ -321,10 +314,13 @@ module SensuPluginsMongoDB
321
314
  server_metrics['metrics.repl.network.getmores_totalMillis'] = repl['network']['getmores']['totalMillis']
322
315
  server_metrics['metrics.repl.network.ops'] = repl['network']['ops']
323
316
  server_metrics['metrics.repl.network.readersCreated'] = repl['network']['readersCreated']
324
- server_metrics['metrics.repl.preload.docs_num'] = repl['preload']['docs']['num']
325
- server_metrics['metrics.repl.preload.docs_totalMillis'] = repl['preload']['docs']['totalMillis']
326
- server_metrics['metrics.repl.preload.indexes_num'] = repl['preload']['indexes']['num']
327
- server_metrics['metrics.repl.preload.indexes_totalMillis'] = repl['preload']['indexes']['totalMillis']
317
+
318
+ if Gem::Version.new(mongo_version) <= Gem::Version.new('4.0.0')
319
+ server_metrics['metrics.repl.preload.docs_num'] = repl['preload']['docs']['num']
320
+ server_metrics['metrics.repl.preload.docs_totalMillis'] = repl['preload']['docs']['totalMillis']
321
+ server_metrics['metrics.repl.preload.indexes_num'] = repl['preload']['indexes']['num']
322
+ server_metrics['metrics.repl.preload.indexes_totalMillis'] = repl['preload']['indexes']['totalMillis']
323
+ end
328
324
 
329
325
  # Metrics (replicaset status)
330
326
  # MongoDB will fail if not running with --replSet, hence the check for nil
@@ -333,7 +329,7 @@ module SensuPluginsMongoDB
333
329
  end
334
330
 
335
331
  # Metrics (storage)
336
- if Gem::Version.new(mongo_version) >= Gem::Version.new('2.6.0')
332
+ if Gem::Version.new(mongo_version) <= Gem::Version.new('4.0.0')
337
333
  freelist = server_status['metrics']['storage']['freelist']
338
334
  server_metrics['metrics.storage.freelist.search_bucketExhauseted'] = freelist['search']['bucketExhausted']
339
335
  server_metrics['metrics.storage.freelist.search_requests'] = freelist['search']['requests']
@@ -375,25 +371,21 @@ module SensuPluginsMongoDB
375
371
  ssl_ca_cert = @config[:ssl_ca_cert]
376
372
  ssl_verify = @config[:ssl_verify]
377
373
 
378
- if Gem.loaded_specs['mongo'].version < Gem::Version.new('2.0.0')
379
- MongoClient.new(host, port)
380
- else
381
- address_str = "#{host}:#{port}"
382
- client_opts = {}
383
- client_opts[:database] = db_name
384
- unless db_user.nil?
385
- client_opts[:user] = db_user
386
- client_opts[:password] = db_password
387
- end
388
- if ssl
389
- client_opts[:ssl] = true
390
- client_opts[:ssl_cert] = ssl_cert
391
- client_opts[:ssl_key] = ssl_key
392
- client_opts[:ssl_ca_cert] = ssl_ca_cert
393
- client_opts[:ssl_verify] = ssl_verify
394
- end
395
- Mongo::Client.new([address_str], client_opts)
374
+ address_str = "#{host}:#{port}"
375
+ client_opts = {}
376
+ client_opts[:database] = db_name
377
+ unless db_user.nil?
378
+ client_opts[:user] = db_user
379
+ client_opts[:password] = db_password
380
+ end
381
+ if ssl
382
+ client_opts[:ssl] = true
383
+ client_opts[:ssl_cert] = ssl_cert
384
+ client_opts[:ssl_key] = ssl_key
385
+ client_opts[:ssl_ca_cert] = ssl_ca_cert
386
+ client_opts[:ssl_verify] = ssl_verify
396
387
  end
388
+ Mongo::Client.new([address_str], client_opts)
397
389
  end
398
390
  end
399
391
  end
@@ -1,8 +1,8 @@
1
1
  module SensuPluginsMongoDB
2
2
  module Version
3
3
  MAJOR = 1
4
- MINOR = 0
5
- PATCH = 1
4
+ MINOR = 4
5
+ PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-mongodb-boutetnico
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-05 00:00:00.000000000 Z
11
+ date: 2020-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bson
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 0.85.0
159
+ version: 0.93.1
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 0.85.0
166
+ version: 0.93.1
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: yard
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -187,10 +187,11 @@ description: |-
187
187
  more.
188
188
  email: "<sensu-users@googlegroups.com>"
189
189
  executables:
190
- - check-mongodb.rb
190
+ - check-mongodb-query-count.rb
191
191
  - metrics-mongodb.rb
192
- - check-mongodb-metric.rb
192
+ - check-mongodb.rb
193
193
  - metrics-mongodb-replication.rb
194
+ - check-mongodb-metric.rb
194
195
  extensions: []
195
196
  extra_rdoc_files: []
196
197
  files:
@@ -198,6 +199,7 @@ files:
198
199
  - LICENSE
199
200
  - README.md
200
201
  - bin/check-mongodb-metric.rb
202
+ - bin/check-mongodb-query-count.rb
201
203
  - bin/check-mongodb.py
202
204
  - bin/check-mongodb.rb
203
205
  - bin/metrics-mongodb-replication.rb