sensu-plugins-dcos 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b07e00cbbba8b726ebd7aef16ff59da98517bdfe
4
- data.tar.gz: c2d1fa502fc69c22464c9d59d100a6f60fc09b0e
3
+ metadata.gz: d59fc68efa3e25906528db2a05013a96efe3e07d
4
+ data.tar.gz: 0478823b7d1a93b33b0adcb723816ae053dd169f
5
5
  SHA512:
6
- metadata.gz: 5760499822fb6da7832c649e1cb45083dc5b09fdbaf69cd1ba59a54fe25cb2cbe4017d08d9d2f770c82e2e4c90a34252dc6be9c8751aadae00c004602cf149d8
7
- data.tar.gz: f4ead4df235c4ee7bd4e23e99eeb44fbefdc82150fbffa0d744b397c0f61f64b3e21e2a782ac2161e4672d03bfaeab12231d50dbf968c214ed13504b868631ec
6
+ metadata.gz: 8f731f5374cc18cfc8ee963223aa3dea6cc200cd7099727750f58e3476067f712bf98b83850f00f97eae3c3715c1685544d32c593402d7a6323d91ccaca56546
7
+ data.tar.gz: 3cdf8e82100867b083729130c8205acf232b30a17db46d539281681834645b9d61b6146eed4445c859b439da0486978d0e7f6b30402312d04a3e5b2fc5fc4cba
@@ -4,13 +4,17 @@ This project adheres to [Semantic Versioning](http://semver.org/).
4
4
  This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
5
5
 
6
6
  ## [Unreleased]
7
- ### Changed
8
- - standard rake, travis, CHANGELOG, and rubocop files.
9
7
 
8
+ ## [0.0.2] - 2017-08-03
9
+ ### Added
10
+ - New DC/OS Component Health check
11
+ - Extending get_value function to provide the ability to override field names
10
12
  ## [0.0.1] - 2017-04-18
11
13
 
12
14
  ### Added
13
15
  - Initial release
14
16
 
15
- [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-dcos/compare/0.0.1...HEAD
16
- [0.0.1]: https://github.com/sensu-plugins/sensu-plugins-dcos/compare/9c72afb596622f6c1a51f95281f52bd53791ede9...0.0.1
17
+
18
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-dcos/compare/0.0.2...HEAD
19
+ [0.0.2]: https://github.com/sensu-plugins/sensu-plugins-dcos/compare/0.0.1...0.0.2
20
+ [0.0.1]:https://github.com/sensu-plugins/sensu-plugins-dcos/compare/9c72afb596622f6c1a51f95281f52bd53791ede9...0.0.1
data/README.md CHANGED
@@ -14,6 +14,7 @@
14
14
  * bin/check-dcos-container-count.rb
15
15
  * bin/check-dcos-metrics.rb
16
16
  * bin/check-dcos-ping.rb
17
+ * bin/check-dcos-component-health.rb
17
18
 
18
19
  ## Usage
19
20
 
@@ -0,0 +1,95 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-dcos-component-health
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin checks the health of a DC/OS components exposed by the system/health/v1/units API endpoint
7
+ #
8
+ # OUTPUT:
9
+ # Plain text
10
+ #
11
+ # PLATFORMS:
12
+ # Linux
13
+ #
14
+ # DEPENDENCIES:
15
+ # gem: sensu-plugin
16
+ #
17
+ # USAGE:
18
+ # check-dcos-component-health.rb -u 'http://127.0.0.1:1050/system/health/v1/units' -c 'exhibitor.service'
19
+ #
20
+ # You can also run an ultimate health report to see if there are nay filing units::
21
+ # check-dcos-component-health.rb -u 'http://127.0.0.1:1050/system/health/v1/units'
22
+ #
23
+ # NOTES:
24
+ #
25
+ # LICENCE:
26
+ # PTC http://www.ptc.com/
27
+ # Copyright 2017 PTC Inc.
28
+ #
29
+ # Licensed under the Apache License, Version 2.0 (the "License");
30
+ # you may not use this file except in compliance with the License.
31
+ # You may obtain a copy of the License at
32
+ #
33
+ # http://www.apache.org/licenses/LICENSE-2.0
34
+ #
35
+ # Unless required by applicable law or agreed to in writing, software
36
+ # distributed under the License is distributed on an "AS IS" BASIS,
37
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
38
+ # See the License for the specific language governing permissions and
39
+ # limitations under the License.
40
+
41
+ require 'sensu-plugin/check/cli'
42
+ require 'json'
43
+ require 'net/http'
44
+ require 'uri'
45
+ require 'sensu-plugins-dcos'
46
+
47
+ #
48
+ # Check DCOS System Health API
49
+ #
50
+
51
+ class CheckDcosComponentHealth < Sensu::Plugin::Check::CLI
52
+ include Common
53
+
54
+ option :url,
55
+ description: 'URL',
56
+ short: '-u URL',
57
+ long: '--url URL',
58
+ default: 'http://127.0.0.1:1050/system/health/v1/units'
59
+
60
+ option :component,
61
+ description: 'Component ID',
62
+ short: '-c COMPONENT',
63
+ long: '--component COMPONENT',
64
+ default: nil
65
+
66
+ option :filter,
67
+ description: 'Filter by Tags',
68
+ short: '-f TAG_NAME:TAG_VALUE',
69
+ long: '--filter TAG_NAME:TAG_VALUE',
70
+ default: nil
71
+
72
+ def run
73
+ if config[:component]
74
+ value = get_value(config[:url], config[:component], config[:filter], 'id', 'health', 'units')
75
+ message "#{config[:component]} = #{value}"
76
+ if value == 0
77
+ ok
78
+ else
79
+ critical
80
+ end
81
+ else
82
+ failed = 0
83
+ resource = get_data(config[:url])
84
+ resource['units'].each do |unit|
85
+ failed += unit['health']
86
+ end
87
+ message "components.unhealthy = #{failed}"
88
+ if failed == 0
89
+ ok
90
+ else
91
+ critical
92
+ end
93
+ end
94
+ end
95
+ end
@@ -32,15 +32,15 @@ module Common
32
32
  critical 'Invalid JSON'
33
33
  end
34
34
 
35
- def get_value(url, metric, filter)
35
+ def get_value(url, metric, filter, name_field = 'name', value_field = 'value', root_field = 'datapoints') # rubocop:disable Metrics/ParameterLists
36
36
  resource = get_data(url)
37
37
  return {} if resource.nil? || resource.empty?
38
38
  if filter
39
39
  filter = filter.split(':')
40
- value = resource['datapoints'].select { |data| data['tags'] == { filter[0] => filter[1] } }
41
- value.select { |data| data['name'] == metric }.first['value']
40
+ value = resource[root_field].select { |data| data['tags'] == { filter[0] => filter[1] } }
41
+ value.select { |data| data[name_field] == metric }.first[value_field]
42
42
  else
43
- resource['datapoints'].select { |data| data['name'] == metric }.first['value']
43
+ resource[root_field].select { |data| data[name_field] == metric }.first[value_field]
44
44
  end
45
45
  end
46
46
  end
@@ -2,7 +2,7 @@ module SensuPluginsDcos
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- PATCH = 1
5
+ PATCH = 2
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-dcos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - PTC and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-18 00:00:00.000000000 Z
11
+ date: 2017-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-plugin
@@ -239,6 +239,7 @@ description: |-
239
239
  for monitoring and metrics collection.
240
240
  email: "<sensu-users@googlegroups.com>"
241
241
  executables:
242
+ - check-dcos-component-health.rb
242
243
  - check-dcos-container-count.rb
243
244
  - check-dcos-ping.rb
244
245
  - check-dcos-metrics.rb
@@ -251,6 +252,7 @@ files:
251
252
  - CHANGELOG.md
252
253
  - LICENSE
253
254
  - README.md
255
+ - bin/check-dcos-component-health.rb
254
256
  - bin/check-dcos-container-count.rb
255
257
  - bin/check-dcos-container-metrics.rb
256
258
  - bin/check-dcos-metrics.rb