sensu-plugins-network-checks 2.2.0 → 2.3.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b9838fcbdec2087aba8d8fb8de4b7dc319d7e529cda950b9143ed6e3410f770
|
4
|
+
data.tar.gz: dfee7221ae2a11f4525b9c4afa97da7b375b9a031a19bdf9514b924867844d13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 629163838de440d93eb3b21dab0976fdbeae3d6aac460b32f7d9a1157f45049595703d5b4462b4232e10ed50facaed260a73597af3eb3950952b8325ab46068f
|
7
|
+
data.tar.gz: e769e77553edd10d09bd1ff8c56db4c43fb2a6451ebc9614cb5e2c71c0ed53d4f1233701fe5993ff9a7b6e5104015df89b64cb835138b032cb33f9a0b866f411
|
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
|
+
## [2.3.0] - 2018-02-09
|
9
|
+
### Changed
|
10
|
+
- check-whois-domain-expiration.rb, check-whois-domain-expiration-multi.rb and check-jsonwhois-domain-expiration.rb: better resilience against errors, better reporting of erroneous responses (@DrMurx)
|
11
|
+
|
8
12
|
## [2.2.0] - 2018-02-02
|
9
13
|
### Added
|
10
14
|
- check-ports.rb: support for multiple hosts (@DDSloan96)
|
@@ -194,7 +198,8 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugin
|
|
194
198
|
|
195
199
|
* initial release, same as community repo
|
196
200
|
|
197
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-network-checks/compare/2.
|
201
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-network-checks/compare/2.3.0...HEAD
|
202
|
+
[2.3.0]: https://github.com/sensu-plugins/sensu-plugins-network-checks/compare/2.2.0...2.3.0
|
198
203
|
[2.2.0]: https://github.com/sensu-plugins/sensu-plugins-network-checks/compare/2.1.1...2.2.0
|
199
204
|
[2.1.1]: https://github.com/sensu-plugins/sensu-plugins-network-checks/compare/2.1.0...2.1.1
|
200
205
|
[2.1.0]: https://github.com/sensu-plugins/sensu-plugins-network-checks/compare/2.0.1...2.1.0
|
@@ -61,6 +61,21 @@ class JSONWhoisDomainExpirationCheck < Sensu::Plugin::Check::CLI
|
|
61
61
|
default: 7,
|
62
62
|
description: 'Critical if a domain expires in fewer than DAYS days'
|
63
63
|
|
64
|
+
option :'ignore-errors',
|
65
|
+
short: '-i',
|
66
|
+
long: '--ignore-errors',
|
67
|
+
boolean: true,
|
68
|
+
default: false,
|
69
|
+
description: 'Ignore connection or parsing errors'
|
70
|
+
|
71
|
+
option :'report-errors',
|
72
|
+
short: '-r LEVEL',
|
73
|
+
long: '--report-errors LEVEL',
|
74
|
+
proc: proc(&:to_sym),
|
75
|
+
in: %i(unknown warning critical),
|
76
|
+
default: :unknown,
|
77
|
+
description: 'Level for reporting connection or parsing errors'
|
78
|
+
|
64
79
|
option :help,
|
65
80
|
short: '-h',
|
66
81
|
long: '--help',
|
@@ -77,19 +92,26 @@ class JSONWhoisDomainExpirationCheck < Sensu::Plugin::Check::CLI
|
|
77
92
|
domains = config[:domain].split(',')
|
78
93
|
warning_days = config[:warning].to_i
|
79
94
|
critical_days = config[:critical].to_i
|
80
|
-
results = {
|
81
|
-
|
82
|
-
|
83
|
-
|
95
|
+
results = {
|
96
|
+
critical: {},
|
97
|
+
warning: {},
|
98
|
+
ok: {},
|
99
|
+
unknown: {}
|
100
|
+
}
|
84
101
|
|
85
102
|
domains.each do |domain|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
103
|
+
begin
|
104
|
+
expires_on = get_domain_expiration(domain)
|
105
|
+
domain_result = (expires_on - DateTime.now).to_i
|
106
|
+
if domain_result <= critical_days
|
107
|
+
results[:critical][domain] = domain_result
|
108
|
+
elsif domain_result <= warning_days
|
109
|
+
results[:warning][domain] = domain_result
|
110
|
+
else
|
111
|
+
results[:ok][domain] = domain_result
|
112
|
+
end
|
113
|
+
rescue
|
114
|
+
results[:unknown][domain] = 'Connection or parsing error' unless config[:'ignore-errors']
|
93
115
|
end
|
94
116
|
end
|
95
117
|
results
|
@@ -109,15 +131,23 @@ class JSONWhoisDomainExpirationCheck < Sensu::Plugin::Check::CLI
|
|
109
131
|
http.request(req)
|
110
132
|
end
|
111
133
|
|
112
|
-
|
134
|
+
json = JSON.parse(res.body)
|
135
|
+
DateTime.parse(json['expires_on'])
|
113
136
|
end
|
114
137
|
|
115
138
|
def run
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
139
|
+
results = expiration_results
|
140
|
+
|
141
|
+
warn_results = results[:critical].merge(results[:warning]).map { |u, v| "#{u} (#{v} days left)" }
|
142
|
+
unknown_results = results[:unknown].map { |u, v| "#{u} (#{v})" }
|
143
|
+
message warn_results.concat(unknown_results).join(', ')
|
144
|
+
|
145
|
+
if !results[:critical].empty? || (!results[:unknown].empty? && config[:'report-errors'] == :critical)
|
146
|
+
critical
|
147
|
+
elsif !results[:warning].empty? || (!results[:unknown].empty? && config[:'report-errors'] == :warning)
|
148
|
+
warning
|
149
|
+
elsif !results[:unknown].empty?
|
150
|
+
unknown
|
121
151
|
else
|
122
152
|
ok 'No domains expire in the near term'
|
123
153
|
end
|
@@ -55,6 +55,21 @@ class WhoisDomainExpirationCheck < Sensu::Plugin::Check::CLI
|
|
55
55
|
default: 7,
|
56
56
|
description: 'Critical if fewer than DAYS away'
|
57
57
|
|
58
|
+
option :'ignore-errors',
|
59
|
+
short: '-i',
|
60
|
+
long: '--ignore-errors',
|
61
|
+
boolean: true,
|
62
|
+
default: false,
|
63
|
+
description: 'Ignore connection or parsing errors'
|
64
|
+
|
65
|
+
option :'report-errors',
|
66
|
+
short: '-r LEVEL',
|
67
|
+
long: '--report-errors LEVEL',
|
68
|
+
proc: proc(&:to_sym),
|
69
|
+
in: %i(unknown warning critical),
|
70
|
+
default: :unknown,
|
71
|
+
description: 'Level for reporting connection or parsing errors'
|
72
|
+
|
58
73
|
option :timeout,
|
59
74
|
short: '-t SECONDS',
|
60
75
|
long: '--timeout SECONDS',
|
@@ -77,44 +92,60 @@ class WhoisDomainExpirationCheck < Sensu::Plugin::Check::CLI
|
|
77
92
|
domains = config[:domain].split(',')
|
78
93
|
warning_days = config[:warning].to_i
|
79
94
|
critical_days = config[:critical].to_i
|
80
|
-
results = {}
|
81
|
-
results['critical'] = {}
|
82
|
-
results['warning'] = {}
|
83
|
-
results['ok'] = {}
|
84
95
|
max_retries = 4
|
85
96
|
|
97
|
+
results = {
|
98
|
+
critical: {},
|
99
|
+
warning: {},
|
100
|
+
ok: {},
|
101
|
+
unknown: {}
|
102
|
+
}
|
103
|
+
whois = Whois::Client.new(timeout: config[:timeout])
|
104
|
+
|
86
105
|
domains.each do |domain|
|
87
|
-
whois = Whois::Client.new(timeout: config[:timeout])
|
88
106
|
begin
|
89
107
|
tries ||= 0
|
90
108
|
whois_result = whois.lookup(domain).parser
|
91
109
|
rescue Timeout::Error, Errno::ECONNRESET, Whois::ConnectionError
|
92
110
|
tries += 1
|
93
|
-
tries < max_retries
|
111
|
+
if tries < max_retries
|
112
|
+
retry
|
113
|
+
else
|
114
|
+
results[:unknown][domain] = 'Connection error' unless config[:'ignore-errors']
|
115
|
+
next
|
116
|
+
end
|
94
117
|
end
|
95
118
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
domain_result = (DateTime.parse(whois_result.expires_on.to_s) - DateTime.now).to_i
|
119
|
+
begin
|
120
|
+
expires_on = DateTime.parse(whois_result.expires_on.to_s)
|
121
|
+
domain_result = (expires_on - DateTime.now).to_i
|
100
122
|
if domain_result <= critical_days
|
101
|
-
results[
|
123
|
+
results[:critical][domain] = domain_result
|
102
124
|
elsif domain_result <= warning_days
|
103
|
-
results[
|
125
|
+
results[:warning][domain] = domain_result
|
104
126
|
else
|
105
|
-
results[
|
127
|
+
results[:ok][domain] = domain_result
|
106
128
|
end
|
129
|
+
rescue
|
130
|
+
results[:unknown][domain] = 'Parsing error' unless config[:'ignore-errors']
|
107
131
|
end
|
108
132
|
end
|
109
133
|
results
|
110
134
|
end
|
111
135
|
|
112
136
|
def run
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
137
|
+
results = expiration_results
|
138
|
+
|
139
|
+
warn_results = results[:critical].merge(results[:warning]).map { |u, v| "#{u} (#{v} days left)" }
|
140
|
+
unknown_results = results[:unknown].map { |u, v| "#{u} (#{v})" }
|
141
|
+
message warn_results.concat(unknown_results).join(', ')
|
142
|
+
|
143
|
+
if !results[:critical].empty? || (!results[:unknown].empty? && config[:'report-errors'] == :critical)
|
144
|
+
critical
|
145
|
+
elsif !results[:warning].empty? || (!results[:unknown].empty? && config[:'report-errors'] == :warning)
|
146
|
+
warning
|
147
|
+
elsif !results[:unknown].empty?
|
148
|
+
unknown
|
118
149
|
else
|
119
150
|
ok 'No domains expire in the near term'
|
120
151
|
end
|
@@ -60,27 +60,22 @@ class WhoisDomainExpirationCheck < Sensu::Plugin::Check::CLI
|
|
60
60
|
show_options: true,
|
61
61
|
exit: 0
|
62
62
|
|
63
|
-
def
|
64
|
-
|
65
|
-
|
66
|
-
|
63
|
+
def run
|
64
|
+
whois = Whois.whois(config[:domain])
|
65
|
+
|
66
|
+
expires_on = DateTime.parse(whois.parser.expires_on.to_s)
|
67
|
+
num_days = (expires_on - DateTime.now).to_i
|
68
|
+
|
69
|
+
message "#{config[:domain]} expires on #{expires_on.strftime('%m-%d-%Y')} (#{num_days} days away)"
|
70
|
+
|
71
|
+
if num_days <= config[:warning].to_i
|
67
72
|
critical
|
68
|
-
elsif num_days <=
|
73
|
+
elsif num_days <= config[:critical].to_i
|
69
74
|
warning
|
70
75
|
else
|
71
76
|
ok
|
72
77
|
end
|
73
|
-
|
74
|
-
|
75
|
-
def initialize
|
76
|
-
super()
|
77
|
-
whois = Whois.whois(config[:domain])
|
78
|
-
@expires_on = DateTime.parse(whois.parser.expires_on.to_s)
|
79
|
-
@num_days = (@expires_on - DateTime.now).to_i
|
80
|
-
end
|
81
|
-
|
82
|
-
def run
|
83
|
-
message "#{config[:domain]} expires on #{@expires_on.strftime('%m-%d-%Y')} (#{@num_days} days away)"
|
84
|
-
check_days @num_days
|
78
|
+
rescue
|
79
|
+
unknown "#{config[:domain]} can't be checked"
|
85
80
|
end
|
86
81
|
end
|