sensu-plugins-spark 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 24774fa2ca4275addf3535d37a012ba354c2c93a
4
+ data.tar.gz: 1e859e2705656c2ad58c8c9173a8c172af690514
5
+ SHA512:
6
+ metadata.gz: 4729254f1e2c6eb5433ef02bfc7fa1006c179f2f751421a492149a45c51464c186f049515e1f91939335a85b57f721358d4678ac353f16f9b7c0882482456270
7
+ data.tar.gz: 1b7665f1bf6350b719d842f8e856c0b84e26ea2acaea549730c2572800ff92880019054066f21e3669aa504b78116b1173f65669aa9129c90e6e5b79804d614c
@@ -0,0 +1,13 @@
1
+ # Change Log
2
+ This project adheres to [Semantic Versioning](http://semver.org/).
3
+
4
+ This CHANGELOG follows the format located [here](https://github.com/sensu-plugins/community/blob/master/HOW_WE_CHANGELOG.md)
5
+
6
+ ## [Unreleased]
7
+
8
+ ### Added
9
+ - metrics-spark.rb: collect metrics from spark (@yuri-zubov)
10
+ - check-spark-health.rb: monitor spark health (@yuri-zubov)
11
+
12
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-spark/compare/0.0.1...HEAD
13
+ [0.0.1]: https://github.com/sensu-plugins/sensu-plugins-spark/compare/38e42bdd81d4bc1967e479538b632a60904b1cc0...0.0.1
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Sensu Community Plugins
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
@@ -0,0 +1,17 @@
1
+ ## Sensu-Plugins-skel
2
+
3
+ [![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-skel.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-skel)
4
+ [![Gem Version](https://badge.fury.io/rb/sensu-plugins-skel.svg)](http://badge.fury.io/rb/sensu-plugins-skel)
5
+ [![Dependency Status](https://gemnasium.com/sensu-plugins/sensu-plugins-skel.svg)](https://gemnasium.com/sensu-plugins/sensu-plugins-skel)
6
+
7
+ ## Functionality
8
+
9
+ ## Files
10
+
11
+ ## Usage
12
+
13
+ ## Installation
14
+
15
+ [Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
16
+
17
+ ## Notes
@@ -0,0 +1,59 @@
1
+ require 'sensu-plugin/check/cli'
2
+ require 'rest-client'
3
+ require 'json'
4
+ require 'sensu-plugins-spark'
5
+
6
+ class CheckSparkHealth < Sensu::Plugin::Check::CLI
7
+ include SensuPluginsSpark::SparkCommon
8
+
9
+ option :endpoint,
10
+ short: '-p ENDPOINT',
11
+ long: '--endpoint ENDPOINT',
12
+ description: 'Spark Endpoint',
13
+ default: 'http://localhost:8080/json'
14
+
15
+ option :number,
16
+ short: '-n NUMBER',
17
+ long: '--number NUMBER',
18
+ proc: proc(&:to_i),
19
+ description: 'Spark Workers number'
20
+
21
+ option :apps_number,
22
+ short: '-A NUMBER',
23
+ long: '--apps_number NUMBER',
24
+ proc: proc(&:to_i),
25
+ description: 'Spark Apps number'
26
+
27
+ option :expecting_status,
28
+ short: '-s STATUS',
29
+ long: '--status STATUS',
30
+ description: 'Expecting spark status',
31
+ in: ['ALIVE', 'STANDBY'],
32
+ default: 'ALIVE'
33
+
34
+ def check_health
35
+ response = request
36
+
37
+ JSON.parse(response)
38
+ end
39
+
40
+ def run
41
+ check = check_health
42
+ workers_number = check['workers'].size
43
+ apps_number = check['activeapps'].size
44
+
45
+ if check['status'] == config[:expecting_status]
46
+ if (config[:number] && config[:number] == workers_number) || config[:number].nil?
47
+ if (config[:apps_number] && config[:apps_number] == apps_number) || config[:apps_number].nil?
48
+ ok "CheckSparkHealth is ok"
49
+ else
50
+ critical "CheckSparkHealth found #{apps_number} apps instead of #{config[:apps_number]}"
51
+ end
52
+ else
53
+ critical "CheckSparkHealth found #{workers_number} workers instead of #{config[:number]}"
54
+ end
55
+ else
56
+ critical "CheckSparkHealth has status #{check['status']}"
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,41 @@
1
+ require 'sensu-plugin/metric/cli'
2
+ require 'rest-client'
3
+ require 'json'
4
+ require 'sensu-plugins-spark'
5
+
6
+ class MetricsSpark < Sensu::Plugin::Metric::CLI::Graphite
7
+ include SensuPluginsSpark::SparkCommon
8
+
9
+ option :endpoint,
10
+ short: '-p ENDPOINT',
11
+ long: '--endpoint ENDPOINT',
12
+ description: 'Spark Endpoint',
13
+ default: 'http://localhost:8080/metrics/master/json/'
14
+
15
+ option :scheme,
16
+ description: 'Metric naming scheme, text to prepend to metric',
17
+ short: '-S SCHEME',
18
+ long: '--scheme SCHEME',
19
+ default: "#{Socket.gethostname}.spark"
20
+
21
+ def metrics
22
+ response = request
23
+
24
+ ::JSON.parse(response)
25
+ end
26
+
27
+ def print_metrics(h, path='')
28
+ h.each do |key,val|
29
+ if val.is_a? Hash
30
+ print_metrics(val,"#{[path,key].join('.')}")
31
+ else
32
+ output "#{config[:scheme]}#{path}.#{key}", val
33
+ end
34
+ end
35
+ end
36
+
37
+ def run
38
+ print_metrics(metrics)
39
+ ok
40
+ end
41
+ end
@@ -0,0 +1,2 @@
1
+ require 'sensu-plugins-spark/version'
2
+ require 'sensu-plugins-spark/spark_common'
@@ -0,0 +1,10 @@
1
+ module SensuPluginsSpark
2
+ module SparkCommon
3
+ def request
4
+ RestClient::Request.execute(
5
+ method: :get,
6
+ url: config[:endpoint]
7
+ )
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ module SensuPluginsSpark
2
+ module Version
3
+ MAJOR = 0
4
+ MINOR = 0
5
+ PATCH = 1
6
+
7
+ VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,275 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sensu-plugins-spark
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Sensu-Plugins and contributors
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-05-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sensu-plugin
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rest-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.15'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.15'
55
+ - !ruby/object:Gem::Dependency
56
+ name: github-markup
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: kitchen-docker
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.6'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.6'
83
+ - !ruby/object:Gem::Dependency
84
+ name: kitchen-localhost
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: mixlib-shellout
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "<"
102
+ - !ruby/object:Gem::Version
103
+ version: 2.3.0
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: '2.2'
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "<"
112
+ - !ruby/object:Gem::Version
113
+ version: 2.3.0
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '2.2'
117
+ - !ruby/object:Gem::Dependency
118
+ name: pry
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.10'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '0.10'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rake
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '12.0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '12.0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: redcarpet
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '3.2'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '3.2'
159
+ - !ruby/object:Gem::Dependency
160
+ name: rspec
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '3.4'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '3.4'
173
+ - !ruby/object:Gem::Dependency
174
+ name: rubocop
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: 0.49.0
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: 0.49.0
187
+ - !ruby/object:Gem::Dependency
188
+ name: serverspec
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: 2.36.1
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: 2.36.1
201
+ - !ruby/object:Gem::Dependency
202
+ name: test-kitchen
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '1.6'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '1.6'
215
+ - !ruby/object:Gem::Dependency
216
+ name: yard
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: 0.9.11
222
+ type: :development
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: 0.9.11
229
+ description: Sensu spark plugins
230
+ email: "<sensu-users@googlegroups.com>"
231
+ executables:
232
+ - metrics-spark.rb
233
+ - check-spark-health.rb
234
+ extensions: []
235
+ extra_rdoc_files: []
236
+ files:
237
+ - CHANGELOG.md
238
+ - LICENSE
239
+ - README.md
240
+ - bin/check-spark-health.rb
241
+ - bin/metrics-spark.rb
242
+ - lib/sensu-plugins-spark.rb
243
+ - lib/sensu-plugins-spark/spark_common.rb
244
+ - lib/sensu-plugins-spark/version.rb
245
+ homepage: https://github.com/sensu-plugins/sensu-plugins-spark
246
+ licenses:
247
+ - MIT
248
+ metadata:
249
+ maintainer: sensu-plugin
250
+ development_status: active
251
+ production_status: unstable - testing recommended
252
+ release_draft: 'false'
253
+ release_prerelease: 'false'
254
+ post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
255
+ in /etc/default/sensu
256
+ rdoc_options: []
257
+ require_paths:
258
+ - lib
259
+ required_ruby_version: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: 2.1.0
264
+ required_rubygems_version: !ruby/object:Gem::Requirement
265
+ requirements:
266
+ - - ">="
267
+ - !ruby/object:Gem::Version
268
+ version: '0'
269
+ requirements: []
270
+ rubyforge_project:
271
+ rubygems_version: 2.6.11
272
+ signing_key:
273
+ specification_version: 4
274
+ summary: Sensu plugins for spark
275
+ test_files: []