sensu-plugins-couchbase 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-couchbase.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-conntrack)
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/sensu-plugins-conntrack.svg)](http://badge.fury.io/rb/sensu-plugins-conntrack)
|
5
5
|
[![Code Climate](https://codeclimate.com/github/sensu-plugins/sensu-plugins-conntrack/badges/gpa.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-conntrack)
|
6
6
|
[![Test Coverage](https://codeclimate.com/github/sensu-plugins/sensu-plugins-conntrack/badges/coverage.svg)](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
|