sensu-plugins-dcos 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b07e00cbbba8b726ebd7aef16ff59da98517bdfe
4
+ data.tar.gz: c2d1fa502fc69c22464c9d59d100a6f60fc09b0e
5
+ SHA512:
6
+ metadata.gz: 5760499822fb6da7832c649e1cb45083dc5b09fdbaf69cd1ba59a54fe25cb2cbe4017d08d9d2f770c82e2e4c90a34252dc6be9c8751aadae00c004602cf149d8
7
+ data.tar.gz: f4ead4df235c4ee7bd4e23e99eeb44fbefdc82150fbffa0d744b397c0f61f64b3e21e2a782ac2161e4672d03bfaeab12231d50dbf968c214ed13504b868631ec
data/CHANGELOG.md ADDED
@@ -0,0 +1,16 @@
1
+ # Change Log
2
+ This project adheres to [Semantic Versioning](http://semver.org/).
3
+
4
+ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
5
+
6
+ ## [Unreleased]
7
+ ### Changed
8
+ - standard rake, travis, CHANGELOG, and rubocop files.
9
+
10
+ ## [0.0.1] - 2017-04-18
11
+
12
+ ### Added
13
+ - Initial release
14
+
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
data/LICENSE ADDED
@@ -0,0 +1,202 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
202
+
data/README.md ADDED
@@ -0,0 +1,80 @@
1
+ ## sensu-plugins-dcos
2
+
3
+ [![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-dcos.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-dcos)
4
+ [![Gem Version](https://badge.fury.io/rb/sensu-plugins-dcos.svg)](http://badge.fury.io/rb/sensu-plugins-dcos)
5
+ [![Code Climate](https://codeclimate.com/github/sensu-plugins/sensu-plugins-dcos/badges/gpa.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-dcos)
6
+ [![Test Coverage](https://codeclimate.com/github/sensu-plugins/sensu-plugins-dcos/badges/coverage.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-dcos)
7
+ [![Dependency Status](https://gemnasium.com/sensu-plugins/sensu-plugins-dcos.svg)](https://gemnasium.com/sensu-plugins/sensu-plugins-dcos)
8
+
9
+ ## Functionality
10
+
11
+ ## Files
12
+ * bin/check-dcos-metrics.rb
13
+ * check-dcos-container-metrics.rb
14
+ * bin/check-dcos-container-count.rb
15
+ * bin/check-dcos-metrics.rb
16
+ * bin/check-dcos-ping.rb
17
+
18
+ ## Usage
19
+
20
+ ### Checking Metrics
21
+
22
+ The following example checks that the count of running processes is between 150 and 300
23
+ * a warning message will be triggered if the count is below 150 or above 300
24
+ * a critical message will be triggered if the count is below 100 or above 350
25
+
26
+ ```
27
+ check-dcos-metrics.rb -u 'http://127.0.0.1:61001/system/v1/metrics/v0/node' -m 'process.count' -w 150 -c 100 -W 300 -C 350
28
+ ```
29
+
30
+ In some cases the metric name is not unique but you can filter metrics by tags using the `--filter` option followed by `TAG_NAME:TAG_VALUE`
31
+ You can also check deltas, if you pass the `-d` option the plugin will keep the previous value in a daybreak db and compare the new value against it.
32
+ ```
33
+ check-dcos-metrics.rb -m 'network.in.errors' -d -f interface:docker0 -C 2 -W 1
34
+ ```
35
+
36
+ Run `check-dcos-me.rb -h` for all the options.
37
+
38
+ #### Check configuration example:
39
+
40
+ This is an example how to use this plugin to ship metrics to InfluxDB using the [sensu-extensions-influxdb](https://github.com/sensu-extensions/sensu-extensions-influxdb) extension:
41
+ ```
42
+ {
43
+ "checks": {
44
+ "dcos-host-metrics": {
45
+ "type": "metric",
46
+ "command": "/opt/sensu/embedded/bin/metrics-dcos-host.rb",
47
+ "influxdb": {
48
+ "templates": {
49
+ "dcos\\..*\\.filesystem\\.": "source.type.measurement.field2.nil.nil.path*",
50
+ "dcos\\..*\\.network\\.": "source.type.measurement.field2.nil.nil.interface*",
51
+ "dcos\\.": "source.type.measurement.field*"
52
+ },
53
+ "tags": {
54
+ "group": "node"
55
+ }
56
+ }
57
+ }
58
+ }
59
+ ```
60
+
61
+ ### Host Health Check
62
+
63
+ The `check-dcos-ping.rb` will return `OK` if the host reports itself as heathy or `CRITICAL` otherwize
64
+ ```
65
+ check-dcos-ping.rb -h 'http://127.0.0.1:61001/system/v1/metrics/v0/ping'
66
+ ```
67
+
68
+ ## Installation
69
+
70
+ [Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
71
+
72
+ ## Build
73
+ ```
74
+ bundle install
75
+ bundle exec rake
76
+ bundle exec rake build
77
+ ```
78
+ You'll find the gem in the `/pkg/` folder
79
+
80
+ ## Notes
@@ -0,0 +1,109 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-dcos-metrics
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin checks the number of containers exposed by the dcos-metrics API
7
+ #
8
+ # OUTPUT:
9
+ # Plain text
10
+ #
11
+ # PLATFORMS:
12
+ # Linux
13
+ #
14
+ # DEPENDENCIES:
15
+ # gem: sensu-plugin
16
+ #
17
+ # USAGE:
18
+ # This example checks that the count of running processes is between 150 and 300
19
+ # check-dcos-metrics.rb -u 'http://127.0.0.1:61001/system/v1/metrics/v0/containers' -w 150 -c 100 -W 300 -C 350
20
+ #
21
+ # NOTES:
22
+ #
23
+ # LICENCE:
24
+ # PTC http://www.ptc.com/
25
+ # Copyright 2017 PTC Inc.
26
+ #
27
+ # Licensed under the Apache License, Version 2.0 (the "License");
28
+ # you may not use this file except in compliance with the License.
29
+ # You may obtain a copy of the License at
30
+ #
31
+ # http://www.apache.org/licenses/LICENSE-2.0
32
+ #
33
+ # Unless required by applicable law or agreed to in writing, software
34
+ # distributed under the License is distributed on an "AS IS" BASIS,
35
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
36
+ # See the License for the specific language governing permissions and
37
+ # limitations under the License.
38
+
39
+ require 'sensu-plugin/check/cli'
40
+ require 'json'
41
+ require 'net/http'
42
+ require 'uri'
43
+ require 'sensu-plugins-dcos'
44
+
45
+ #
46
+ # Check DCOS API
47
+ #
48
+
49
+ class CheckDcosContainerCount < Sensu::Plugin::Check::CLI
50
+ include Common
51
+
52
+ option :url,
53
+ description: 'URL',
54
+ short: '-u URL',
55
+ long: '--url URL',
56
+ default: 'http://127.0.0.1:61001/system/v1/metrics/v0/containers'
57
+
58
+ option :metric,
59
+ description: 'Metric Name',
60
+ short: '-m METRIC',
61
+ long: '--metric METRIC',
62
+ default: 'foo'
63
+
64
+ option :filter,
65
+ description: 'Filter by Tags',
66
+ short: '-f TAG_NAME:TAG_VALUE',
67
+ long: '--filter TAG_NAME:TAG_VALUE',
68
+ default: nil
69
+
70
+ option :warnhigh,
71
+ short: '-W N',
72
+ long: '--warnhigh N',
73
+ description: 'WARNING HIGH threshold',
74
+ proc: proc(&:to_i),
75
+ default: 5000
76
+
77
+ option :crithigh,
78
+ short: '-C N',
79
+ long: '--crithigh N',
80
+ description: 'CRITICAL HIGH threshold',
81
+ proc: proc(&:to_i),
82
+ default: 9000
83
+
84
+ option :warnlow,
85
+ short: '-w N',
86
+ long: '--warnlow N',
87
+ description: 'WARNING LOW threshold',
88
+ proc: proc(&:to_i),
89
+ default: -1
90
+
91
+ option :critlow,
92
+ short: '-c N',
93
+ long: '--critlow N',
94
+ description: 'CRITICAL LOW threshold',
95
+ proc: proc(&:to_i),
96
+ default: -1
97
+
98
+ def run
99
+ value = get_data(config[:url]).length
100
+ message "container.count = #{value}"
101
+ if value >= config[:crithigh] || value <= config[:critlow]
102
+ critical
103
+ elsif value >= config[:warnhigh] || value <= config[:warnlow]
104
+ warning
105
+ else
106
+ ok
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,156 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-dcos-metrics
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin checks the value of a metric exposed by the dcos-metrics API across all running containers
7
+ #
8
+ # OUTPUT:
9
+ # Plain text
10
+ #
11
+ # PLATFORMS:
12
+ # Linux
13
+ #
14
+ # DEPENDENCIES:
15
+ # gem: sensu-plugin
16
+ #
17
+ # USAGE:
18
+ # This example checks if the container is being throttled
19
+ # check-dcos-container-metrics.rb -m 'cpus.throttled.time' -W 10 -C 20
20
+ #
21
+ # NOTES:
22
+ # TODO: investigate https://github.com/thirtysixthspan/descriptive_statistics to have more options for mode
23
+ #
24
+ # LICENCE:
25
+ # PTC http://www.ptc.com/
26
+ # Copyright 2017 PTC Inc.
27
+ #
28
+ # Licensed under the Apache License, Version 2.0 (the "License");
29
+ # you may not use this file except in compliance with the License.
30
+ # You may obtain a copy of the License at
31
+ #
32
+ # http://www.apache.org/licenses/LICENSE-2.0
33
+ #
34
+ # Unless required by applicable law or agreed to in writing, software
35
+ # distributed under the License is distributed on an "AS IS" BASIS,
36
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
37
+ # See the License for the specific language governing permissions and
38
+ # limitations under the License.
39
+
40
+ require 'sensu-plugin/check/cli'
41
+ require 'json'
42
+ require 'net/http'
43
+ require 'uri'
44
+ require 'daybreak'
45
+ require 'sensu-plugins-dcos'
46
+
47
+ #
48
+ # Check DCOS API
49
+ #
50
+
51
+ class CheckDcosContainersApi < 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:61001/system/v1/metrics/v0/containers'
59
+
60
+ option :metric,
61
+ description: 'Metric Name',
62
+ short: '-m METRIC',
63
+ long: '--metric METRIC',
64
+ default: 'foo'
65
+
66
+ option :mode,
67
+ description: 'min max or avg',
68
+ short: '-M MODE',
69
+ long: '--mode MODE',
70
+ default: 'avg'
71
+
72
+ option :filter,
73
+ description: 'Filter by Tags',
74
+ short: '-f TAG_NAME:TAG_VALUE',
75
+ long: '--filter TAG_NAME:TAG_VALUE',
76
+ default: nil
77
+
78
+ option :warnhigh,
79
+ short: '-W N',
80
+ long: '--warnhigh N',
81
+ description: 'WARNING HIGH threshold',
82
+ proc: proc(&:to_i),
83
+ default: 5000
84
+
85
+ option :crithigh,
86
+ short: '-C N',
87
+ long: '--crithigh N',
88
+ description: 'CRITICAL HIGH threshold',
89
+ proc: proc(&:to_i),
90
+ default: 9000
91
+
92
+ option :warnlow,
93
+ short: '-w N',
94
+ long: '--warnlow N',
95
+ description: 'WARNING LOW threshold',
96
+ proc: proc(&:to_i),
97
+ default: -1
98
+
99
+ option :critlow,
100
+ short: '-c N',
101
+ long: '--critlow N',
102
+ description: 'CRITICAL LOW threshold',
103
+ proc: proc(&:to_i),
104
+ default: -1
105
+
106
+ option :delta,
107
+ short: '-d',
108
+ long: '--delta',
109
+ description: 'Use this flag to compare the metric with the previously retreived value',
110
+ boolean: true
111
+
112
+ def run
113
+ mode = config[:mode]
114
+ value = ['all containers', -1]
115
+ data = {}
116
+ if config[:delta]
117
+ db = Daybreak::DB.new '/tmp/dcos-metrics.db', default: 0
118
+ end
119
+ containers = get_data(config[:url])
120
+ containers.each do |container|
121
+ v = get_value("#{config[:url]}/#{container}", config[:metric], config[:filter])
122
+ if config[:delta]
123
+ prev_value = db["#{container}_#{config[:metric]}"]
124
+ db.lock do
125
+ db["#{container}_#{config[:metric]}"] = v
126
+ end
127
+ v -= prev_value
128
+ end
129
+ data[container] = v
130
+ end unless containers.nil? || containers.empty?
131
+ if config[:delta]
132
+ db.flush
133
+ db.compact
134
+ db.close
135
+ end
136
+ if data.empty?
137
+ ok 'No containers found'
138
+ end
139
+ case mode
140
+ when 'min'
141
+ value = data.min_by { |_k, v| v }
142
+ when 'max'
143
+ value = data.max_by { |_k, v| v }
144
+ when 'avg'
145
+ value[1] = data.values.inject(:+).to_f / data.length
146
+ end
147
+ message "#{mode} #{config[:metric]} = #{value[1]} on #{value[0]}"
148
+ if value[1] >= config[:crithigh] || value[1] <= config[:critlow]
149
+ critical
150
+ elsif value[1] >= config[:warnhigh] || value[1] <= config[:warnlow]
151
+ warning
152
+ else
153
+ ok
154
+ end
155
+ end
156
+ end
@@ -0,0 +1,133 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-dcos-metrics
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin checks the value of a metric exposed by the dcos-metrics API
7
+ #
8
+ # OUTPUT:
9
+ # Plain text
10
+ #
11
+ # PLATFORMS:
12
+ # Linux
13
+ #
14
+ # DEPENDENCIES:
15
+ # gem: sensu-plugin
16
+ #
17
+ # USAGE:
18
+ # This example checks that the count of running processes is between 150 and 300
19
+ # a warning message will be triggered if the count is below 150 or above 300
20
+ # a critical message will be triggered if the count is below 100 or above 350
21
+ # check-dcos-metrics.rb -u 'http://127.0.0.1:61001/system/v1/metrics/v0/node' -m 'process.count' -w 150 -c
22
+ # 100 -W 300 -C 350
23
+ #
24
+ # You can also filter metrics by tags using the --filter option followed by TAG_NAME:TAG_VALUE
25
+ # check-dcos-metrics.rb -m 'network.in.errors' -f interface:docker0 -C 2 -W 1
26
+ #
27
+ # NOTES:
28
+ #
29
+ # LICENCE:
30
+ # PTC http://www.ptc.com/
31
+ # Copyright 2017 PTC Inc.
32
+ #
33
+ # Licensed under the Apache License, Version 2.0 (the "License");
34
+ # you may not use this file except in compliance with the License.
35
+ # You may obtain a copy of the License at
36
+ #
37
+ # http://www.apache.org/licenses/LICENSE-2.0
38
+ #
39
+ # Unless required by applicable law or agreed to in writing, software
40
+ # distributed under the License is distributed on an "AS IS" BASIS,
41
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
42
+ # See the License for the specific language governing permissions and
43
+ # limitations under the License.
44
+
45
+ require 'sensu-plugin/check/cli'
46
+ require 'json'
47
+ require 'net/http'
48
+ require 'uri'
49
+ require 'daybreak'
50
+ require 'sensu-plugins-dcos'
51
+
52
+ #
53
+ # Check DCOS API
54
+ #
55
+
56
+ class CheckDcosApi < Sensu::Plugin::Check::CLI
57
+ include Common
58
+
59
+ option :url,
60
+ description: 'URL',
61
+ short: '-u URL',
62
+ long: '--url URL',
63
+ default: 'http://127.0.0.1:61001/system/v1/metrics/v0/node'
64
+
65
+ option :metric,
66
+ description: 'Metric Name',
67
+ short: '-m METRIC',
68
+ long: '--metric METRIC',
69
+ default: 'foo'
70
+
71
+ option :filter,
72
+ description: 'Filter by Tags',
73
+ short: '-f TAG_NAME:TAG_VALUE',
74
+ long: '--filter TAG_NAME:TAG_VALUE',
75
+ default: nil
76
+
77
+ option :warnhigh,
78
+ short: '-W N',
79
+ long: '--warnhigh N',
80
+ description: 'WARNING HIGH threshold',
81
+ proc: proc(&:to_i),
82
+ default: 5000
83
+
84
+ option :crithigh,
85
+ short: '-C N',
86
+ long: '--crithigh N',
87
+ description: 'CRITICAL HIGH threshold',
88
+ proc: proc(&:to_i),
89
+ default: 9000
90
+
91
+ option :warnlow,
92
+ short: '-w N',
93
+ long: '--warnlow N',
94
+ description: 'WARNING LOW threshold',
95
+ proc: proc(&:to_i),
96
+ default: -1
97
+
98
+ option :critlow,
99
+ short: '-c N',
100
+ long: '--critlow N',
101
+ description: 'CRITICAL LOW threshold',
102
+ proc: proc(&:to_i),
103
+ default: -1
104
+
105
+ option :delta,
106
+ short: '-d',
107
+ long: '--delta',
108
+ description: 'Use this flag to compare the metric with the previously retreived value',
109
+ boolean: true
110
+
111
+ def run
112
+ value = get_value(config[:url], config[:metric], config[:filter])
113
+ if config[:delta]
114
+ db = Daybreak::DB.new '/tmp/dcos-metrics.db', default: 0
115
+ prev_value = db["node_#{config[:metric]}"]
116
+ db.lock do
117
+ db["node_#{config[:metric]}"] = value
118
+ end
119
+ value -= prev_value
120
+ db.flush
121
+ db.compact
122
+ db.close
123
+ end
124
+ message "#{config[:metric]} = #{value}"
125
+ if value >= config[:crithigh] || value <= config[:critlow]
126
+ critical
127
+ elsif value >= config[:warnhigh] || value <= config[:warnlow]
128
+ warning
129
+ else
130
+ ok
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,67 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-dcos-ping
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin checks the status of a DCOS host using the /ping entrypoint from the dcos-metrics API
7
+ #
8
+ # OUTPUT:
9
+ # Plain text
10
+ #
11
+ # PLATFORMS:
12
+ # Linux
13
+ #
14
+ # DEPENDENCIES:
15
+ # gem: sensu-plugin
16
+ #
17
+ # USAGE:
18
+ # This example checks if the host is reporting himself as healthy
19
+ # check-dcos-ping.rb -u 'http://127.0.0.1:61001/system/v1/metrics/v0/ping'
20
+ #
21
+ # NOTES:
22
+ #
23
+ # LICENCE:
24
+ # PTC http://www.ptc.com/
25
+ # Copyright 2017 PTC Inc.
26
+ #
27
+ # Licensed under the Apache License, Version 2.0 (the "License");
28
+ # you may not use this file except in compliance with the License.
29
+ # You may obtain a copy of the License at
30
+ #
31
+ # http://www.apache.org/licenses/LICENSE-2.0
32
+ #
33
+ # Unless required by applicable law or agreed to in writing, software
34
+ # distributed under the License is distributed on an "AS IS" BASIS,
35
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
36
+ # See the License for the specific language governing permissions and
37
+ # limitations under the License.
38
+
39
+ require 'sensu-plugin/check/cli'
40
+ require 'json'
41
+ require 'net/http'
42
+ require 'uri'
43
+ require 'sensu-plugins-dcos'
44
+
45
+ #
46
+ # Check DCOS API
47
+ #
48
+
49
+ class CheckDcosPing < Sensu::Plugin::Check::CLI
50
+ include Common
51
+
52
+ option :url,
53
+ description: 'URL',
54
+ short: '-u URL',
55
+ long: '--url URL',
56
+ default: 'http://127.0.0.1:61001/system/v1/metrics/v0/ping'
57
+
58
+ def run
59
+ value = get_data(config[:url])['ok']
60
+ message "OK = #{value}"
61
+ if value === true
62
+ ok
63
+ else
64
+ critical
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,103 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # dcos-metrics
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin extracts the container metrics from a dcos server
7
+ #
8
+ # OUTPUT:
9
+ # metric data
10
+ #
11
+ # PLATFORMS:
12
+ # Linux
13
+ #
14
+ # DEPENDENCIES:
15
+ # gem: sensu-plugin
16
+ # gem: uri
17
+ # gem: net/http
18
+ # gem: socket
19
+ # gem: json
20
+ #
21
+ # USAGE:
22
+ # #YELLOW
23
+ #
24
+ # NOTES:
25
+ #
26
+ # LICENCE:
27
+ # PTC http://www.ptc.com/
28
+ # Copyright 2017 PTC Inc.
29
+ #
30
+ # Licensed under the Apache License, Version 2.0 (the "License");
31
+ # you may not use this file except in compliance with the License.
32
+ # You may obtain a copy of the License at
33
+ #
34
+ # http://www.apache.org/licenses/LICENSE-2.0
35
+ #
36
+ # Unless required by applicable law or agreed to in writing, software
37
+ # distributed under the License is distributed on an "AS IS" BASIS,
38
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
39
+ # See the License for the specific language governing permissions and
40
+ # limitations under the License.
41
+ #
42
+ # TODO:
43
+ # Add dimentions to the metric name (framework_name; framework_role, executor_id)
44
+
45
+ require 'sensu-plugin/metric/cli'
46
+ require 'json'
47
+ require 'net/http'
48
+ require 'uri'
49
+ require 'socket'
50
+ require 'sensu-plugins-dcos'
51
+
52
+ class DCOSMetrics < Sensu::Plugin::Metric::CLI::Graphite
53
+ include Common
54
+
55
+ option :scheme,
56
+ description: 'Metric naming scheme',
57
+ short: '-s SCHEME',
58
+ long: '--scheme SCHEME',
59
+ default: "#{Socket.gethostname}.dcos.container"
60
+
61
+ option :server,
62
+ description: 'DCOS Host',
63
+ short: '-h SERVER',
64
+ long: '--host SERVER',
65
+ default: 'localhost'
66
+
67
+ option :port,
68
+ description: 'DCOS-metrics port',
69
+ short: '-p PORT',
70
+ long: '--port PORT',
71
+ required: false,
72
+ default: '61001'
73
+
74
+ option :uri,
75
+ description: 'Endpoint URI',
76
+ short: '-u URI',
77
+ long: '--uri URI',
78
+ default: '/system/v1/metrics/v0/containers'
79
+
80
+ def run
81
+ containers = get_data("http://#{config[:server]}:#{config[:port]}#{config[:uri]}")
82
+ containers.each do |container|
83
+ all_metrics = get_data("http://#{config[:server]}:#{config[:port]}#{config[:uri]}/#{container}")
84
+ if all_metrics.key?('datapoints')
85
+ all_metrics['datapoints'].each do |metric|
86
+ metric['name'].tr!('/', '.')
87
+ metric['name'].squeeze!('.')
88
+ output([config[:scheme], container, metric['unit'], metric['name']].join('.'), metric['value'])
89
+ end
90
+ end
91
+ app_metrics = get_data("http://#{config[:server]}:#{config[:port]}#{config[:uri]}/#{container}/app")
92
+ app_metrics['datapoints'].each do |metric|
93
+ metric['tags'].each do |k, v|
94
+ metric['name'] = [metric['name'], k, v].join('.')
95
+ end unless metric['tags'].nil?
96
+ metric['name'].tr!('/', '.')
97
+ metric['name'].squeeze!('.')
98
+ output([config[:scheme], container, 'app', metric['unit'], metric['name']].join('.'), metric['value'])
99
+ end unless app_metrics['datapoints'].nil?
100
+ end unless containers.nil? || containers.empty?
101
+ ok
102
+ end
103
+ end
@@ -0,0 +1,94 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # dcos-metrics
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin extracts the metrics from a dcos server
7
+ #
8
+ # OUTPUT:
9
+ # metric data
10
+ #
11
+ # PLATFORMS:
12
+ # Linux
13
+ #
14
+ # DEPENDENCIES:
15
+ # gem: sensu-plugin
16
+ # gem: uri
17
+ # gem: net/http
18
+ # gem: socket
19
+ # gem: json
20
+ #
21
+ # USAGE:
22
+ # #YELLOW
23
+ #
24
+ # NOTES:
25
+ #
26
+ # LICENCE:
27
+ # PTC http://www.ptc.com/
28
+ # Copyright 2017 PTC Inc.
29
+ #
30
+ # Licensed under the Apache License, Version 2.0 (the "License");
31
+ # you may not use this file except in compliance with the License.
32
+ # You may obtain a copy of the License at
33
+ #
34
+ # http://www.apache.org/licenses/LICENSE-2.0
35
+ #
36
+ # Unless required by applicable law or agreed to in writing, software
37
+ # distributed under the License is distributed on an "AS IS" BASIS,
38
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
39
+ # See the License for the specific language governing permissions and
40
+ # limitations under the License.
41
+ #
42
+
43
+ require 'sensu-plugin/metric/cli'
44
+ require 'json'
45
+ require 'net/http'
46
+ require 'uri'
47
+ require 'socket'
48
+ require 'sensu-plugins-dcos'
49
+
50
+ class DCOSMetrics < Sensu::Plugin::Metric::CLI::Graphite
51
+ include Common
52
+
53
+ option :scheme,
54
+ description: 'Metric naming scheme',
55
+ short: '-s SCHEME',
56
+ long: '--scheme SCHEME',
57
+ default: "#{Socket.gethostname}.dcos"
58
+
59
+ option :server,
60
+ description: 'DCOS Host',
61
+ short: '-h SERVER',
62
+ long: '--host SERVER',
63
+ default: 'localhost'
64
+
65
+ option :port,
66
+ description: 'DCOS-metrics port',
67
+ short: '-p PORT',
68
+ long: '--port PORT',
69
+ required: false,
70
+ default: '61001'
71
+
72
+ option :uri,
73
+ description: 'Endpoint URI',
74
+ short: '-u URI',
75
+ long: '--uri URI',
76
+ default: '/system/v1/metrics/v0/node'
77
+
78
+ def run
79
+ all_metrics = get_data("http://#{config[:server]}:#{config[:port]}#{config[:uri]}")
80
+ if all_metrics.key?('datapoints')
81
+ all_metrics['datapoints'].each do |metric|
82
+ if metric.key?('tags')
83
+ metric['tags'].each do |k, v|
84
+ metric['name'] = [metric['name'], k, v].join('.')
85
+ end
86
+ end
87
+ metric['name'].tr!('/', '.')
88
+ metric['name'].squeeze!('.')
89
+ output([config[:scheme], metric['unit'], metric['name']].join('.'), metric['value'])
90
+ end
91
+ end
92
+ ok
93
+ end
94
+ end
@@ -0,0 +1,46 @@
1
+ # LICENCE:
2
+ # PTC http://www.ptc.com/
3
+ # Copyright 2017 PTC Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+ module Common
18
+ def initialize
19
+ super()
20
+ end
21
+
22
+ def get_data(url)
23
+ url = URI.parse(url)
24
+ response = Net::HTTP.get_response(url)
25
+ if response.code == '204'
26
+ return {}
27
+ end
28
+ JSON.parse(response.body)
29
+ rescue Errno::ECONNREFUSED
30
+ warning 'Connection refused'
31
+ rescue JSON::ParserError
32
+ critical 'Invalid JSON'
33
+ end
34
+
35
+ def get_value(url, metric, filter)
36
+ resource = get_data(url)
37
+ return {} if resource.nil? || resource.empty?
38
+ if filter
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']
42
+ else
43
+ resource['datapoints'].select { |data| data['name'] == metric }.first['value']
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,9 @@
1
+ module SensuPluginsDcos
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
@@ -0,0 +1,2 @@
1
+ require 'sensu-plugins-dcos/version'
2
+ require 'sensu-plugins-dcos/common'
metadata ADDED
@@ -0,0 +1,293 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sensu-plugins-dcos
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - PTC and contributors
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-07-18 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: '1.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.2'
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: 1.8.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.8.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: daybreak
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.3.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.3.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.7'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.7'
69
+ - !ruby/object:Gem::Dependency
70
+ name: codeclimate-test-reporter
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.4'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.4'
83
+ - !ruby/object:Gem::Dependency
84
+ name: github-markup
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.10'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.10'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '10.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '10.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: redcarpet
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.2'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.2'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '3.1'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '3.1'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 0.40.0
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 0.40.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: yard
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '0.8'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '0.8'
181
+ - !ruby/object:Gem::Dependency
182
+ name: test-kitchen
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '1.6'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '1.6'
195
+ - !ruby/object:Gem::Dependency
196
+ name: kitchen-vagrant
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '0.19'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '0.19'
209
+ - !ruby/object:Gem::Dependency
210
+ name: kitchen-localhost
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '0.3'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '0.3'
223
+ - !ruby/object:Gem::Dependency
224
+ name: json
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "<"
228
+ - !ruby/object:Gem::Version
229
+ version: 2.0.0
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "<"
235
+ - !ruby/object:Gem::Version
236
+ version: 2.0.0
237
+ description: |-
238
+ This plugin provides native dcos-metrics instrumentation
239
+ for monitoring and metrics collection.
240
+ email: "<sensu-users@googlegroups.com>"
241
+ executables:
242
+ - check-dcos-container-count.rb
243
+ - check-dcos-ping.rb
244
+ - check-dcos-metrics.rb
245
+ - check-dcos-container-metrics.rb
246
+ - metrics-dcos-containers.rb
247
+ - metrics-dcos-host.rb
248
+ extensions: []
249
+ extra_rdoc_files: []
250
+ files:
251
+ - CHANGELOG.md
252
+ - LICENSE
253
+ - README.md
254
+ - bin/check-dcos-container-count.rb
255
+ - bin/check-dcos-container-metrics.rb
256
+ - bin/check-dcos-metrics.rb
257
+ - bin/check-dcos-ping.rb
258
+ - bin/metrics-dcos-containers.rb
259
+ - bin/metrics-dcos-host.rb
260
+ - lib/sensu-plugins-dcos.rb
261
+ - lib/sensu-plugins-dcos/common.rb
262
+ - lib/sensu-plugins-dcos/version.rb
263
+ homepage: https://github.com/PTC-Global/sensu-plugins-dcos
264
+ licenses:
265
+ - APACHE 2.0
266
+ metadata:
267
+ maintainer: PTC
268
+ development_status: active
269
+ production_status: unstable - testing recommended
270
+ release_draft: 'false'
271
+ release_prerelease: 'false'
272
+ post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
273
+ in /etc/default/sensu
274
+ rdoc_options: []
275
+ require_paths:
276
+ - lib
277
+ required_ruby_version: !ruby/object:Gem::Requirement
278
+ requirements:
279
+ - - ">="
280
+ - !ruby/object:Gem::Version
281
+ version: 2.1.0
282
+ required_rubygems_version: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - ">="
285
+ - !ruby/object:Gem::Version
286
+ version: '0'
287
+ requirements: []
288
+ rubyforge_project:
289
+ rubygems_version: 2.4.5.1
290
+ signing_key:
291
+ specification_version: 4
292
+ summary: Sensu plugins for dcos-metrics checks and metrics
293
+ test_files: []