sensu-plugins-mesos 2.0.0 → 2.1.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/CHANGELOG.md +6 -1
- data/bin/check-marathon-task.rb +32 -26
- data/lib/sensu-plugins-mesos/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9bb2b08b42ff7321fea875982453469fd5bcec99
|
4
|
+
data.tar.gz: f29e66d69c0fc30184155bf626ef3ca923e899af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f802bd1574f2d06c538b7ad53fc07e84867bf8982d17ae9f0fb3358bed80623878ca805453fd45ca6dea3621640b31c1d2d6140f02b4968ac365d237b3461d67
|
7
|
+
data.tar.gz: 84b13e54808f809da09dc77e86daa24d9b61a5e42d94f7fb136c1f5d33466742d0b40644cd480742138e8488f939187d924c53c1de768e85f7c0a75f368e2817
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,10 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [2.1.0] - 2017-10-20
|
9
|
+
### Changed
|
10
|
+
- check-marathon-task.rb: if instances are not defined, plugin will check number of configured instances in Marathon. Also removed Net::HTTP in favour of Restclient::Resource
|
11
|
+
|
8
12
|
## [2.0.0] - 2017-07-15
|
9
13
|
### Added
|
10
14
|
- Ruby 2.3.0 testing
|
@@ -74,7 +78,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
74
78
|
### Added
|
75
79
|
- initial release
|
76
80
|
|
77
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-mesos/compare/2.
|
81
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-mesos/compare/2.1.0...HEAD
|
82
|
+
[2.1.0]: https://github.com/sensu-plugins/sensu-plugins-mesos/compare/2.0.0...2.1.0
|
78
83
|
[2.0.0]: https://github.com/sensu-plugins/sensu-plugins-mesos/compare/1.1.0...2.0.0
|
79
84
|
[1.1.0]: https://github.com/sensu-plugins/sensu-plugins-mesos/compare/1.0.0...1.1.0
|
80
85
|
[1.0.0]: https://github.com/sensu-plugins/sensu-plugins-mesos/compare/0.1.1...1.0.0
|
data/bin/check-marathon-task.rb
CHANGED
@@ -30,13 +30,13 @@
|
|
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
|
# This plugin checks that the given Mesos/Marathon task is running properly.
|
37
37
|
#
|
38
38
|
# This means that all of the following is true:
|
39
|
-
# 1. There are N tasks for the app, as defined by the --instances parameter
|
39
|
+
# 1. There are N tasks for the app, as defined by the --instances parameter or checks configured tasks in Marathon as fallback
|
40
40
|
# 2. Each task's state is running
|
41
41
|
# 3. No task is unhealthy, as defined in Marathon
|
42
42
|
#
|
@@ -71,7 +71,8 @@ class MarathonTaskCheck < Sensu::Plugin::Check::CLI
|
|
71
71
|
option :instances,
|
72
72
|
short: '-i INSTANCES',
|
73
73
|
long: '--instances INSTANCES',
|
74
|
-
required:
|
74
|
+
required: false,
|
75
|
+
default: 0,
|
75
76
|
proc: proc(&:to_i)
|
76
77
|
|
77
78
|
option :protocol,
|
@@ -89,11 +90,14 @@ class MarathonTaskCheck < Sensu::Plugin::Check::CLI
|
|
89
90
|
long: '--password PASSWORD',
|
90
91
|
required: false
|
91
92
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
93
|
+
option :timeout,
|
94
|
+
description: 'timeout in seconds',
|
95
|
+
short: '-T TIMEOUT',
|
96
|
+
long: '--timeout TIMEOUT',
|
97
|
+
proc: proc(&:to_i),
|
98
|
+
default: 5
|
96
99
|
|
100
|
+
def run
|
97
101
|
if !config[:username].nil? && config[:password].nil? ||
|
98
102
|
config[:username].nil? && !config[:password].nil?
|
99
103
|
unknown 'You must provide both username and password'
|
@@ -103,28 +107,21 @@ class MarathonTaskCheck < Sensu::Plugin::Check::CLI
|
|
103
107
|
uri = config[:uri]
|
104
108
|
config[:server].split(',').each do |s|
|
105
109
|
begin
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
end
|
110
|
+
auth_headers = {}
|
111
|
+
auth_headers = { Authorization: "#{config[:username]} #{config[:password]}" } if !config[:username].nil? && !config[:password].nil?
|
112
|
+
r = RestClient::Resource.new("#{config[:protocol]}://#{s}:#{config[:port]}#{uri}", auth_headers, config[:timeout]).get
|
113
|
+
expected = if config[:instances].zero?
|
114
|
+
default_tasks(s)
|
115
|
+
else
|
116
|
+
config[:instances]
|
117
|
+
end
|
118
|
+
ok_count, unhealthy = check_tasks r
|
116
119
|
|
117
|
-
ok_count
|
120
|
+
message = "#{ok_count}/#{expected} #{config[:task]} tasks running"
|
118
121
|
|
119
|
-
message
|
122
|
+
message << ":\n" << unhealthy.join("\n") if unhealthy.any?
|
120
123
|
|
121
|
-
if unhealthy.any?
|
122
|
-
message << ":\n" << unhealthy.join("\n")
|
123
|
-
end
|
124
|
-
|
125
|
-
if unhealthy.any? || ok_count < config[:instances]
|
126
|
-
critical message
|
127
|
-
end
|
124
|
+
critical message if unhealthy.any? || ok_count < config[:instances]
|
128
125
|
|
129
126
|
ok message
|
130
127
|
rescue Errno::ECONNREFUSED, SocketError
|
@@ -173,4 +170,13 @@ class MarathonTaskCheck < Sensu::Plugin::Check::CLI
|
|
173
170
|
|
174
171
|
[tasks.length, unhealthy]
|
175
172
|
end
|
173
|
+
|
174
|
+
def default_tasks(server)
|
175
|
+
expected_tasks_url = "/v2/apps/#{config[:task]}"
|
176
|
+
auth_headers = {}
|
177
|
+
auth_headers = { Authorization: "#{config[:username]} #{config[:password]}" } if !config[:username].nil? && !config[:password].nil?
|
178
|
+
r = RestClient::Resource.new("#{config[:protocol]}://#{server}:#{config[:port]}#{expected_tasks_url}", auth_headers, config[:timeout]).get
|
179
|
+
n_tasks = JSON.parse(r)['app']['instances']
|
180
|
+
n_tasks
|
181
|
+
end
|
176
182
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-mesos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sensu Plugins and contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -268,7 +268,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
268
268
|
version: '0'
|
269
269
|
requirements: []
|
270
270
|
rubyforge_project:
|
271
|
-
rubygems_version: 2.
|
271
|
+
rubygems_version: 2.6.14
|
272
272
|
signing_key:
|
273
273
|
specification_version: 4
|
274
274
|
summary: Sensu plugins for checking mesos
|