sensu-plugins-storm 0.4.0 → 1.0.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
- data/README.md +7 -3
- data/bin/check-storm-workers.rb +100 -0
- data/lib/sensu-plugins-storm/version.rb +2 -2
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1890e59e02fd0ab62bd5440b455401c716df56bf
|
4
|
+
data.tar.gz: 014b252d57189836d61929056a80b3f7e6899b82
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e241dc326e76b78e2054ac391bf3981cb8f1f38449187ddcd4e5607d59a5b522eb9c869771e03b6a2ae1b82c62a1b6d505d793ee0cd3155b43418296549ad1ea
|
7
|
+
data.tar.gz: 1a0fcfe22df5f458f9467c0013bdf23e0ee0299adcfa37ee97d703ea2330bdb53e3bbcd9d4e3fc82faa4386d6e14e6d879dd6101f20e2e7fdd73443104d11b56
|
data/README.md
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
## Files
|
11
11
|
* bin/check-storm-topologies.rb
|
12
12
|
* bin/check-storm-capacity.rb
|
13
|
+
* bin/check-storm-workers.rb
|
13
14
|
* bin/metrics-storm-topologies.rb
|
14
15
|
|
15
16
|
## Usage
|
@@ -19,17 +20,20 @@
|
|
19
20
|
/opt/sensu/embedded/bin$ /opt/sensu/embedded/bin/ruby check-storm-topologies.rb --host=my-storm-cluster.com -s --user=admin --password=password --expect=1
|
20
21
|
```
|
21
22
|
|
22
|
-
|
23
23
|
**check-storm-capacity** example
|
24
24
|
```bash
|
25
25
|
/opt/sensu/embedded/bin$ /opt/sensu/embedded/bin/ruby check-storm-capacity.rb --host=my-storm-cluster.com -s --user=admin --password=password -w 1 -c 1.5
|
26
26
|
```
|
27
27
|
|
28
|
-
**check-storm-
|
28
|
+
**check-storm-workers** example
|
29
29
|
```bash
|
30
|
-
/opt/sensu/embedded/bin$ /opt/sensu/embedded/bin/ruby
|
30
|
+
/opt/sensu/embedded/bin$ /opt/sensu/embedded/bin/ruby check-storm-workers.rb --host=my-storm-cluster.com -s --user=admin --password=password -m 3 -w 4
|
31
31
|
```
|
32
32
|
|
33
|
+
**metrics-storm-topologies** example
|
34
|
+
```bash
|
35
|
+
/opt/sensu/embedded/bin$ /opt/sensu/embedded/bin/ruby metrics-storm-topologies.rb --host=my-storm-cluster.com -s --user=admin --password=password
|
36
|
+
```
|
33
37
|
|
34
38
|
## Installation
|
35
39
|
|
@@ -0,0 +1,100 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Storm Workers Check
|
4
|
+
# ===
|
5
|
+
#
|
6
|
+
# Copyright 2016 Andy Royle <ajroyle@gmail.com>
|
7
|
+
#
|
8
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
9
|
+
# for details.
|
10
|
+
#
|
11
|
+
# Check the number of workers (supervisors) for a given cluster and compare to warn/minimum thresholds
|
12
|
+
|
13
|
+
require 'sensu-plugin/check/cli'
|
14
|
+
require 'rest-client'
|
15
|
+
require 'openssl'
|
16
|
+
require 'uri'
|
17
|
+
require 'json'
|
18
|
+
require 'base64'
|
19
|
+
|
20
|
+
class CheckStormCapacity < Sensu::Plugin::Check::CLI
|
21
|
+
option :host,
|
22
|
+
short: '-h',
|
23
|
+
long: '--host=VALUE',
|
24
|
+
description: 'Cluster host',
|
25
|
+
default: 'localhost'
|
26
|
+
|
27
|
+
option :user,
|
28
|
+
short: '-u',
|
29
|
+
long: '--username=VALUE',
|
30
|
+
description: 'username',
|
31
|
+
required: true
|
32
|
+
|
33
|
+
option :pass,
|
34
|
+
short: '-p',
|
35
|
+
long: '--password=VALUE',
|
36
|
+
description: 'password',
|
37
|
+
required: true
|
38
|
+
|
39
|
+
option :ssl,
|
40
|
+
description: 'use HTTPS (default false)',
|
41
|
+
long: '--ssl'
|
42
|
+
|
43
|
+
option :crit,
|
44
|
+
short: '-m',
|
45
|
+
long: '--minimum=VALUE',
|
46
|
+
description: 'Minimum (critical) workers',
|
47
|
+
required: true,
|
48
|
+
proc: proc { |l| l.to_i }
|
49
|
+
|
50
|
+
option :warn,
|
51
|
+
short: '-w',
|
52
|
+
long: '--warn=VALUE',
|
53
|
+
description: 'Warn threshold',
|
54
|
+
required: true,
|
55
|
+
proc: proc { |l| l.to_i }
|
56
|
+
|
57
|
+
option :timeout,
|
58
|
+
short: '-t',
|
59
|
+
long: '--timeout=VALUE',
|
60
|
+
description: 'Timeout in seconds',
|
61
|
+
proc: proc { |l| l.to_i },
|
62
|
+
default: 5
|
63
|
+
|
64
|
+
def request(path)
|
65
|
+
protocol = config[:ssl] ? 'https' : 'http'
|
66
|
+
auth = Base64.encode64("#{config[:user]}:#{config[:pass]}")
|
67
|
+
RestClient::Request.execute(
|
68
|
+
method: :get,
|
69
|
+
url: "#{protocol}://#{config[:host]}:#{config[:port]}/#{path}",
|
70
|
+
timeout: config[:timeout],
|
71
|
+
headers: { 'Authorization' => "Basic #{auth}" }
|
72
|
+
)
|
73
|
+
end
|
74
|
+
|
75
|
+
def run
|
76
|
+
r = request('/api/v1/cluster/summary')
|
77
|
+
|
78
|
+
if r.code != 200
|
79
|
+
critical "unexpected status code '#{r.code}'"
|
80
|
+
end
|
81
|
+
|
82
|
+
cluster = JSON.parse(r.to_str)
|
83
|
+
workers = cluster['supervisors'].to_i
|
84
|
+
|
85
|
+
if workers < config[:crit]
|
86
|
+
critical "worker count #{workers} is below allowed minimum of #{config[:crit]}"
|
87
|
+
elsif workers < config[:warn]
|
88
|
+
warning "worker count #{workers} is below warn threshold of #{config[:warn]}"
|
89
|
+
end
|
90
|
+
|
91
|
+
ok 'worker count OK'
|
92
|
+
|
93
|
+
rescue Errno::ECONNREFUSED => e
|
94
|
+
critical 'Storm is not responding' + e.message
|
95
|
+
rescue RestClient::RequestTimeout
|
96
|
+
critical 'Storm Connection timed out'
|
97
|
+
rescue StandardError => e
|
98
|
+
unknown 'An exception occurred:' + e.message
|
99
|
+
end
|
100
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-storm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Royle
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -169,12 +169,14 @@ email: <ajroyle@gmail.com>
|
|
169
169
|
executables:
|
170
170
|
- check-storm-capacity.rb
|
171
171
|
- check-storm-topologies.rb
|
172
|
+
- check-storm-workers.rb
|
172
173
|
- metrics-storm-topologies.rb
|
173
174
|
extensions: []
|
174
175
|
extra_rdoc_files: []
|
175
176
|
files:
|
176
177
|
- bin/check-storm-capacity.rb
|
177
178
|
- bin/check-storm-topologies.rb
|
179
|
+
- bin/check-storm-workers.rb
|
178
180
|
- bin/metrics-storm-topologies.rb
|
179
181
|
- lib/sensu-plugins-storm/version.rb
|
180
182
|
- lib/sensu-plugins-storm.rb
|
@@ -207,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
207
209
|
version: '0'
|
208
210
|
requirements: []
|
209
211
|
rubyforge_project:
|
210
|
-
rubygems_version: 2.0.14
|
212
|
+
rubygems_version: 2.0.14.1
|
211
213
|
signing_key:
|
212
214
|
specification_version: 4
|
213
215
|
summary: Sensu plugins for Storm
|