sensu-plugins-mesos 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|