sensu-plugins-mongodb 0.0.8 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YjA2ZWU2OGIyMzA1NmU1MzYzNTU1ZDVmZjg2ZjQyOTE0MTI1YWM0NA==
5
- data.tar.gz: !binary |-
6
- OTg3ODdiYTA2NjA5MmNhZWMxNjI5MDNjNDI0NTE2OTczOTRmYmQ4Yw==
2
+ SHA1:
3
+ metadata.gz: 59832576dcbd865bd1cd58e4961a53e04c1995f3
4
+ data.tar.gz: 50be87abcbff02c6cfe176a420e005566d26e278
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MDk1NWU2ZjI0YThhYjU1ZTUzNGUxZDRkMDE5NmEyYzM1NzI3MmMzMTYyODIw
10
- NTBmOGI3YjhlYTgzYTNiM2UxZTRiNDliYWMxODY4Y2ZkN2VmNGE3MzIwOTk0
11
- NGViODZmZDU3NDI1MjFiNDYzOWYwMWFlNDg2MGEzMDdkNjMwNjQ=
12
- data.tar.gz: !binary |-
13
- NGYxZmY1NTYxMGMzYzFkYWFiMWM0YTgzOWI5OWQ2ZGVmOTEyZDU5ZGY4MDg2
14
- YzRjZmVjMmIyOTRhYjFhODEzNTQyYjAzYWJhOTU5NGU4OTQwYzUyNDQ2OTVk
15
- ZGZhY2VjNTBiYTg3OWI0YzMzOWJmNDQyNWMxMDJmNWEyNTlmODg=
6
+ metadata.gz: f8abce4c1c05ee006437ba030c2a97d0742bc6d96507177712c970f3c7323ca9f992ef744d2b893b9926c9b63436acd0898d5d20c2c2eae2b4adaed598ec9188
7
+ data.tar.gz: 9f6c99372e062e43b21fa2f78f7cd221a5b44284150b5afb68a87c085627c24f3ecd0c409c4f36051b1b383ef485f6af33773634e4ae173cba85f0e1d6f2f225
data/CHANGELOG.md CHANGED
@@ -5,6 +5,21 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.0.0] - 2016-06-03
9
+ ### Removed
10
+ - support for Rubies 1.9.3 and 2.0
11
+
12
+ ### Added
13
+ - support for Ruby 2.3
14
+
15
+ ### Changed
16
+ - Update to rubocop 0.40 and cleanup
17
+ - Update to mongo gem 2.2.x and boson 4.x for MongoDB 3.2 support
18
+
19
+ ### Fixed
20
+ - Long was added as a numeric type
21
+ - metrics-mongodb.rb: fix typo
22
+
8
23
  ## [0.0.8] - 2016-03-04
9
24
  ### Added
10
25
  - Add a ruby wrapper script for check-mongodb.py
@@ -49,7 +64,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
49
64
  ### Added
50
65
  - initial release
51
66
 
52
- [unreleased]: https://github.com/sensu-plugins/sensu-plugins-mongodb/compare/0.0.8...HEAD
67
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-mongodb/compare/1.0.0...HEAD
68
+ [1.0.0]: https://github.com/sensu-plugins/sensu-plugins-mongodb/compare/0.0.8...1.0.0
53
69
  [0.0.8]: https://github.com/sensu-plugins/sensu-plugins-mongodb/compare/0.0.7...0.0.8
54
70
  [0.0.7]: https://github.com/sensu-plugins/sensu-plugins-mongodb/compare/0.0.6...0.0.7
55
71
  [0.0.6]: https://github.com/sensu-plugins/sensu-plugins-mongodb/compare/0.0.5...0.0.6
data/README.md CHANGED
@@ -10,6 +10,7 @@
10
10
 
11
11
  ## Files
12
12
  * bin/check-mongodb.py
13
+ * bin/check-mongodb.rb - wrapper for check-mongodb.py
13
14
  * bin/metrics-mongodb.rb
14
15
 
15
16
  ## Usage
@@ -19,3 +20,5 @@
19
20
  [Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
20
21
 
21
22
  ## Notes
23
+
24
+ The `pymongo` python package needs to be installed to use `check-mongodb`
data/bin/check-mongodb.py CHANGED
@@ -90,7 +90,7 @@ def performance_data(perf_data, params):
90
90
 
91
91
 
92
92
  def numeric_type(param):
93
- if ((type(param) == float or type(param) == int or param == None)):
93
+ if ((type(param) == float or type(param) == int or type(param) == long or param == None)):
94
94
  return True
95
95
  return False
96
96
 
@@ -63,33 +63,96 @@ class MongoDB < Sensu::Plugin::Metric::CLI::Graphite
63
63
  short: '-s SCHEME',
64
64
  default: "#{Socket.gethostname}.mongodb"
65
65
 
66
+ option :password,
67
+ description: 'MongoDB password',
68
+ long: '--password PASSWORD',
69
+ default: nil
70
+
71
+ option :debug,
72
+ description: 'Enable debug',
73
+ long: '--debug',
74
+ default: false
75
+
76
+ def get_mongo_doc(command)
77
+ rs = @db.command(command)
78
+ unless rs.successful?
79
+ return nil
80
+ end
81
+ rs.documents[0]
82
+ end
83
+
84
+ # connects to mongo and sets @db, works with MongoClient < 2.0.0
85
+ def connect_mongo_db(host, port, db_name, db_user, db_password)
86
+ if Gem.loaded_specs['mongo'].version < Gem::Version.new('2.0.0')
87
+ mongo_client = MongoClient.new(host, port)
88
+ @db = mongo_client.db(db_name)
89
+ @db.authenticate(db_user, db_password) unless db_user.nil?
90
+ else
91
+ address_str = "#{host}:#{port}"
92
+ client_opts = {}
93
+ client_opts[:database] = db_name
94
+ unless db_user.nil?
95
+ client_opts[:user] = db_user
96
+ client_opts[:password] = db_password
97
+ end
98
+ mongo_client = Mongo::Client.new([address_str], client_opts)
99
+ @db = mongo_client.database
100
+ end
101
+ end
102
+
66
103
  def run
104
+ Mongo::Logger.logger.level = Logger::FATAL
105
+ @debug = config[:debug]
106
+ if @debug
107
+ Mongo::Logger.logger.level = Logger::DEBUG
108
+ config_debug = config.clone
109
+ config_debug[:password] = '***'
110
+ puts 'arguments:' + config_debug.inspect
111
+ end
67
112
  host = config[:host]
68
113
  port = config[:port]
69
114
  db_name = 'admin'
70
115
  db_user = config[:user]
71
116
  db_password = config[:password]
72
117
 
73
- mongo_client = MongoClient.new(host, port)
74
- @db = mongo_client.db(db_name)
75
- @db.authenticate(db_user, db_password) unless db_user.nil?
118
+ connect_mongo_db(host, port, db_name, db_user, db_password)
76
119
 
77
- @is_master = { 'isMaster' => 1 }
120
+ _result = false
121
+ # check if master
122
+ begin
123
+ @is_master = get_mongo_doc('isMaster' => 1)
124
+ unless @is_master.nil?
125
+ _result = @is_master['ok'] == 1
126
+ end
127
+ rescue StandardError => e
128
+ if @debug
129
+ puts 'Error checking isMaster:' + e.message
130
+ puts e.backtrace.inspect
131
+ end
132
+ exit(1)
133
+ end
134
+
135
+ # get the metrics
78
136
  begin
79
137
  metrics = {}
80
- _result = @db.command(@is_master)['ok'] == 1
81
- server_status = @db.command('serverStatus' => 1)
82
- if server_status['ok'] == 1
138
+ server_status = get_mongo_doc('serverStatus' => 1)
139
+ if !server_status.nil? && server_status['ok'] == 1
83
140
  metrics.update(gather_replication_metrics(server_status))
84
141
  timestamp = Time.now.to_i
85
142
  metrics.each do |k, v|
86
143
  output [config[:scheme], k].join('.'), v, timestamp
87
144
  end
88
145
  end
89
- ok
90
- rescue
91
- exit(1)
146
+ rescue StandardError => e
147
+ if @debug
148
+ puts 'Error checking serverStatus:' + e.message
149
+ puts e.backtrace.inspect
150
+ end
151
+ exit(2)
92
152
  end
153
+
154
+ # done!
155
+ ok
93
156
  end
94
157
 
95
158
  def gather_replication_metrics(server_status)
@@ -117,8 +180,8 @@ class MongoDB < Sensu::Plugin::Metric::CLI::Graphite
117
180
  end
118
181
  end
119
182
 
120
- server_metrics['cursors.open'] = server_status['cursors']['totalOpen']
121
- server_metrics['cursors.timedOut'] = server_status['cursors']['timedOut']
183
+ server_metrics['cursors.open'] = server_status['metrics']['cursor']['open']['total']
184
+ server_metrics['cursors.timedOut'] = server_status['metrics']['cursor']['timedOut']
122
185
 
123
186
  server_metrics['mem.residentMb'] = server_status['mem']['resident']
124
187
  server_metrics['mem.virtualMb'] = server_status['mem']['virtual']
@@ -1,8 +1,8 @@
1
1
  module SensuPluginsMongoDB
2
2
  module Version
3
- MAJOR = 0
3
+ MAJOR = 1
4
4
  MINOR = 0
5
- PATCH = 8
5
+ PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,203 +1,191 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-mongodb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 1.0.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: 2016-03-04 00:00:00.000000000 Z
11
+ date: 2016-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bson
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.12.3
19
+ version: '4.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
25
- - !ruby/object:Gem::Version
26
- version: 1.12.3
27
- - !ruby/object:Gem::Dependency
28
- name: bson_ext
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '='
32
- - !ruby/object:Gem::Version
33
- version: 1.12.3
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '='
24
+ - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: 1.12.3
26
+ version: '4.0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: mongo
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - '='
46
32
  - !ruby/object:Gem::Version
47
- version: 1.12.3
33
+ version: 2.2.2
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - '='
53
39
  - !ruby/object:Gem::Version
54
- version: 1.12.3
40
+ version: 2.2.2
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: sensu-plugin
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - ~>
45
+ - - "~>"
60
46
  - !ruby/object:Gem::Version
61
47
  version: '1.2'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - ~>
52
+ - - "~>"
67
53
  - !ruby/object:Gem::Version
68
54
  version: '1.2'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: bundler
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - ~>
59
+ - - "~>"
74
60
  - !ruby/object:Gem::Version
75
61
  version: '1.7'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - ~>
66
+ - - "~>"
81
67
  - !ruby/object:Gem::Version
82
68
  version: '1.7'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: codeclimate-test-reporter
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - ~>
73
+ - - "~>"
88
74
  - !ruby/object:Gem::Version
89
75
  version: '0.4'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - ~>
80
+ - - "~>"
95
81
  - !ruby/object:Gem::Version
96
82
  version: '0.4'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: github-markup
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - ~>
87
+ - - "~>"
102
88
  - !ruby/object:Gem::Version
103
89
  version: '1.3'
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
- - - ~>
94
+ - - "~>"
109
95
  - !ruby/object:Gem::Version
110
96
  version: '1.3'
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: pry
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
- - - ~>
101
+ - - "~>"
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0.10'
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
- - - ~>
108
+ - - "~>"
123
109
  - !ruby/object:Gem::Version
124
110
  version: '0.10'
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: rake
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
- - - ~>
115
+ - - "~>"
130
116
  - !ruby/object:Gem::Version
131
117
  version: '10.0'
132
118
  type: :development
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
- - - ~>
122
+ - - "~>"
137
123
  - !ruby/object:Gem::Version
138
124
  version: '10.0'
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: redcarpet
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
- - - ~>
129
+ - - "~>"
144
130
  - !ruby/object:Gem::Version
145
131
  version: '3.2'
146
132
  type: :development
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
- - - ~>
136
+ - - "~>"
151
137
  - !ruby/object:Gem::Version
152
138
  version: '3.2'
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: rspec
155
141
  requirement: !ruby/object:Gem::Requirement
156
142
  requirements:
157
- - - ~>
143
+ - - "~>"
158
144
  - !ruby/object:Gem::Version
159
145
  version: '3.1'
160
146
  type: :development
161
147
  prerelease: false
162
148
  version_requirements: !ruby/object:Gem::Requirement
163
149
  requirements:
164
- - - ~>
150
+ - - "~>"
165
151
  - !ruby/object:Gem::Version
166
152
  version: '3.1'
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: rubocop
169
155
  requirement: !ruby/object:Gem::Requirement
170
156
  requirements:
171
- - - ~>
157
+ - - "~>"
172
158
  - !ruby/object:Gem::Version
173
- version: '0.37'
159
+ version: 0.40.0
174
160
  type: :development
175
161
  prerelease: false
176
162
  version_requirements: !ruby/object:Gem::Requirement
177
163
  requirements:
178
- - - ~>
164
+ - - "~>"
179
165
  - !ruby/object:Gem::Version
180
- version: '0.37'
166
+ version: 0.40.0
181
167
  - !ruby/object:Gem::Dependency
182
168
  name: yard
183
169
  requirement: !ruby/object:Gem::Requirement
184
170
  requirements:
185
- - - ~>
171
+ - - "~>"
186
172
  - !ruby/object:Gem::Version
187
173
  version: '0.8'
188
174
  type: :development
189
175
  prerelease: false
190
176
  version_requirements: !ruby/object:Gem::Requirement
191
177
  requirements:
192
- - - ~>
178
+ - - "~>"
193
179
  - !ruby/object:Gem::Version
194
180
  version: '0.8'
195
- description: ! "This plugin provides native MongoDB\n instrumentation
196
- for monitoring and metrics\n collection, including:
197
- service health, database\n connectivity, replication
198
- lag/status, `oplog`\n monitoring, collection-specific
199
- metrics, and\n more."
200
- email: <sensu-users@googlegroups.com>
181
+ description: |-
182
+ This plugin provides native MongoDB
183
+ instrumentation for monitoring and metrics
184
+ collection, including: service health, database
185
+ connectivity, replication lag/status, `oplog`
186
+ monitoring, collection-specific metrics, and
187
+ more.
188
+ email: "<sensu-users@googlegroups.com>"
201
189
  executables:
202
190
  - check-mongodb.rb
203
191
  - metrics-mongodb.rb
@@ -228,18 +216,19 @@ require_paths:
228
216
  - lib
229
217
  required_ruby_version: !ruby/object:Gem::Requirement
230
218
  requirements:
231
- - - ! '>='
219
+ - - ">="
232
220
  - !ruby/object:Gem::Version
233
- version: 1.9.3
221
+ version: '2.1'
234
222
  required_rubygems_version: !ruby/object:Gem::Requirement
235
223
  requirements:
236
- - - ! '>='
224
+ - - ">="
237
225
  - !ruby/object:Gem::Version
238
226
  version: '0'
239
227
  requirements: []
240
228
  rubyforge_project:
241
- rubygems_version: 2.4.5
229
+ rubygems_version: 2.5.1
242
230
  signing_key:
243
231
  specification_version: 4
244
232
  summary: Sensu plugins for mongodb
245
233
  test_files: []
234
+ has_rdoc: