sensu-plugins-consul 1.2.0 → 1.3.0

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: 7756d3660b34f273f747362826658fecdbc6dfab
4
- data.tar.gz: c47c6af671557229f903a45c1aa3d3e30dfc2538
3
+ metadata.gz: 870e22095ff80e366b05399e1b81077b6777d6f6
4
+ data.tar.gz: 651dc79e9d5863b4f64ff4f4060cda87a292c64d
5
5
  SHA512:
6
- metadata.gz: dbbda6260ae94b48b547f9ac7e5147753433541e6b6822efc147afff31b691ad3fadd763f1174ddb218033d673f41b7b8a2ab9986fdabf0fa9935988f63409e2
7
- data.tar.gz: 853551656ca6f4fd6cc37dc2a3f4bdcf5136df89d87a364c35252cbe88875727648b2133caf50d1a513938c6d660364acbb2b8bf4b2464e3c0c2f441c2c624d7
6
+ metadata.gz: 5e9595c8e3af5afbdb7924adb958ddf574d8341bc42f692061b5db1599e596a97579eec7c04ad3f182d71af966f7ce83eeba1ccc6867d624567a27116b341380
7
+ data.tar.gz: 194f2b1cd975584efbc87ec7e218717245e861b3810f6bc00bd7fabf0b6e13a48dfc5506014a5f72fe9e29bc7e4674c0c4c2e3dbb350c398bf32296b16a29984
data/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ 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
+ ## [1.3.0] 2017-05-05
8
+ ### Added
9
+ - `check-consul-failures`, `check-consul-leader`, `check-consul-members`, and `check-consul-servers` now accept a --scheme parameter (@akatch)
10
+ - Add consul maintenance check @okushchenko
7
11
 
8
12
  ## [1.2.0] - 2017-01-26
9
13
  ### Added
@@ -71,7 +75,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
71
75
  ### Added
72
76
  - initial release
73
77
 
74
- [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-consul/compare/1.2.0...HEAD
78
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-consul/compare/1.3.0...HEAD
79
+ [1.3.0]: https://github.com/sensu-plugins/sensu-plugins-consul/compare/2.1.0...1.3.0
75
80
  [1.2.0]: https://github.com/sensu-plugins/sensu-plugins-consul/compare/1.1.0...1.2.0
76
81
  [1.1.0]: https://github.com/sensu-plugins/sensu-plugins-consul/compare/1.0.0...1.1.0
77
82
  [1.0.0]: https://github.com/sensu-plugins/sensu-plugins-consul/compare/0.1.7...1.0.0
data/README.md CHANGED
@@ -16,6 +16,7 @@
16
16
  * bin/check-consul-servers.rb
17
17
  * bin/check-consul-members.rb
18
18
  * bin/check-service-consul.rb
19
+ * bin/check-consul-maintenance.rb
19
20
 
20
21
  ## Usage
21
22
 
@@ -37,14 +37,20 @@ class ConsulStatus < Sensu::Plugin::Check::CLI
37
37
  long: '--port PORT',
38
38
  default: '8500'
39
39
 
40
+ option :scheme,
41
+ description: 'consul listener scheme',
42
+ short: '-S SCHEME',
43
+ long: '--scheme SCHEME',
44
+ default: 'http'
45
+
40
46
  def run
41
- r = RestClient::Resource.new("http://#{config[:server]}:#{config[:port]}/v1/agent/members", timeout: 5).get
47
+ r = RestClient::Resource.new("#{config[:scheme]}://#{config[:server]}:#{config[:port]}/v1/agent/members", timeout: 5).get
42
48
  if r.code == 200
43
49
  failing_nodes = JSON.parse(r).find_all { |node| node['Status'] == 4 }
44
50
  if !failing_nodes.nil? && !failing_nodes.empty?
45
51
  failing_nodes.each_entry do |node|
46
52
  puts "Name: #{node['Name']}"
47
- RestClient::Resource.new("http://#{config[:server]}:#{config[:port]}/v1/agent/force-leave/#{node['Name']}", timeout: 5).get
53
+ RestClient::Resource.new("#{config[:scheme]}://#{config[:server]}:#{config[:port]}/v1/agent/force-leave/#{node['Name']}", timeout: 5).get
48
54
  end
49
55
  ok 'Removed failed consul nodes'
50
56
  else
@@ -47,6 +47,12 @@ class ConsulStatus < Sensu::Plugin::Check::CLI
47
47
  long: '--port PORT',
48
48
  default: '8500'
49
49
 
50
+ option :scheme,
51
+ description: 'consul listener scheme',
52
+ short: '-S SCHEME',
53
+ long: '--scheme SCHEME',
54
+ default: 'http'
55
+
50
56
  def valid_ip(ip)
51
57
  case ip.to_s
52
58
  when Resolv::IPv4::Regex
@@ -71,7 +77,7 @@ class ConsulStatus < Sensu::Plugin::Check::CLI
71
77
  end
72
78
 
73
79
  def run
74
- r = RestClient::Resource.new("http://#{config[:server]}:#{config[:port]}/v1/status/leader", timeout: 5).get
80
+ r = RestClient::Resource.new("#{config[:scheme]}://#{config[:server]}:#{config[:port]}/v1/status/leader", timeout: 5).get
75
81
  if r.code == 200
76
82
  if valid_ip(strip_ip(r.body))
77
83
  ok 'Consul is UP and has a leader'
@@ -0,0 +1,80 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-consul-maintenance
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin checks if maintenance mode is enabled
7
+ # for the node in Consul
8
+ #
9
+ # OUTPUT:
10
+ # plain text
11
+ #
12
+ # PLATFORMS:
13
+ # Linux
14
+ #
15
+ # DEPENDENCIES:
16
+ # gem: sensu-plugin
17
+ # gem: diplomat
18
+ #
19
+ # USAGE:
20
+ # ./check-consul-maintenance -n localhost
21
+ #
22
+ # NOTES:
23
+ #
24
+ # LICENSE:
25
+ # Copyright 2016 Oleksandr Kushchenko <gearok@gmail.com>
26
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
27
+ # for details.
28
+ #
29
+
30
+ require 'sensu-plugin/check/cli'
31
+ require 'diplomat'
32
+
33
+ #
34
+ # Maintenance Status
35
+ #
36
+ class MaintenanceStatus < Sensu::Plugin::Check::CLI
37
+ option :consul,
38
+ description: 'consul server',
39
+ long: '--consul SERVER',
40
+ default: 'http://localhost:8500'
41
+
42
+ option :node,
43
+ description: 'consul node name',
44
+ short: '-n NODE',
45
+ long: '--node NODE',
46
+ default: 'localhost'
47
+
48
+ # Get the maintenance data for the node from consul
49
+ #
50
+ def acquire_maintenance_data
51
+ result = Diplomat::Health.node(config[:node]).select do |check|
52
+ check['CheckID'] == '_node_maintenance'
53
+ end
54
+ if !result.empty?
55
+ { enabled: true, reason: result.first['Notes'] }
56
+ else
57
+ { enabled: false, reason: nil }
58
+ end
59
+ rescue Faraday::ConnectionFailed => e
60
+ warning "Connection error occurred: #{e}"
61
+ rescue StandardError => e
62
+ unknown "Exception occurred when checking consul node maintenace: #{e}"
63
+ end
64
+
65
+ # Main function
66
+ #
67
+ def run
68
+ Diplomat.configure do |dc|
69
+ dc.url = config[:consul]
70
+ end
71
+
72
+ data = acquire_maintenance_data
73
+
74
+ if data[:enabled]
75
+ critical "Maintenance enabled for node #{config[:node]}: #{data[:reason]}"
76
+ else
77
+ ok "Maintenance disabled for node #{config[:node]}"
78
+ end
79
+ end
80
+ end
@@ -68,8 +68,14 @@ class ConsulStatus < Sensu::Plugin::Check::CLI
68
68
  long: '--wan',
69
69
  boolean: false
70
70
 
71
+ option :scheme,
72
+ description: 'consul listener scheme',
73
+ short: '-S SCHEME',
74
+ long: '--scheme SCHEME',
75
+ default: 'http'
76
+
71
77
  def run
72
- url = "http://#{config[:server]}:#{config[:port]}/v1/agent/members"
78
+ url = "#{config[:scheme]}://#{config[:server]}:#{config[:port]}/v1/agent/members"
73
79
  if config[:wan]
74
80
  url += '?wan=1'
75
81
  end
@@ -59,8 +59,14 @@ class ConsulStatus < Sensu::Plugin::Check::CLI
59
59
  long: '--expect EXPECT',
60
60
  default: 5
61
61
 
62
+ option :scheme,
63
+ description: 'consul listener scheme',
64
+ short: '-S SCHEME',
65
+ long: '--scheme SCHEME',
66
+ default: 'http'
67
+
62
68
  def run
63
- json = RestClient::Resource.new("http://#{config[:server]}:#{config[:port]}/v1/status/peers", timeout: 5).get
69
+ json = RestClient::Resource.new("#{config[:scheme]}://#{config[:server]}:#{config[:port]}/v1/status/peers", timeout: 5).get
64
70
  peers = JSON.parse(json).length.to_i
65
71
  if peers < config[:min].to_i
66
72
  critical "[#{peers}] peers is below critical threshold of [#{config[:min]}]"
@@ -1,7 +1,7 @@
1
1
  module SensuPluginsConsul
2
2
  module Version
3
3
  MAJOR = 1
4
- MINOR = 2
4
+ MINOR = 3
5
5
  PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-consul
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.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-01-26 00:00:00.000000000 Z
11
+ date: 2017-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-plugin
@@ -187,6 +187,7 @@ executables:
187
187
  - check-consul-failures.rb
188
188
  - check-consul-kv-ttl.rb
189
189
  - check-consul-leader.rb
190
+ - check-consul-maintenance.rb
190
191
  - check-consul-members.rb
191
192
  - check-consul-servers.rb
192
193
  - check-consul-service-health.rb
@@ -200,6 +201,7 @@ files:
200
201
  - bin/check-consul-failures.rb
201
202
  - bin/check-consul-kv-ttl.rb
202
203
  - bin/check-consul-leader.rb
204
+ - bin/check-consul-maintenance.rb
203
205
  - bin/check-consul-members.rb
204
206
  - bin/check-consul-servers.rb
205
207
  - bin/check-consul-service-health.rb