sensu-plugins-zfs 1.1.2 → 1.2.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 +4 -4
- data/README.md +6 -1
- data/bin/check-zpool.rb +16 -2
- data/lib/sensu-plugins-zfs/version.rb +1 -1
- data/lib/sensu-plugins-zfs/zpool.rb +21 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9819878e1bc706d727fdb27a4f10ab04d36bea72
|
4
|
+
data.tar.gz: dcc0cf15963fab400f4b105d819b149bbc36d650
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33cff7c92b5771efc2623422386722a66c13830ca0c500b9177d539f0adc4f537e914d4c5e6a8742b193863e14833e5418cd404bac7a073a941540048ad05007
|
7
|
+
data.tar.gz: d74a8dec3268d5ede33575824f25c586dfca6f78c1a982b5af876178f89d3795605300604aa26c5b704bb47bb4b99f16ce683b95d55da73759646bee68c9be5d
|
data/README.md
CHANGED
@@ -10,6 +10,8 @@ Checks if the zpool state is ONLINE and wether there has been any errors on
|
|
10
10
|
vdevs.
|
11
11
|
|
12
12
|
- `-z, --zpool` What zpool to check. If omitted, we check all zpools.
|
13
|
+
- `-c, --capacity-warn` Capacity threshold for when to warn. (default 80)
|
14
|
+
- `-C, --capacity-crit` Capacity threshold for when to crit. (default 90)
|
13
15
|
|
14
16
|
## Installation
|
15
17
|
[Installation and setup](http://sensu-plugins.io/docs/installation_instructions.html)
|
@@ -20,8 +22,11 @@ At this time ideas for additional checks/metrics would be very much appreciated.
|
|
20
22
|
|
21
23
|
I have a few ideas that would be nice:
|
22
24
|
|
25
|
+
- [x] Check for zpool state
|
26
|
+
- [x] Check for vdev errors
|
27
|
+
- [x] Check for pool capacity
|
23
28
|
- [ ] Check that disks have been scrubbed recently
|
24
|
-
- [ ]
|
29
|
+
- [ ] Metric for disk utilization
|
25
30
|
|
26
31
|
Bug reports and pull requests are welcome on GitHub at https://github.com/blacksails/sensu-plugins-zfs.
|
27
32
|
|
data/bin/check-zpool.rb
CHANGED
@@ -12,15 +12,21 @@ class CheckZPool < Sensu::Plugin::Check::CLI
|
|
12
12
|
option :cap_warn,
|
13
13
|
short: "-c PERCENTAGE",
|
14
14
|
long: "--capacity-warn PERCENTAGE",
|
15
|
-
description: "Warn if capacity is above this threshold",
|
15
|
+
description: "Warn if capacity in percent is above this threshold",
|
16
16
|
default: 80
|
17
17
|
|
18
18
|
option :cap_crit,
|
19
19
|
short: "-C PERCENTAGE",
|
20
20
|
long: "--capacity-crit PERCENTAGE",
|
21
|
-
description: "Crit if capacity is above this threshold",
|
21
|
+
description: "Crit if capacity in percent is above this threshold",
|
22
22
|
default: 90
|
23
23
|
|
24
|
+
option :scrubbing_interval,
|
25
|
+
short: "-s DAYS",
|
26
|
+
long: "--scrubbing-interval DAYS",
|
27
|
+
description: "Warn it is more than this number of days since last scrub",
|
28
|
+
default: 7
|
29
|
+
|
24
30
|
def run
|
25
31
|
zpools = []
|
26
32
|
if config[:zpool]
|
@@ -32,6 +38,7 @@ class CheckZPool < Sensu::Plugin::Check::CLI
|
|
32
38
|
check_state zp
|
33
39
|
check_vdevs zp
|
34
40
|
check_capacity zp
|
41
|
+
check_recently_scrubbed zp
|
35
42
|
end
|
36
43
|
if config[:zpool]
|
37
44
|
ok "zpool #{config[:zpool]} is ok"
|
@@ -62,4 +69,11 @@ class CheckZPool < Sensu::Plugin::Check::CLI
|
|
62
69
|
warning "capacity for zpool #{zp.name} is above #{config[:cap_warn]}% (currently #{zp.capacity}%)"
|
63
70
|
end
|
64
71
|
end
|
72
|
+
|
73
|
+
def check_recently_scrubbed(zp)
|
74
|
+
last_scrub = zp.scrubbed_at
|
75
|
+
if last_scrub > Time.now - 60 * 60 * 24 * config[:scrubbing_interval]
|
76
|
+
warning "It is more than #{config[:scrubbing_interval]} days since zpool #{zp.name} was scrubbed. Last scrubbed #{last_scrub.to_s}"
|
77
|
+
end
|
78
|
+
end
|
65
79
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require "time"
|
2
|
+
|
1
3
|
module SensuPluginsZFS
|
2
4
|
class ZFS
|
3
5
|
def self.zpools
|
@@ -13,12 +15,21 @@ module SensuPluginsZFS
|
|
13
15
|
def initialize(name)
|
14
16
|
@name = name
|
15
17
|
@state = %x[sudo zpool status #{name} | grep '^ state: ' | cut -d ' ' -f 3].strip
|
16
|
-
@capacity = %x[zpool get -H capacity #{@name} | awk '{print $3}' | cut -d '%' -f1].strip.to_i
|
18
|
+
@capacity = %x[sudo zpool get -H capacity #{@name} | awk '{print $3}' | cut -d '%' -f1].strip.to_i
|
17
19
|
@vdevs = create_vdevs name
|
18
20
|
end
|
19
21
|
|
20
22
|
def ok?
|
21
|
-
|
23
|
+
@state == "ONLINE"
|
24
|
+
end
|
25
|
+
|
26
|
+
def scrubbed_at
|
27
|
+
if never_scrubbed?
|
28
|
+
return Time.at(0)
|
29
|
+
elsif scrub_in_progress?
|
30
|
+
return Time.now
|
31
|
+
end
|
32
|
+
Time.parse %[zpool status tank | grep '^ scan: scrub' | awk '{print $11" "$12" "$13" "$14" "$15}'].strip
|
22
33
|
end
|
23
34
|
|
24
35
|
private
|
@@ -30,6 +41,14 @@ module SensuPluginsZFS
|
|
30
41
|
VDev.new(self, arr[0], arr[1], arr[2].to_i, arr[3].to_i, arr[4].to_i)
|
31
42
|
end
|
32
43
|
end
|
44
|
+
|
45
|
+
def never_scrubbed?
|
46
|
+
%x[sudo zpool status #{@name} | egrep -c "none requested"].strip.to_i == 1
|
47
|
+
end
|
48
|
+
|
49
|
+
def scrub_in_progress?
|
50
|
+
%x[sudo zpool status #{@name} | egrep -c "scrub in progress|resilver"].strip.to_i == 1
|
51
|
+
end
|
33
52
|
end
|
34
53
|
|
35
54
|
class VDev
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-zfs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin Nørgaard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|