sensu-plugins-kubernetes 3.0.1 → 3.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/README.md +16 -0
- data/bin/check-kube-nodes-ready.rb +19 -0
- data/bin/check-kube-pods-pending.rb +19 -0
- data/bin/check-kube-pods-restarting.rb +19 -0
- data/bin/check-kube-pods-running.rb +19 -0
- data/lib/sensu-plugins-kubernetes/exclude.rb +33 -0
- data/lib/sensu-plugins-kubernetes/version.rb +2 -2
- metadata +10 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45a45dc3c0d473178c20e48f82d9963c11f44d6cedd3bfe5ee7485834042ed95
|
4
|
+
data.tar.gz: 24b10e2d96052d3519623e615b3e256232fa49b9a9f09f1a137901407d7b2c10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b91a158f2ca9de86fe65a2d2b063f2fac90711b83dad7557d2e04f5310f3c765a2aecafe5518324026ec7e32b89e206fbeba62150eed8c861a72a31c94b0a6a8
|
7
|
+
data.tar.gz: c75419669faf06fd1e852f6580165aa75d009651257ef6dfe14da67026e9f333146ac1ee7fa54035a6aedb93aa387e49a5e1a4d2b53e15fdefbe17d85532861e
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,10 @@ This CHANGELOG follows the format listed [here ](https://github.com/sensu-plugin
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [3.1.0] - 2018-10-29
|
9
|
+
### Added
|
10
|
+
- `check-kube-nodes-ready.rb`, `check-kube-pods-pending.rb`, `check-kube-pods-restarting.rb`, `check-kube-pods-running.rb`: added options `--included-nodes` and `--excluded-nodes` which support a comma separated list so you can filter nodes (@ttarczynski)
|
11
|
+
|
8
12
|
### Fixed
|
9
13
|
- check-kube-pods-running.rb no longer throws an exception when there are no 3 conditions in the status information. Issue #39 (@AgarFu)
|
10
14
|
|
@@ -68,7 +72,8 @@ pending pods, the restart count portion has been split into it's own check, `che
|
|
68
72
|
### Added
|
69
73
|
- initial release
|
70
74
|
|
71
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/3.0
|
75
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/3.1.0...HEAD
|
76
|
+
[3.1.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/3.0.1...3.1.0
|
72
77
|
[3.0.1]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/3.0.0...3.0.0.1
|
73
78
|
[3.0.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/2.0.0...3.0.0
|
74
79
|
[2.0.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/1.1.0...2.0.0
|
data/README.md
CHANGED
@@ -36,6 +36,10 @@ Usage: check-kube-nodes-ready.rb (options)
|
|
36
36
|
-u, --user USER User with access to API
|
37
37
|
-v, --api-version VERSION API version
|
38
38
|
--kube-config KUBECONFIG Path to a kube config file
|
39
|
+
--exclude-nodes Exclude the specified nodes (comma separated list)
|
40
|
+
Exclude wins when a node is in both include and exclude lists
|
41
|
+
--include-nodes Include the specified nodes (comma separated list), an
|
42
|
+
empty list includes all nodes
|
39
43
|
```
|
40
44
|
|
41
45
|
**check-kube-apiserver-available.rb**
|
@@ -70,6 +74,10 @@ Usage: check-kube-pods-pending.rb (options)
|
|
70
74
|
--exclude-namespace
|
71
75
|
-i NAMESPACES, Include the specified list of namespaces, an
|
72
76
|
--include-namespace empty list includes all namespaces
|
77
|
+
--exclude-nodes Exclude the specified nodes (comma separated list)
|
78
|
+
Exclude wins when a node is in both include and exclude lists
|
79
|
+
--include-nodes Include the specified nodes (comma separated list), an
|
80
|
+
empty list includes all nodes
|
73
81
|
-t, --timeout TIMEOUT Threshold for pods to be in the pending state
|
74
82
|
-f, --filter FILTER Selector filter for pods to be checked
|
75
83
|
-p, --pods PODS List of pods to check
|
@@ -132,6 +140,10 @@ Usage: ./check-kube-pods-running.rb (options)
|
|
132
140
|
--exclude-namespace
|
133
141
|
-i NAMESPACES, Include the specified list of namespaces, an
|
134
142
|
--include-namespace empty list includes all namespaces
|
143
|
+
--exclude-nodes Exclude the specified nodes (comma separated list)
|
144
|
+
Exclude wins when a node is in both include and exclude lists
|
145
|
+
--include-nodes Include the specified nodes (comma separated list), an
|
146
|
+
empty list includes all nodes
|
135
147
|
-f, --filter FILTER Selector filter for pods to be checked
|
136
148
|
-p, --pods PODS List of pods to check
|
137
149
|
--kube-config KUBECONFIG Path to a kube config file
|
@@ -155,6 +167,10 @@ Usage: ./check-kube-pods-restarting.rb (options)
|
|
155
167
|
--exclude-namespace
|
156
168
|
-i NAMESPACES, Include the specified list of namespaces, an
|
157
169
|
--include-namespace empty list includes all namespaces
|
170
|
+
--exclude-nodes Exclude the specified nodes (comma separated list)
|
171
|
+
Exclude wins when a node is in both include and exclude lists
|
172
|
+
--include-nodes Include the specified nodes (comma separated list), an
|
173
|
+
empty list includes all nodes
|
158
174
|
-f, --filter FILTER Selector filter for pods to be checked
|
159
175
|
-p, --pods PODS List of pods to check
|
160
176
|
-r, --restart COUNT Threshold for number of restarts allowed
|
@@ -26,6 +26,10 @@
|
|
26
26
|
# -p, --password PASSWORD If user is passed, also pass a password
|
27
27
|
# -t, --token TOKEN Bearer token for authorization
|
28
28
|
# --token-file TOKEN-FILE File containing bearer token for authorization
|
29
|
+
# --exclude-nodes Exclude the specified nodes (comma separated list)
|
30
|
+
# Exclude wins when a node is in both include and exclude lists
|
31
|
+
# --include-nodes Include the specified nodes (comma separated list), an
|
32
|
+
# empty list includes all nodes
|
29
33
|
#
|
30
34
|
# LICENSE:
|
31
35
|
# Kel Cecil <kelcecil@praisechaos.com>
|
@@ -34,9 +38,23 @@
|
|
34
38
|
#
|
35
39
|
|
36
40
|
require 'sensu-plugins-kubernetes/cli'
|
41
|
+
require 'sensu-plugins-kubernetes/exclude'
|
37
42
|
|
38
43
|
class AllNodesAreReady < Sensu::Plugins::Kubernetes::CLI
|
39
44
|
@options = Sensu::Plugins::Kubernetes::CLI.options.dup
|
45
|
+
include Sensu::Plugins::Kubernetes::Exclude
|
46
|
+
|
47
|
+
option :exclude_nodes,
|
48
|
+
description: 'Exclude the specified nodes (comma separated list)',
|
49
|
+
long: '--exclude-nodes NODES',
|
50
|
+
proc: proc { |a| a.split(',') },
|
51
|
+
default: ''
|
52
|
+
|
53
|
+
option :include_nodes,
|
54
|
+
description: 'Include the specified nodes (comma separated list)',
|
55
|
+
long: '--include-nodes NODES',
|
56
|
+
proc: proc { |a| a.split(',') },
|
57
|
+
default: ''
|
40
58
|
|
41
59
|
def run
|
42
60
|
failed_nodes = []
|
@@ -45,6 +63,7 @@ class AllNodesAreReady < Sensu::Plugins::Kubernetes::CLI
|
|
45
63
|
if item.nil?
|
46
64
|
warning "#{node.name} does not have a status"
|
47
65
|
elsif item.status != 'True'
|
66
|
+
next if should_exclude_node(node.metadata.name)
|
48
67
|
failed_nodes << node.metadata.name unless node.spec.unschedulable
|
49
68
|
end
|
50
69
|
end
|
@@ -30,6 +30,10 @@
|
|
30
30
|
# --exclude-namespace
|
31
31
|
# -i NAMESPACES, Include the specified list of namespaces, an
|
32
32
|
# --include-namespace empty list includes all namespaces
|
33
|
+
# --exclude-nodes Exclude the specified nodes (comma separated list)
|
34
|
+
# Exclude wins when a node is in both include and exclude lists
|
35
|
+
# --include-nodes Include the specified nodes (comma separated list), an
|
36
|
+
# empty list includes all nodes
|
33
37
|
# -t, --timeout TIMEOUT Threshold for pods to be in the pending state
|
34
38
|
# -f, --filter FILTER Selector filter for pods to be checked
|
35
39
|
# -p, --pods PODS Optional list of pods to check.
|
@@ -46,9 +50,11 @@
|
|
46
50
|
#
|
47
51
|
|
48
52
|
require 'sensu-plugins-kubernetes/cli'
|
53
|
+
require 'sensu-plugins-kubernetes/exclude'
|
49
54
|
|
50
55
|
class AllPodsAreReady < Sensu::Plugins::Kubernetes::CLI
|
51
56
|
@options = Sensu::Plugins::Kubernetes::CLI.options.dup
|
57
|
+
include Sensu::Plugins::Kubernetes::Exclude
|
52
58
|
|
53
59
|
option :pod_list,
|
54
60
|
description: 'List of pods to check',
|
@@ -82,6 +88,18 @@ class AllPodsAreReady < Sensu::Plugins::Kubernetes::CLI
|
|
82
88
|
proc: proc { |a| a.split(',') },
|
83
89
|
default: ''
|
84
90
|
|
91
|
+
option :exclude_nodes,
|
92
|
+
description: 'Exclude the specified nodes (comma separated list)',
|
93
|
+
long: '--exclude-nodes NODES',
|
94
|
+
proc: proc { |a| a.split(',') },
|
95
|
+
default: ''
|
96
|
+
|
97
|
+
option :include_nodes,
|
98
|
+
description: 'Include the specified nodes (comma separated list)',
|
99
|
+
long: '--include-nodes NODES',
|
100
|
+
proc: proc { |a| a.split(',') },
|
101
|
+
default: ''
|
102
|
+
|
85
103
|
def run
|
86
104
|
pods_list = []
|
87
105
|
failed_pods = []
|
@@ -99,6 +117,7 @@ class AllPodsAreReady < Sensu::Plugins::Kubernetes::CLI
|
|
99
117
|
pods.each do |pod|
|
100
118
|
next if pod.nil?
|
101
119
|
next if should_exclude_namespace(pod.metadata.namespace)
|
120
|
+
next if should_exclude_node(pod.spec.nodeName)
|
102
121
|
next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all')
|
103
122
|
# Check for pending state
|
104
123
|
next unless pod.status.phase == 'Pending'
|
@@ -30,6 +30,10 @@
|
|
30
30
|
# --exclude-namespace
|
31
31
|
# -i NAMESPACES, Include the specified list of namespaces, an
|
32
32
|
# --include-namespace empty list includes all namespaces
|
33
|
+
# --exclude-nodes Exclude the specified nodes (comma separated list)
|
34
|
+
# Exclude wins when a node is in both include and exclude lists
|
35
|
+
# --include-nodes Include the specified nodes (comma separated list), an
|
36
|
+
# empty list includes all nodes
|
33
37
|
# -f, --filter FILTER Selector filter for pods to be checked
|
34
38
|
# -p, --pods PODS List of pods to check
|
35
39
|
# -r, --restart COUNT Threshold for number of restarts allowed
|
@@ -45,9 +49,11 @@
|
|
45
49
|
#
|
46
50
|
|
47
51
|
require 'sensu-plugins-kubernetes/cli'
|
52
|
+
require 'sensu-plugins-kubernetes/exclude'
|
48
53
|
|
49
54
|
class PodsRestarting < Sensu::Plugins::Kubernetes::CLI
|
50
55
|
@options = Sensu::Plugins::Kubernetes::CLI.options.dup
|
56
|
+
include Sensu::Plugins::Kubernetes::Exclude
|
51
57
|
|
52
58
|
option :pod_list,
|
53
59
|
description: 'List of pods to check',
|
@@ -81,6 +87,18 @@ class PodsRestarting < Sensu::Plugins::Kubernetes::CLI
|
|
81
87
|
proc: proc { |a| a.split(',') },
|
82
88
|
default: ''
|
83
89
|
|
90
|
+
option :exclude_nodes,
|
91
|
+
description: 'Exclude the specified nodes (comma separated list)',
|
92
|
+
long: '--exclude-nodes NODES',
|
93
|
+
proc: proc { |a| a.split(',') },
|
94
|
+
default: ''
|
95
|
+
|
96
|
+
option :include_nodes,
|
97
|
+
description: 'Include the specified nodes (comma separated list)',
|
98
|
+
long: '--include-nodes NODES',
|
99
|
+
proc: proc { |a| a.split(',') },
|
100
|
+
default: ''
|
101
|
+
|
84
102
|
def run
|
85
103
|
pods_list = []
|
86
104
|
restarted_pods = []
|
@@ -98,6 +116,7 @@ class PodsRestarting < Sensu::Plugins::Kubernetes::CLI
|
|
98
116
|
pods.each do |pod|
|
99
117
|
next if pod.nil?
|
100
118
|
next if should_exclude_namespace(pod.metadata.namespace)
|
119
|
+
next if should_exclude_node(pod.spec.nodeName)
|
101
120
|
next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all')
|
102
121
|
# Check restarts
|
103
122
|
next if pod.status.containerStatuses.nil?
|
@@ -30,6 +30,10 @@
|
|
30
30
|
# --exclude-namespace
|
31
31
|
# -i NAMESPACES, Include the specified list of namespaces, an
|
32
32
|
# --include-namespace empty list includes all namespaces
|
33
|
+
# --exclude-nodes Exclude the specified nodes (comma separated list)
|
34
|
+
# Exclude wins when a node is in both include and exclude lists
|
35
|
+
# --include-nodes Include the specified nodes (comma separated list), an
|
36
|
+
# empty list includes all nodes
|
33
37
|
# -f, --filter FILTER Selector filter for pods to be checked
|
34
38
|
# -p, --pods PODS List of pods to check
|
35
39
|
# NOTES:
|
@@ -43,9 +47,11 @@
|
|
43
47
|
#
|
44
48
|
|
45
49
|
require 'sensu-plugins-kubernetes/cli'
|
50
|
+
require 'sensu-plugins-kubernetes/exclude'
|
46
51
|
|
47
52
|
class AllPodsAreRunning < Sensu::Plugins::Kubernetes::CLI
|
48
53
|
@options = Sensu::Plugins::Kubernetes::CLI.options.dup
|
54
|
+
include Sensu::Plugins::Kubernetes::Exclude
|
49
55
|
|
50
56
|
option :pod_list,
|
51
57
|
description: 'List of pods to check',
|
@@ -72,6 +78,18 @@ class AllPodsAreRunning < Sensu::Plugins::Kubernetes::CLI
|
|
72
78
|
proc: proc { |a| a.split(',') },
|
73
79
|
default: ''
|
74
80
|
|
81
|
+
option :exclude_nodes,
|
82
|
+
description: 'Exclude the specified nodes (comma separated list)',
|
83
|
+
long: '--exclude-nodes NODES',
|
84
|
+
proc: proc { |a| a.split(',') },
|
85
|
+
default: ''
|
86
|
+
|
87
|
+
option :include_nodes,
|
88
|
+
description: 'Include the specified nodes (comma separated list)',
|
89
|
+
long: '--include-nodes NODES',
|
90
|
+
proc: proc { |a| a.split(',') },
|
91
|
+
default: ''
|
92
|
+
|
75
93
|
def run
|
76
94
|
pods_list = []
|
77
95
|
failed_pods = []
|
@@ -89,6 +107,7 @@ class AllPodsAreRunning < Sensu::Plugins::Kubernetes::CLI
|
|
89
107
|
pods.each do |pod|
|
90
108
|
next if pod.nil?
|
91
109
|
next if should_exclude_namespace(pod.metadata.namespace)
|
110
|
+
next if should_exclude_node(pod.spec.nodeName)
|
92
111
|
next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all')
|
93
112
|
next unless pod.status.phase != 'Succeeded' && !pod.status.conditions.nil?
|
94
113
|
failed_pods << pod.metadata.name unless ready? pod
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Sensu
|
2
|
+
module Plugins
|
3
|
+
# Namespace for the Kubernetes sensu-plugin.
|
4
|
+
module Kubernetes
|
5
|
+
# A mixin module that provides filtering functions.
|
6
|
+
module Exclude
|
7
|
+
# Filters the list of pods or nodes based on include/exclude options.
|
8
|
+
#
|
9
|
+
# @option options [String] :exclude_nodes
|
10
|
+
# Exclude the specified nodes (comma separated list)
|
11
|
+
# Exclude wins when a node is in both include and exclude lists
|
12
|
+
# @option options [String] :include-nodes
|
13
|
+
# Include the specified nodes (comma separated list), an
|
14
|
+
# empty list includes all nodes
|
15
|
+
def node_included?(node_name)
|
16
|
+
if config[:include_nodes].empty?
|
17
|
+
true
|
18
|
+
else
|
19
|
+
config[:include_nodes].include?(node_name)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def node_excluded?(node_name)
|
24
|
+
config[:exclude_nodes].include?(node_name)
|
25
|
+
end
|
26
|
+
|
27
|
+
def should_exclude_node(node_name)
|
28
|
+
node_excluded?(node_name) || !node_included?(node_name)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-kubernetes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0
|
4
|
+
version: 3.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: 2018-
|
11
|
+
date: 2018-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -181,15 +181,15 @@ dependencies:
|
|
181
181
|
description: Provides monitoring for Kubernetes via Sensu
|
182
182
|
email: "<sensu-users@googlegroups.com>"
|
183
183
|
executables:
|
184
|
-
- check-kube-apiserver-available.rb
|
185
|
-
- check-kube-nodes-ready.rb
|
186
|
-
- check-kube-pods-pending.rb
|
187
|
-
- check-kube-pods-restarting.rb
|
188
|
-
- check-kube-pods-running.rb
|
189
|
-
- check-kube-pods-runtime.rb
|
190
184
|
- check-kube-service-available.rb
|
185
|
+
- check-kube-pods-running.rb
|
191
186
|
- handler-kube-pod.rb
|
187
|
+
- check-kube-pods-runtime.rb
|
192
188
|
- metrics-pods.rb
|
189
|
+
- check-kube-pods-pending.rb
|
190
|
+
- check-kube-nodes-ready.rb
|
191
|
+
- check-kube-pods-restarting.rb
|
192
|
+
- check-kube-apiserver-available.rb
|
193
193
|
extensions: []
|
194
194
|
extra_rdoc_files: []
|
195
195
|
files:
|
@@ -208,6 +208,7 @@ files:
|
|
208
208
|
- lib/sensu-plugins-kubernetes.rb
|
209
209
|
- lib/sensu-plugins-kubernetes/cli.rb
|
210
210
|
- lib/sensu-plugins-kubernetes/client.rb
|
211
|
+
- lib/sensu-plugins-kubernetes/exclude.rb
|
211
212
|
- lib/sensu-plugins-kubernetes/version.rb
|
212
213
|
homepage: https://github.com/sensu-plugins/sensu-plugins-kubernetes
|
213
214
|
licenses:
|
@@ -235,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
235
236
|
version: '0'
|
236
237
|
requirements: []
|
237
238
|
rubyforge_project:
|
238
|
-
rubygems_version: 2.7.
|
239
|
+
rubygems_version: 2.7.7
|
239
240
|
signing_key:
|
240
241
|
specification_version: 4
|
241
242
|
summary: Sensu plugins for kubernetes
|