sensu-plugins-network-interface 0.1.3 → 0.1.4

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
  SHA1:
3
- metadata.gz: c4fc90cff8cbd8d41fcc836513b63e380a1f0b8b
4
- data.tar.gz: 16c08b831f0d14287abf7db42034bb11f24187ca
3
+ metadata.gz: a9df281e905ea0881d3db6754b1f69db6c56bbcf
4
+ data.tar.gz: 59f0f9d9f364b74e7406d6e9dddd49af101a9201
5
5
  SHA512:
6
- metadata.gz: e41795bccea80aba209f0c574ca91f39da7f39567e3af8a3741e464f04e75072c2542e077d7047444a207d02621611848f8e4aab5035b85455f82cdb9951233d
7
- data.tar.gz: 4b3a3937c571390f04b1b2b3047c6e0f4c207db20fd53566617a593f37147ece7a91eb094f9b6ade9040d25dccaeee6027b872f025be61befbd3222463fae3c3
6
+ metadata.gz: e48cdcc0e40760c5a41859fde1638829dddf41484de2c72d6b18aa70d164c9937459b031a5553ef769e8060aca9e55da4a34c23f8aa24e72400d28a1c5672f2b
7
+ data.tar.gz: 621f255afd3d7b77ac9c08c6bbcf758d54c89d6d58a945db58e22c2a7ab9f36e1a0c0ccbba58eecf71563b2702d8e0d6522e7ddaef93622630f43ad29f186b6c
data/CHANGELOG.md CHANGED
@@ -5,6 +5,18 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
5
5
 
6
6
  ## Unreleased
7
7
 
8
- ## [0.0.1] - 2015-12-28
8
+ ## [0.1.4] - 2015-12-29
9
+ ### Added
10
+ - Added ifcfg-<interface> support
11
+
12
+ ## [0.1.3] - 2015-12-28
13
+ ### Added
14
+ - Requiring json globally
15
+
16
+ ## [0.1.2] - 2015-12-28
17
+ ### Added
18
+ - Defaulting @json_config to empty hash
19
+
20
+ ## [0.1.1] - 2015-12-28
9
21
  ### Added
10
22
  - Initial release
data/README.md CHANGED
@@ -25,8 +25,8 @@ Usage: check-network-interface.rb (options)
25
25
  -w, --warn Warn instead of throwing a critical failure
26
26
  ```
27
27
 
28
- By default, command line option parameters are global to all interfaces. However, each interface can override the defaults in an optional JSON configuration file which must be placed
29
- in the same location as the plugin.
28
+ By default, command line option parameters are global to all interfaces. However, each interface can override the defaults either in their ifcfg configuration files (e.g. MTU) or
29
+ in an optional JSON configuration file which must be placed in the same location as the plugin.
30
30
 
31
31
  JSON example:
32
32
 
@@ -16,7 +16,7 @@ class CheckNetworkInterface < Sensu::Plugin::Check::CLI
16
16
  :proc => proc { |a| a.split(',') },
17
17
  :default => []
18
18
 
19
- option :rinterface,
19
+ option :interface_regex,
20
20
  :description => "Comma separated list of interfaces to check (regex)",
21
21
  :short => "-I <INTERFACES>",
22
22
  :proc => proc { |a| a.split(',') },
@@ -28,7 +28,7 @@ class CheckNetworkInterface < Sensu::Plugin::Check::CLI
28
28
  :proc => proc { |a| a.split(',') },
29
29
  :default => []
30
30
 
31
- option :rignore_interface,
31
+ option :ignore_interface_regex,
32
32
  :description => "Comma separated list of Interfaces to ignore (regex)",
33
33
  :short => "-X <INTERFACES>",
34
34
  :proc => proc { |a| a.split(',') },
@@ -95,9 +95,9 @@ class CheckNetworkInterface < Sensu::Plugin::Check::CLI
95
95
  next if config[:ignore_interface].include?(interface)
96
96
  end
97
97
 
98
- if config[:rignore_interface].size > 0
98
+ if config[:ignore_interface_regex].size > 0
99
99
  b = false
100
- config[:rignore_interface].each do |ignore_interface|
100
+ config[:ignore_interface_regex].each do |ignore_interface|
101
101
  if interface =~ Regexp.new(ignore_interface)
102
102
  b = true
103
103
  break
@@ -110,10 +110,10 @@ class CheckNetworkInterface < Sensu::Plugin::Check::CLI
110
110
  next unless config[:interface].include?(interface)
111
111
  end
112
112
 
113
- if config[:rinterface].size > 0
113
+ if config[:interface_regex].size > 0
114
114
  b = true
115
- config[:rinterface].each do |rinterface|
116
- if interface =~ Regexp.new(rinterface)
115
+ config[:interface_regex].each do |interface_regex|
116
+ if interface =~ Regexp.new(interface_regex)
117
117
  b = false
118
118
  break
119
119
  end
@@ -192,11 +192,45 @@ class CheckNetworkInterface < Sensu::Plugin::Check::CLI
192
192
  problems = 0
193
193
 
194
194
  @interfaces.each do |interface|
195
+ ifcfg = nil
196
+
197
+ # RHEL
198
+ if File.exists?("/etc/sysconfig/network-scripts/ifcfg-#{interface}")
199
+ ifcfg = "/etc/sysconfig/network-scripts/ifcfg-#{interface}"
200
+ # SuSE
201
+ elsif File.exists?("/etc/sysconfig/network/ifcfg-#{interface}")
202
+ ifcfg = "/etc/sysconfig/network/ifcfg-#{interface}"
203
+ end
204
+
205
+ interface_config = {}
206
+ if ifcfg
207
+ File.read(ifcfg).split("\n").reject { |i| i =~ /^#/ or i =~ /^\s*$/ }.each do |i|
208
+ k, v = i.split('=')
209
+ case k
210
+ when 'mtu', 'txqueuelen'
211
+ v = v.to_i
212
+ end
213
+ interface_config[k] = v
214
+ end
215
+ end
216
+
195
217
  get_info(interface).each do |metric, value|
196
218
  check_name = "network-interface-#{interface}-#{metric}"
197
219
 
198
220
  if value != nil
199
- if @json_config.has_key?('interfaces') and @json_config['interfaces'].has_key?(interface) and @json_config['interfaces'][interface].has_key?(metric)
221
+ if interface_config.has_key(metric)
222
+ if value != interface_config[metric]
223
+ msg = "Expected #{metric} #{interface_config[metric]} but found #{value} on #{interface}"
224
+ if config[:warn]
225
+ send_warning(check_name, msg)
226
+ else
227
+ send_critical(check_name, msg)
228
+ end
229
+ problems += 1
230
+ else
231
+ send_ok(check_name, "Found expected #{metric} (#{interface_config[metric]}) on #{interface}")
232
+ end
233
+ elsif @json_config.has_key?('interfaces') and @json_config['interfaces'].has_key?(interface) and @json_config['interfaces'][interface].has_key?(metric)
200
234
  if value != @json_config['interfaces'][interface][metric]
201
235
  msg = "Expected #{metric} #{@json_config['interfaces'][interface][metric]} but found #{value} on #{interface}"
202
236
  if config[:warn]
@@ -2,7 +2,7 @@ module SensuPluginsNetworkInterface
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- PATCH = 3
5
+ PATCH = 4
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-network-interface
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Cerutti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-28 00:00:00.000000000 Z
11
+ date: 2015-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-plugin