sensu-plugins-zfs 0.3.3 → 0.4.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: 01d09327916fe83b108f9a930f3733ba0918f4b9
4
- data.tar.gz: 20267b8956756b6431e1fe9bd50037bef224d513
3
+ metadata.gz: 15bc681d790d66bbc7afae490801a3a75e6cc07b
4
+ data.tar.gz: f81c01212727845a3b7ee578f86722fe45f01918
5
5
  SHA512:
6
- metadata.gz: 7446e08fb17d34d1ab8f3a4f43df6a1706af61f95010d0e473f4ff5972b88e50fcba7d5849fc7e211041d0e8d4755f590760327dd01eb6c838b2eb432f5968ea
7
- data.tar.gz: d22d45e61fc048ee671c147d8aab879a383b9a76d6f92c52765c92a4b5ece4e993143fc5fcce8f5f0c6c1f0f2b638133cf777bc631e0b4e3ae8cfe10a5b32506
6
+ metadata.gz: 7f56f6571570303705201c833500d86b7af9826d6aa0fc04f019346c081bda6fd0c42b3148e64d46f614babdb54d88314e63715daf59948dd4236ffb189d4528
7
+ data.tar.gz: 8afeaab356b5c1a8bc7d2576cc737151e9783c069038a6acabef6b9334464b7305c8dc1b3e2c93421455e3c37130b18eee7cf58272f3d0851101f6b0742144db
data/bin/check-zpool.rb CHANGED
@@ -7,10 +7,28 @@ class CheckZPool < Sensu::Plugin::Check::CLI
7
7
  def run
8
8
  zpools = SensuPluginsZFS::ZFS.zpools
9
9
  zpools.each do |zp|
10
+ check_state zp
11
+ check_vdevs zp
10
12
  unless zp.ok?
11
13
  critical "zpool #{zp.name} has state #{zp.state}"
12
14
  end
13
15
  end
14
16
  ok "all zpools are ok"
15
17
  end
18
+
19
+ private
20
+
21
+ def check_state(zp)
22
+ unless zp.ok?
23
+ critical "zpool #{zp.name} has state #{zp.state}"
24
+ end
25
+ end
26
+
27
+ def check_vdevs(zp)
28
+ zp.vdevs.each do |vd|
29
+ unless vd.ok?
30
+ warning "vdev #{vd.name} of zpool #{vd.zpool.name} has errors"
31
+ end
32
+ end
33
+ end
16
34
  end
@@ -1,3 +1,3 @@
1
1
  module SensuPluginsZFS
2
- VERSION = "0.3.3"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -1,24 +1,53 @@
1
1
  module SensuPluginsZFS
2
2
  class ZFS
3
3
  def self.zpools
4
- res = []
5
- %x[sudo zpool list -H -o name].each_line('') do |name|
6
- res << ZPool.new(name.strip)
4
+ %x[sudo zpool list -H -o name].lines('').map do |l|
5
+ ZPool.new(l.strip)
7
6
  end
8
7
  res
9
8
  end
10
9
  end
11
10
 
12
11
  class ZPool
13
- attr_reader :state, :name
12
+ attr_reader :state, :name, :vdevs
14
13
 
15
14
  def initialize(name)
16
15
  @name = name
17
16
  @state = %x[sudo zpool status #{name} | grep '^ state: ' | cut -d ' ' -f 3].strip
17
+ @vdevs = create_vdevs
18
18
  end
19
19
 
20
20
  def ok?
21
21
  return @state == "ONLINE"
22
22
  end
23
+
24
+ private
25
+
26
+ def create_vdevs
27
+ cmd_out = %x[sudo zpool status #{@name} | grep ONLINE | grep -v state | awk '{print $1 " " $2 " " $3 " " $4 " " $5}']
28
+ cmd_out.lines('').map do |l|
29
+ arr = l.strip.split(' ')
30
+ VDev.new(self, arr[0], arr[1], arr[2].to_i, arr[3].to_i, arr[4].to_i)
31
+ end
32
+ end
33
+ end
34
+
35
+ class VDev
36
+ attr_reader :zpool, :name, :read, :write, :chksum
37
+ def initialize(zpool, name, state, read, write, chksum)
38
+ @zpool = zpool
39
+ @state = state
40
+ @name = name
41
+ @read = read
42
+ @write = write
43
+ @chksum = chksum
44
+ end
45
+
46
+ def ok?
47
+ return @state =~ /(ONLINE|AVAIL)/ &&
48
+ @read == 0 &&
49
+ @write == 0 &&
50
+ @checksum == 0
51
+ end
23
52
  end
24
53
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-zfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Nørgaard