sensu-plugins-couchbase 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +3 -1
- data/CHANGELOG.md +20 -5
- data/README.md +3 -1
- data/bin/check-couchbase-bucket-quota.rb +17 -4
- data/bin/check-couchbase-bucket-replica.rb +102 -0
- data/bin/check-couchbase-cluster.rb +111 -0
- data/bin/metrics-couchbase.py +1 -0
- data/lib/sensu-plugins-couchbase/version.rb +1 -1
- data.tar.gz.sig +1 -1
- metadata +9 -5
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0a03979385618140b020f45ce9cbe125f3027c7b
|
|
4
|
+
data.tar.gz: 9508376bc031b21d27c90138c5e77eccde015746
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d06f86f523f0d683cd7e8e58c2403a1c0375e81239f380ab97627f6962ece865239642430de5b9c5465028c2ebd7891438986abe054675f7467cf2d48ad55607
|
|
7
|
+
data.tar.gz: a81521eedd800f106b54e00ad907e9a7db77b1c1978333c741448aa79e4efcdecef35da30be2df3897e72a7abd2b0f4cd79a12d35d3d05fa392a1852eb662e0a
|
checksums.yaml.gz.sig
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
H@��)�O����oM��-��)�r*_���o0I�
|
|
2
|
+
-C�d���^r�C
|
|
3
|
+
w��U��-�c���������Z����(������qb'
|
data/CHANGELOG.md
CHANGED
|
@@ -5,7 +5,21 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
|
5
5
|
|
|
6
6
|
## Unreleased
|
|
7
7
|
|
|
8
|
-
## 0.
|
|
8
|
+
## [0.2.0] - 2015-11-20
|
|
9
|
+
### Added
|
|
10
|
+
- add couchbase cluster check
|
|
11
|
+
- add couchbase bucket replica check
|
|
12
|
+
- metrics-couchbase.py: add ep_cache_miss_rate metric
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- Switched to rest-client
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
- check-couchbase-bucket-quota.rb: Fixed issue when only last bucket was shown in the output and/or check stopped on
|
|
19
|
+
the first problem found
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [0.1.0] - 2015-08-11
|
|
9
23
|
### Added
|
|
10
24
|
- add metrics-couchbase.py plugin (requires python requests,DNS modules)
|
|
11
25
|
|
|
@@ -26,7 +40,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
|
26
40
|
### Added
|
|
27
41
|
- initial release
|
|
28
42
|
|
|
29
|
-
[unreleased]: https://github.com/sensu-plugins/sensu-plugins-
|
|
30
|
-
[0.
|
|
31
|
-
[0.0
|
|
32
|
-
[0.0.
|
|
43
|
+
[unreleased]: https://github.com/sensu-plugins/sensu-plugins-couchbase/compare/0.2.0...HEAD
|
|
44
|
+
[0.2.0]: https://github.com/sensu-plugins/sensu-plugins-couchbase/compare/0.1.0...0.2.0
|
|
45
|
+
[0.1.0]: https://github.com/sensu-plugins/sensu-plugins-couchbase/compare/0.0.3...0.1.0
|
|
46
|
+
[0.0.3]: https://github.com/sensu-plugins/sensu-plugins-couchbase/compare/0.0.2...0.0.3
|
|
47
|
+
[0.0.2]: https://github.com/sensu-plugins/sensu-plugins-couchbase/compare/0.0.1...0.0.2
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## Sensu-Plugins-couchbase
|
|
2
2
|
|
|
3
|
-
[
|
|
3
|
+
[](https://travis-ci.org/sensu-plugins/sensu-plugins-conntrack)
|
|
4
4
|
[](http://badge.fury.io/rb/sensu-plugins-conntrack)
|
|
5
5
|
[](https://codeclimate.com/github/sensu-plugins/sensu-plugins-conntrack)
|
|
6
6
|
[](https://codeclimate.com/github/sensu-plugins/sensu-plugins-conntrack)
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
|
|
12
12
|
## Files
|
|
13
13
|
* bin/check-couchbase-bucket-quota.rb
|
|
14
|
+
* bin/check-couchbase-bucket-replica.rb
|
|
15
|
+
* bin/check-couchbase-cluster.rb
|
|
14
16
|
|
|
15
17
|
## Usage
|
|
16
18
|
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
#
|
|
31
31
|
|
|
32
32
|
require 'sensu-plugin/check/cli'
|
|
33
|
-
require '
|
|
33
|
+
require 'rest-client'
|
|
34
34
|
require 'json'
|
|
35
35
|
|
|
36
36
|
#
|
|
@@ -97,14 +97,27 @@ class CheckCouchbase < Sensu::Plugin::Check::CLI
|
|
|
97
97
|
unknown 'couchbase REST API returned invalid JSON'
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
+
warning_found = false
|
|
101
|
+
critical_found = false
|
|
102
|
+
|
|
100
103
|
results.each do |bucket|
|
|
101
104
|
next if config[:bucket] && bucket[:name] != config[:bucket]
|
|
102
105
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
+
if bucket[:basicStats][:quotaPercentUsed] > config[:crit]
|
|
107
|
+
critical_found = true
|
|
108
|
+
status = 'CRITICAL'
|
|
109
|
+
elsif bucket[:basicStats][:quotaPercentUsed] > config[:warn]
|
|
110
|
+
warning_found = true
|
|
111
|
+
status = 'WARNING'
|
|
112
|
+
else
|
|
113
|
+
status = 'OK'
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
output "Couchbase #{bucket[:name]} bucket quota usage is #{bucket[:basicStats][:quotaPercentUsed]}: #{status}"
|
|
106
117
|
end
|
|
107
118
|
|
|
119
|
+
critical if critical_found
|
|
120
|
+
warning if warning_found
|
|
108
121
|
ok
|
|
109
122
|
end
|
|
110
123
|
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#! /usr/bin/env ruby
|
|
2
|
+
#
|
|
3
|
+
# check-couchbase-bucket-replica
|
|
4
|
+
#
|
|
5
|
+
# DESCRIPTION:
|
|
6
|
+
# This plugin checks Couchbase bucket replication number.
|
|
7
|
+
#
|
|
8
|
+
# OUTPUT:
|
|
9
|
+
# plain text
|
|
10
|
+
#
|
|
11
|
+
# PLATFORMS:
|
|
12
|
+
# Linux
|
|
13
|
+
#
|
|
14
|
+
# DEPENDENCIES:
|
|
15
|
+
# gem: sensu-plugin
|
|
16
|
+
# gem: rest-client
|
|
17
|
+
# Gem: json
|
|
18
|
+
#
|
|
19
|
+
# USAGE:
|
|
20
|
+
# check-couchbase-bucket-replica.rb -u admin -P secret -a http://<ip>:8091 -r 3
|
|
21
|
+
# check-couchbase-bucket-replica.rb -u admin -P secret -a http://<ip>:8091 -b superreplica -r 5
|
|
22
|
+
#
|
|
23
|
+
# NOTES:
|
|
24
|
+
# This plugin is tested against couchbase 3.0.x
|
|
25
|
+
#
|
|
26
|
+
# LICENSE:
|
|
27
|
+
# Copyright (c) 2015, Olivier Bazoud, olivier.bazoud@gmail.com
|
|
28
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
|
29
|
+
# for details.
|
|
30
|
+
#
|
|
31
|
+
|
|
32
|
+
require 'sensu-plugin/check/cli'
|
|
33
|
+
require 'rest-client'
|
|
34
|
+
require 'json'
|
|
35
|
+
|
|
36
|
+
#
|
|
37
|
+
# Check Couchbase
|
|
38
|
+
#
|
|
39
|
+
class CheckCouchbaseBucketReplica < Sensu::Plugin::Check::CLI
|
|
40
|
+
option :user,
|
|
41
|
+
description: 'Couchbase Admin Rest API auth username',
|
|
42
|
+
short: '-u USERNAME',
|
|
43
|
+
long: '--user USERNAME'
|
|
44
|
+
|
|
45
|
+
option :password,
|
|
46
|
+
description: 'Couchbase Admin Rest API auth password',
|
|
47
|
+
short: '-P PASSWORD',
|
|
48
|
+
long: '--password PASSWORD'
|
|
49
|
+
|
|
50
|
+
option :api,
|
|
51
|
+
description: 'Couchbase Admin Rest API base URL',
|
|
52
|
+
short: '-a URL',
|
|
53
|
+
long: '--api URL',
|
|
54
|
+
default: 'http://localhost:8091'
|
|
55
|
+
|
|
56
|
+
option :replica,
|
|
57
|
+
description: 'Replication number expected',
|
|
58
|
+
short: '-r REPLICA',
|
|
59
|
+
long: '--replica REPLICA',
|
|
60
|
+
proc: proc(&:to_f),
|
|
61
|
+
default: 1
|
|
62
|
+
|
|
63
|
+
option :bucket,
|
|
64
|
+
description: 'Bucket name, if ommited all buckets will be checked',
|
|
65
|
+
short: '-b BUCKET',
|
|
66
|
+
long: '--bucket BUCKET'
|
|
67
|
+
|
|
68
|
+
def run
|
|
69
|
+
begin
|
|
70
|
+
resource = '/pools/default/buckets'
|
|
71
|
+
response = RestClient::Request.new(
|
|
72
|
+
method: :get,
|
|
73
|
+
url: "#{config[:api]}/#{resource}",
|
|
74
|
+
user: config[:user],
|
|
75
|
+
password: config[:password],
|
|
76
|
+
headers: { accept: :json, content_type: :json }
|
|
77
|
+
).execute
|
|
78
|
+
results = JSON.parse(response.to_str, symbolize_names: true)
|
|
79
|
+
rescue Errno::ECONNREFUSED
|
|
80
|
+
unknown 'Connection refused'
|
|
81
|
+
rescue RestClient::ResourceNotFound
|
|
82
|
+
unknown "Resource not found: #{resource}"
|
|
83
|
+
rescue RestClient::RequestFailed
|
|
84
|
+
unknown 'Request failed'
|
|
85
|
+
rescue RestClient::RequestTimeout
|
|
86
|
+
unknown 'Connection timed out'
|
|
87
|
+
rescue RestClient::Unauthorized
|
|
88
|
+
unknown 'Missing or incorrect Couchbase REST API credentials'
|
|
89
|
+
rescue JSON::ParserError
|
|
90
|
+
unknown 'couchbase REST API returned invalid JSON'
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
results.each do |bucket|
|
|
94
|
+
next if config[:bucket] && bucket[:name] != config[:bucket]
|
|
95
|
+
|
|
96
|
+
message "Couchbase #{bucket[:name]} bucket replica number is #{bucket[:replicaNumber]}"
|
|
97
|
+
critical if bucket[:replicaNumber] != config[:replica]
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
ok "Couchbase buckets replica number is #{config[:replica]}"
|
|
101
|
+
end
|
|
102
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#! /usr/bin/env ruby
|
|
2
|
+
#
|
|
3
|
+
# check-couchbase-cluster
|
|
4
|
+
#
|
|
5
|
+
# DESCRIPTION:
|
|
6
|
+
# This plugin checks Couchbase cluster.
|
|
7
|
+
#
|
|
8
|
+
# OUTPUT:
|
|
9
|
+
# plain text
|
|
10
|
+
#
|
|
11
|
+
# PLATFORMS:
|
|
12
|
+
# Linux
|
|
13
|
+
#
|
|
14
|
+
# DEPENDENCIES:
|
|
15
|
+
# gem: sensu-plugin
|
|
16
|
+
# gem: rest-client
|
|
17
|
+
# Gem: json
|
|
18
|
+
#
|
|
19
|
+
# USAGE:
|
|
20
|
+
# check-couchbase-cluster.rb -u admin -P secret -a http://<ip>:8091 -c 12
|
|
21
|
+
#
|
|
22
|
+
# NOTES:
|
|
23
|
+
# This plugin is tested against couchbase 3.0.1
|
|
24
|
+
#
|
|
25
|
+
# LICENSE:
|
|
26
|
+
# Copyright (c) 2015, Olivier Bazoud, olivier.bazoud@gmail.com
|
|
27
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
|
28
|
+
# for details.
|
|
29
|
+
#
|
|
30
|
+
|
|
31
|
+
require 'sensu-plugin/check/cli'
|
|
32
|
+
require 'rest-client'
|
|
33
|
+
require 'json'
|
|
34
|
+
|
|
35
|
+
#
|
|
36
|
+
# Check Couchbase cluster
|
|
37
|
+
#
|
|
38
|
+
class CheckCouchbaseCluster < Sensu::Plugin::Check::CLI
|
|
39
|
+
option :user,
|
|
40
|
+
description: 'Couchbase Admin Rest API auth username',
|
|
41
|
+
short: '-u USERNAME',
|
|
42
|
+
long: '--user USERNAME'
|
|
43
|
+
|
|
44
|
+
option :password,
|
|
45
|
+
description: 'Couchbase Admin Rest API auth password',
|
|
46
|
+
short: '-P PASSWORD',
|
|
47
|
+
long: '--password PASSWORD'
|
|
48
|
+
|
|
49
|
+
option :api,
|
|
50
|
+
description: 'Couchbase Admin Rest API base URL',
|
|
51
|
+
short: '-a URL',
|
|
52
|
+
long: '--api URL',
|
|
53
|
+
default: 'http://localhost:8091'
|
|
54
|
+
|
|
55
|
+
option :cluster_size,
|
|
56
|
+
description: 'Cluster size expected',
|
|
57
|
+
short: '-c CLUSTER_SIZE',
|
|
58
|
+
long: '--cluster-size CLUSTER_SIZE',
|
|
59
|
+
proc: proc(&:to_f)
|
|
60
|
+
|
|
61
|
+
option :couchbase_version,
|
|
62
|
+
description: 'Couchbase version expected',
|
|
63
|
+
short: '-v VERSION',
|
|
64
|
+
long: '--version VERSION',
|
|
65
|
+
proc: proc(&:to_f)
|
|
66
|
+
|
|
67
|
+
def run
|
|
68
|
+
begin
|
|
69
|
+
resource = '/pools/nodes'
|
|
70
|
+
response = RestClient::Request.execute(
|
|
71
|
+
method: :get,
|
|
72
|
+
url: "#{config[:api]}/#{resource}",
|
|
73
|
+
user: config[:user],
|
|
74
|
+
password: config[:password],
|
|
75
|
+
headers: { accept: :json, content_type: :json }
|
|
76
|
+
)
|
|
77
|
+
results = JSON.parse(response.to_str, symbolize_names: true)
|
|
78
|
+
rescue Errno::ECONNREFUSED
|
|
79
|
+
unknown 'Connection refused'
|
|
80
|
+
rescue RestClient::ResourceNotFound
|
|
81
|
+
unknown "Resource not found: #{resource}"
|
|
82
|
+
rescue RestClient::RequestFailed
|
|
83
|
+
unknown 'Request failed'
|
|
84
|
+
rescue RestClient::RequestTimeout
|
|
85
|
+
unknown 'Connection timed out'
|
|
86
|
+
rescue RestClient::Unauthorized
|
|
87
|
+
unknown 'Missing or incorrect Couchbase REST API credentials'
|
|
88
|
+
rescue JSON::ParserError
|
|
89
|
+
unknown 'couchbase REST API returned invalid JSON'
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
if config[:couchbase_version]
|
|
93
|
+
nodes_version = results[:nodes].select { |node| node[:version] != config[:couchbase_version] }
|
|
94
|
+
critical "Unexpected couchbase's version on nodes: #{nodes_version.map { |node| node[:hostname] }}" if nodes_version.size > 0
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
nodes_unhealthy = results[:nodes].select { |node| node[:status] != 'healthy' }
|
|
98
|
+
critical "These nodes are not 'healthy': #{nodes_unhealthy.map { |node| node[:hostname] }}" if nodes_unhealthy.size > 0
|
|
99
|
+
|
|
100
|
+
nodes_unactive = results[:nodes].select { |node| node[:clusterMembership] != 'active' }
|
|
101
|
+
critical "These nodes are not 'active' in the cluster: #{nodes_unactive.map { |node| node[:hostname] }}" if nodes_unactive.size > 0
|
|
102
|
+
|
|
103
|
+
critical "Cluster #{results[:alerts].size} alert(s)" if results[:alerts].size > 0
|
|
104
|
+
|
|
105
|
+
warning "Cluster rebalance status #{results[:rebalanceStatus]}" if results[:rebalanceStatus] != 'none'
|
|
106
|
+
|
|
107
|
+
critical "Cluster's size is #{results[:nodes].size}, #{config[:cluster_size]} expected" if results[:nodes].size != config[:cluster_size]
|
|
108
|
+
|
|
109
|
+
ok "Nodes: #{results[:nodes].size}"
|
|
110
|
+
end
|
|
111
|
+
end
|
data/bin/metrics-couchbase.py
CHANGED
data.tar.gz.sig
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
~G����[\Zb�b�MʧM��N��}��v��X�����ޤ�u�7�aPHĐ!�?��'��
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sensu-plugins-couchbase
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sensu Plugins and contributors
|
|
@@ -30,22 +30,22 @@ cert_chain:
|
|
|
30
30
|
8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
|
|
31
31
|
HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
|
|
32
32
|
-----END CERTIFICATE-----
|
|
33
|
-
date: 2015-
|
|
33
|
+
date: 2015-11-20 00:00:00.000000000 Z
|
|
34
34
|
dependencies:
|
|
35
35
|
- !ruby/object:Gem::Dependency
|
|
36
|
-
name:
|
|
36
|
+
name: rest-client
|
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
|
38
38
|
requirements:
|
|
39
39
|
- - '='
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: 1.8.
|
|
41
|
+
version: 1.8.0
|
|
42
42
|
type: :runtime
|
|
43
43
|
prerelease: false
|
|
44
44
|
version_requirements: !ruby/object:Gem::Requirement
|
|
45
45
|
requirements:
|
|
46
46
|
- - '='
|
|
47
47
|
- !ruby/object:Gem::Version
|
|
48
|
-
version: 1.8.
|
|
48
|
+
version: 1.8.0
|
|
49
49
|
- !ruby/object:Gem::Dependency
|
|
50
50
|
name: sensu-plugin
|
|
51
51
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -189,6 +189,8 @@ dependencies:
|
|
|
189
189
|
description: Sensu plugins for couchbase
|
|
190
190
|
email: "<sensu-users@googlegroups.com>"
|
|
191
191
|
executables:
|
|
192
|
+
- check-couchbase-cluster.rb
|
|
193
|
+
- check-couchbase-bucket-replica.rb
|
|
192
194
|
- check-couchbase-bucket-quota.rb
|
|
193
195
|
extensions: []
|
|
194
196
|
extra_rdoc_files: []
|
|
@@ -197,6 +199,8 @@ files:
|
|
|
197
199
|
- LICENSE
|
|
198
200
|
- README.md
|
|
199
201
|
- bin/check-couchbase-bucket-quota.rb
|
|
202
|
+
- bin/check-couchbase-bucket-replica.rb
|
|
203
|
+
- bin/check-couchbase-cluster.rb
|
|
200
204
|
- bin/metrics-couchbase.py
|
|
201
205
|
- lib/sensu-plugins-couchbase.rb
|
|
202
206
|
- lib/sensu-plugins-couchbase/version.rb
|
metadata.gz.sig
CHANGED
|
Binary file
|