sensu-plugins-kubernetes 4.0.1 → 5.0.1
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 +21 -1
- data/README.md +0 -2
- data/bin/check-kube-apiserver-available.rb +2 -1
- data/bin/check-kube-nodes-ready.rb +3 -1
- data/bin/check-kube-pods-pending.rb +6 -2
- data/bin/check-kube-pods-restarting.rb +6 -2
- data/bin/check-kube-pods-running.rb +7 -2
- data/bin/check-kube-pods-runtime.rb +5 -2
- data/bin/check-kube-service-available.rb +9 -2
- data/bin/handler-kube-pod.rb +2 -1
- data/bin/metrics-pods.rb +3 -1
- data/lib/sensu-plugins-kubernetes.rb +2 -0
- data/lib/sensu-plugins-kubernetes/cli.rb +2 -0
- data/lib/sensu-plugins-kubernetes/client.rb +4 -2
- data/lib/sensu-plugins-kubernetes/exclude.rb +2 -0
- data/lib/sensu-plugins-kubernetes/version.rb +3 -1
- metadata +18 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef84c02513954ee7f594405008c6beee20abcc4a50b47b935f02a1b93729dac9
|
4
|
+
data.tar.gz: 9ede4e66a04a1cee8ec1c770ce07a7499ff390055f422747c1efa118c78f32ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1490ba5f9f146746f9e2d2de94c8d49d8383ae4f2475ab49a4cfe12851dbf0821921f9e625bda3672903ca57a4c66f64b845fefa2a28199bc7455a93b7575073
|
7
|
+
data.tar.gz: 8ec87b41a92bff70187ab8d82de911c289b90e4629d8314bc88d484f91c23281603c61563ba8de828474f0a9e51845aa58f2b8e6f33416794874574d34e6df19
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,24 @@ This CHANGELOG follows the format listed [here ](https://github.com/sensu-plugin
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [5.0.1] - 2020-04-27
|
9
|
+
### Changed
|
10
|
+
- Fixed travis build
|
11
|
+
|
12
|
+
## [5.0.0] - 2020-04-27
|
13
|
+
### Breaking Changes
|
14
|
+
- Bump `sensu-plugin` dependency from `~> 2.7` to `~> 4.0`
|
15
|
+
- Bump `activesupport` dependancy to '< 7.0.0'
|
16
|
+
- Bump `kubeclient` dependency to '>= 2.3', '< 5.0'
|
17
|
+
|
18
|
+
### Added
|
19
|
+
- Bonsai asset support
|
20
|
+
|
21
|
+
### Changed
|
22
|
+
- Updated rubocop dependency to '~> 0.81.0'
|
23
|
+
- Remediated rubocop issues
|
24
|
+
- Updated rake dependency to '~> 13.0'
|
25
|
+
- Removed codeclimate-test-reporter
|
8
26
|
|
9
27
|
## [4.0.1] - 2020-03-18
|
10
28
|
### Fixed
|
@@ -101,7 +119,9 @@ pending pods, the restart count portion has been split into it's own check, `che
|
|
101
119
|
### Added
|
102
120
|
- initial release
|
103
121
|
|
104
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/
|
122
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/5.0.1...HEAD
|
123
|
+
[5.0.1]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/5.0.0...5.0.1
|
124
|
+
[5.0.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/4.0.1...5.0.0
|
105
125
|
[4.0.1]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/4.0.0...4.0.1
|
106
126
|
[4.0.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/3.3.0...4.0.0
|
107
127
|
[3.3.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/3.2.0...3.3.0
|
data/README.md
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/sensu-plugins/sensu-plugins-kubernetes)
|
4
4
|
[](http://badge.fury.io/rb/sensu-plugins-kubernetes)
|
5
|
-
[](https://codeclimate.com/github/sensu-plugins/sensu-plugins-kubernetes)
|
6
|
-
[](https://codeclimate.com/github/sensu-plugins/sensu-plugins-kubernetes)
|
7
5
|
[](https://gemnasium.com/sensu-plugins/sensu-plugins-kubernetes)
|
8
6
|
|
9
7
|
## Functionality
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
|
-
#
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
3
4
|
# check-kube-nodes-ready.rb
|
4
5
|
#
|
5
6
|
# DESCRIPTION:
|
@@ -64,6 +65,7 @@ class AllNodesAreReady < Sensu::Plugins::Kubernetes::CLI
|
|
64
65
|
warning "#{node.name} does not have a status"
|
65
66
|
elsif item.status != 'True'
|
66
67
|
next if should_exclude_node(node.metadata.name)
|
68
|
+
|
67
69
|
failed_nodes << node.metadata.name unless node.spec.unschedulable
|
68
70
|
end
|
69
71
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
|
-
#
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
3
4
|
# check-kube-pods-pending
|
4
5
|
#
|
5
6
|
# DESCRIPTION:
|
@@ -121,6 +122,7 @@ class AllPodsAreReady < Sensu::Plugins::Kubernetes::CLI
|
|
121
122
|
next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all')
|
122
123
|
# Check for pending state
|
123
124
|
next unless pod.status.phase == 'Pending'
|
125
|
+
|
124
126
|
pod_stamp = Time.parse(pod.metadata.creationTimestamp)
|
125
127
|
puts pod.metadata.name
|
126
128
|
if (Time.now.utc - pod_stamp.utc).to_i > config[:pending_timeout]
|
@@ -137,13 +139,15 @@ class AllPodsAreReady < Sensu::Plugins::Kubernetes::CLI
|
|
137
139
|
end
|
138
140
|
|
139
141
|
def parse_list(list)
|
140
|
-
return list.split(',') if list
|
142
|
+
return list.split(',') if list&.include?(',')
|
141
143
|
return [list] if list
|
144
|
+
|
142
145
|
['']
|
143
146
|
end
|
144
147
|
|
145
148
|
def should_exclude_namespace(namespace)
|
146
149
|
return !config[:include_namespace].include?(namespace) unless config[:include_namespace].empty?
|
150
|
+
|
147
151
|
config[:exclude_namespace].include?(namespace)
|
148
152
|
end
|
149
153
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
|
-
#
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
3
4
|
# check-kube-pods-restarting
|
4
5
|
#
|
5
6
|
# DESCRIPTION:
|
@@ -120,6 +121,7 @@ class PodsRestarting < Sensu::Plugins::Kubernetes::CLI
|
|
120
121
|
next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all')
|
121
122
|
# Check restarts
|
122
123
|
next if pod.status.containerStatuses.nil?
|
124
|
+
|
123
125
|
pod.status.containerStatuses.each do |container|
|
124
126
|
if container.restartCount.to_i > config[:restart_count]
|
125
127
|
restarted_pods << "#{pod.metadata.namespace}.#{container.name}"
|
@@ -137,13 +139,15 @@ class PodsRestarting < Sensu::Plugins::Kubernetes::CLI
|
|
137
139
|
end
|
138
140
|
|
139
141
|
def parse_list(list)
|
140
|
-
return list.split(',') if list
|
142
|
+
return list.split(',') if list&.include?(',')
|
141
143
|
return [list] if list
|
144
|
+
|
142
145
|
['']
|
143
146
|
end
|
144
147
|
|
145
148
|
def should_exclude_namespace(namespace)
|
146
149
|
return !config[:include_namespace].include?(namespace) unless config[:include_namespace].empty?
|
150
|
+
|
147
151
|
config[:exclude_namespace].include?(namespace)
|
148
152
|
end
|
149
153
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
|
-
#
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
3
4
|
# check-kube-pods-running
|
4
5
|
#
|
5
6
|
# DESCRIPTION:
|
@@ -117,6 +118,7 @@ class AllPodsAreRunning < Sensu::Plugins::Kubernetes::CLI
|
|
117
118
|
next if should_exclude_node(pod.spec.nodeName)
|
118
119
|
next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all')
|
119
120
|
next unless pod.status.phase != 'Succeeded' && !pod.status.conditions.nil?
|
121
|
+
|
120
122
|
pod_stamp = if pod.status.phase == 'Pending'
|
121
123
|
Time.parse(pod.metadata.creationTimestamp)
|
122
124
|
else
|
@@ -124,6 +126,7 @@ class AllPodsAreRunning < Sensu::Plugins::Kubernetes::CLI
|
|
124
126
|
end
|
125
127
|
runtime = (Time.now.utc - pod_stamp.utc).to_i
|
126
128
|
next if runtime < config[:not_ready_time]
|
129
|
+
|
127
130
|
failed_pods << pod.metadata.name unless ready? pod
|
128
131
|
end
|
129
132
|
|
@@ -137,13 +140,15 @@ class AllPodsAreRunning < Sensu::Plugins::Kubernetes::CLI
|
|
137
140
|
end
|
138
141
|
|
139
142
|
def parse_list(list)
|
140
|
-
return list.split(',') if list
|
143
|
+
return list.split(',') if list&.include?(',')
|
141
144
|
return [list] if list
|
145
|
+
|
142
146
|
['']
|
143
147
|
end
|
144
148
|
|
145
149
|
def should_exclude_namespace(namespace)
|
146
150
|
return !config[:include_namespace].include?(namespace) unless config[:include_namespace].empty?
|
151
|
+
|
147
152
|
config[:exclude_namespace].include?(namespace)
|
148
153
|
end
|
149
154
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
|
-
#
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
3
4
|
# check-kube-pods-runtime
|
4
5
|
#
|
5
6
|
# DESCRIPTION:
|
@@ -85,6 +86,7 @@ class PodRuntime < Sensu::Plugins::Kubernetes::CLI
|
|
85
86
|
next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all')
|
86
87
|
# Check for Running state
|
87
88
|
next unless pod.status.phase == 'Running'
|
89
|
+
|
88
90
|
pod_stamp = Time.parse(pod.status.startTime)
|
89
91
|
runtime = (Time.now.utc - pod_stamp.utc).to_i
|
90
92
|
|
@@ -109,8 +111,9 @@ class PodRuntime < Sensu::Plugins::Kubernetes::CLI
|
|
109
111
|
end
|
110
112
|
|
111
113
|
def parse_list(list)
|
112
|
-
return list.split(',') if list
|
114
|
+
return list.split(',') if list&.include?(',')
|
113
115
|
return [list] if list
|
116
|
+
|
114
117
|
['']
|
115
118
|
end
|
116
119
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
|
-
#
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
3
4
|
# check-kube-pods-service-available
|
4
5
|
#
|
5
6
|
# DESCRIPTION:
|
@@ -63,6 +64,7 @@ class AllServicesUp < Sensu::Plugins::Kubernetes::CLI
|
|
63
64
|
# TODO: come back and clean me up
|
64
65
|
s.each do |a| # rubocop:disable Metrics/BlockLength
|
65
66
|
next unless services.include?(a.metadata.name)
|
67
|
+
|
66
68
|
# Build the selector key so we can fetch the corresponding pod
|
67
69
|
selector_key = []
|
68
70
|
services.delete(a.metadata.name)
|
@@ -70,6 +72,7 @@ class AllServicesUp < Sensu::Plugins::Kubernetes::CLI
|
|
70
72
|
selector_key << "#{k}=#{v}"
|
71
73
|
end
|
72
74
|
next if selector_key.empty?
|
75
|
+
|
73
76
|
# Get the pod
|
74
77
|
pod = nil
|
75
78
|
begin
|
@@ -79,11 +82,13 @@ class AllServicesUp < Sensu::Plugins::Kubernetes::CLI
|
|
79
82
|
end
|
80
83
|
# Make sure our pod is running
|
81
84
|
next if pod.nil?
|
85
|
+
|
82
86
|
pod_available = false
|
83
87
|
pod.each do |p|
|
84
88
|
case p.status.phase
|
85
89
|
when 'Pending'
|
86
90
|
next if p.status.startTime.nil?
|
91
|
+
|
87
92
|
if (Time.now - Time.parse(p.status.startTime)).to_i < config[:pendingTime]
|
88
93
|
pod_available = true
|
89
94
|
break
|
@@ -91,6 +96,7 @@ class AllServicesUp < Sensu::Plugins::Kubernetes::CLI
|
|
91
96
|
when 'Running'
|
92
97
|
p.status.conditions.each do |c|
|
93
98
|
next unless c.type == 'Ready'
|
99
|
+
|
94
100
|
if c.status == 'True'
|
95
101
|
pod_available = true
|
96
102
|
break
|
@@ -116,8 +122,9 @@ class AllServicesUp < Sensu::Plugins::Kubernetes::CLI
|
|
116
122
|
end
|
117
123
|
|
118
124
|
def parse_list(list)
|
119
|
-
return list.split(',') if list
|
125
|
+
return list.split(',') if list&.include?(',')
|
120
126
|
return [list] if list
|
127
|
+
|
121
128
|
['']
|
122
129
|
end
|
123
130
|
end
|
data/bin/handler-kube-pod.rb
CHANGED
data/bin/metrics-pods.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
|
-
#
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
3
4
|
# pod-metrics
|
4
5
|
#
|
5
6
|
# DESCRIPTION:
|
@@ -49,6 +50,7 @@ class PodsMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
49
50
|
critical 'API error: ' << e.message
|
50
51
|
end
|
51
52
|
next if pod.nil?
|
53
|
+
|
52
54
|
pod.each do
|
53
55
|
count[s.metadata.name] += 1
|
54
56
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'kubeclient'
|
2
4
|
require 'uri'
|
3
5
|
|
@@ -10,11 +12,11 @@ module Sensu
|
|
10
12
|
# The location of the service account provided CA.
|
11
13
|
# (if the cluster is configured to provide it)
|
12
14
|
INCLUSTER_CA_FILE =
|
13
|
-
'/var/run/secrets/kubernetes.io/serviceaccount/ca.crt'
|
15
|
+
'/var/run/secrets/kubernetes.io/serviceaccount/ca.crt'
|
14
16
|
|
15
17
|
# The location of the service account provided authentication token.
|
16
18
|
INCLUSTER_TOKEN_FILE =
|
17
|
-
'/var/run/secrets/kubernetes.io/serviceaccount/token'
|
19
|
+
'/var/run/secrets/kubernetes.io/serviceaccount/token'
|
18
20
|
|
19
21
|
# Creates a new Kubeclient::Client instance using the given SSL
|
20
22
|
# and authentication options (if any)
|
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:
|
4
|
+
version: 5.0.1
|
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: 2020-
|
11
|
+
date: 2020-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -16,42 +16,48 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '4.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activesupport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 7.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "<"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 7.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: kubeclient
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '2.3'
|
48
|
+
- - "<"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '5.0'
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
|
-
- - "
|
55
|
+
- - ">="
|
53
56
|
- !ruby/object:Gem::Version
|
54
57
|
version: '2.3'
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '5.0'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: bundler
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,20 +72,6 @@ dependencies:
|
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
74
|
version: '2.1'
|
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
75
|
- !ruby/object:Gem::Dependency
|
84
76
|
name: github-markup
|
85
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,14 +106,14 @@ dependencies:
|
|
114
106
|
requirements:
|
115
107
|
- - "~>"
|
116
108
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
109
|
+
version: '13.0'
|
118
110
|
type: :development
|
119
111
|
prerelease: false
|
120
112
|
version_requirements: !ruby/object:Gem::Requirement
|
121
113
|
requirements:
|
122
114
|
- - "~>"
|
123
115
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
116
|
+
version: '13.0'
|
125
117
|
- !ruby/object:Gem::Dependency
|
126
118
|
name: redcarpet
|
127
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,14 +148,14 @@ dependencies:
|
|
156
148
|
requirements:
|
157
149
|
- - "~>"
|
158
150
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.
|
151
|
+
version: 0.81.0
|
160
152
|
type: :development
|
161
153
|
prerelease: false
|
162
154
|
version_requirements: !ruby/object:Gem::Requirement
|
163
155
|
requirements:
|
164
156
|
- - "~>"
|
165
157
|
- !ruby/object:Gem::Version
|
166
|
-
version: 0.
|
158
|
+
version: 0.81.0
|
167
159
|
- !ruby/object:Gem::Dependency
|
168
160
|
name: yard
|
169
161
|
requirement: !ruby/object:Gem::Requirement
|