sensu-plugins-zfs 1.2.4 → 2.0.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
  SHA1:
3
- metadata.gz: b582e3c3307fe6a7efb705b25e0d7a0281541db1
4
- data.tar.gz: 1f9571ce395fdb2f80afe338e1a9a02e64e717c8
3
+ metadata.gz: be58d3fc1e0329cd050171f9042b7d59b962907f
4
+ data.tar.gz: e7c9bcbb0b31d44d42cbea045026a22ff7fcec18
5
5
  SHA512:
6
- metadata.gz: 450af5e3322705e90c4fb69c1f4bb2c89a6400c27f3093c7d949c0dc1ba28a2a56fa3997331eec0eac8e5fd2873f77970dcbb9d52a2174397b0011b87b8b3fed
7
- data.tar.gz: 3379ecb09197bf7fef3092d6adb1583ebba7221c60df9cdf799351c6f05f9b0de8fd7481826e4f3d16f646e260fde9877c18ceffede83cf27e03f3ce4aa8f4be
6
+ metadata.gz: ded2ed80ebc6b9ad85f81b6e3378627ec105505087da6b89d66c0dbb10c083d70ca97a14248c268663d74b9bceaed100c39b3ff0449fa65ce12566ea6bf243de
7
+ data.tar.gz: ce55792e7d806196ca8ce33918edbd3cbc06a91555432ddbf2b3b5501667ab013865bfe3199c52ca46d9fb3c42955266ac3bc1c2014514278e693d0b1426a3e6
data/LICENSE CHANGED
@@ -1,6 +1,7 @@
1
1
  The MIT License (MIT)
2
2
 
3
3
  Copyright (c) 2017 Benjamin Nørgaard
4
+ Copyright (c) 2017 Sensu Community Plugins
4
5
 
5
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
7
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  Sensu plugin for zfs health checks.
4
4
 
5
+ [![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-zfs.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-zfs)
6
+ [![Gem Version](https://badge.fury.io/rb/sensu-plugins-zfs.svg)](http://badge.fury.io/rb/sensu-plugins-zfs)
7
+ [![Dependency Status](https://gemnasium.com/sensu-plugins/sensu-plugins-zfs.svg)](https://gemnasium.com/sensu-plugins/sensu-plugins-zfs)
8
+ [![Community Slack](https://slack.sensu.io/badge.svg)](https://slack.sensu.io/badge)
9
+
5
10
  ## Checks
6
11
 
7
12
  ### check-zpool.rb
@@ -35,10 +40,9 @@ I have a few ideas that would be nice:
35
40
  - [x] Check that disks have been scrubbed recently
36
41
  - [ ] Metric for disk utilization
37
42
 
38
- Bug reports and pull requests are welcome on GitHub at https://github.com/blacksails/sensu-plugins-zfs.
43
+ Bug reports and pull requests are welcome on GitHub at https://github.com/sensu-plugins/sensu-plugins-zfs.
39
44
 
40
45
 
41
46
  ## License
42
47
 
43
48
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
44
-
@@ -5,29 +5,31 @@ require 'sensu-plugins-zfs'
5
5
 
6
6
  class CheckZPool < Sensu::Plugin::Check::CLI
7
7
  option :zpool,
8
- short: "-z ZPOOL",
9
- long: "--zpool ZPOOL",
10
- description: "Name of zpool to check. If omitted, we check all zpools"
8
+ short: '-z ZPOOL',
9
+ long: '--zpool ZPOOL',
10
+ description: 'Name of zpool to check. If omitted, we check all zpools'
11
11
 
12
12
  option :cap_warn,
13
- short: "-c PERCENTAGE",
14
- long: "--capacity-warn PERCENTAGE",
15
- description: "Warn if capacity in percent is above this threshold",
13
+ short: '-c PERCENTAGE',
14
+ long: '--capacity-warn PERCENTAGE',
15
+ description: 'Warn if capacity in percent is above this threshold',
16
16
  default: 80
17
17
 
18
18
  option :cap_crit,
19
- short: "-C PERCENTAGE",
20
- long: "--capacity-crit PERCENTAGE",
21
- description: "Crit if capacity in percent is above this threshold",
19
+ short: '-C PERCENTAGE',
20
+ long: '--capacity-crit PERCENTAGE',
21
+ description: 'Crit if capacity in percent is above this threshold',
22
22
  default: 90
23
23
 
24
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",
25
+ short: '-s DAYS',
26
+ long: '--scrubbing-interval DAYS',
27
+ description: 'Warn it is more than this number of days since last scrub',
28
28
  default: 7
29
29
 
30
30
  def run
31
+ @warnings = []
32
+ @criticals = []
31
33
  zpools = []
32
34
  if config[:zpool]
33
35
  zpools << SensuPluginsZFS::ZPool.new(config[:zpool])
@@ -36,44 +38,46 @@ class CheckZPool < Sensu::Plugin::Check::CLI
36
38
  end
37
39
  zpools.each do |zp|
38
40
  check_state zp
39
- check_vdevs zp
40
41
  check_capacity zp
42
+ check_vdevs zp
41
43
  check_recently_scrubbed zp
42
44
  end
45
+ puts @criticals
46
+ puts @warnings
47
+ critical @criticals.join(', ') unless @criticals.empty?
48
+ warning @warnings.join(', ') unless @warnings.empty?
43
49
  if config[:zpool]
44
50
  ok "zpool #{config[:zpool]} is ok"
45
51
  end
46
- ok "all zpools are ok"
52
+ ok 'all zpools are ok'
47
53
  end
48
54
 
49
55
  private
50
56
 
51
57
  def check_state(zp)
52
- unless zp.ok?
53
- critical "zpool #{zp.name} has state #{zp.state}"
54
- end
58
+ @criticals << "zpool #{zp.name} has state #{zp.state}" unless zp.ok?
55
59
  end
56
60
 
57
61
  def check_vdevs(zp)
58
62
  zp.vdevs.each do |vd|
59
63
  unless vd.ok?
60
- warning "vdev #{vd.name} of zpool #{vd.zpool.name} has errors"
64
+ @warnings << "vdev #{vd.name} of zpool #{vd.zpool.name} has errors"
61
65
  end
62
66
  end
63
67
  end
64
68
 
65
69
  def check_capacity(zp)
66
70
  if zp.capacity > config[:cap_crit].to_i
67
- critical "capacity for zpool #{zp.name} is above #{config[:cap_crit]}% (currently #{zp.capacity}%)"
71
+ @criticals << "capacity for zpool #{zp.name} is above #{config[:cap_crit]}% (currently #{zp.capacity}%)"
68
72
  elsif zp.capacity > config[:cap_warn].to_i
69
- warning "capacity for zpool #{zp.name} is above #{config[:cap_warn]}% (currently #{zp.capacity}%)"
73
+ @warnings << "capacity for zpool #{zp.name} is above #{config[:cap_warn]}% (currently #{zp.capacity}%)"
70
74
  end
71
75
  end
72
76
 
73
77
  def check_recently_scrubbed(zp)
74
78
  last_scrub = zp.scrubbed_at
75
- if last_scrub < Time.now - 60 * 60 * 24 * config[:scrubbing_interval].to_i
76
- warning "It is more than #{config[:scrubbing_interval]} days since zpool #{zp.name} was scrubbed. Last scrubbed #{last_scrub.to_s}"
79
+ if last_scrub < Time.now - 60 * 60 * 24 * config[:scrubbing_interval].to_i # rubocop:disable Style/GuardClause
80
+ @warnings << "It is more than #{config[:scrubbing_interval]} days since zpool #{zp.name} was scrubbed. Last scrubbed #{last_scrub}"
77
81
  end
78
82
  end
79
83
  end
@@ -1 +1 @@
1
- require "sensu-plugins-zfs/zpool"
1
+ require 'sensu-plugins-zfs/zpool'
@@ -1,3 +1,9 @@
1
1
  module SensuPluginsZFS
2
- VERSION = "1.2.4"
2
+ module Version
3
+ MAJOR = 2
4
+ MINOR = 0
5
+ PATCH = 0
6
+
7
+ VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
+ end
3
9
  end
@@ -1,9 +1,9 @@
1
- require "time"
1
+ require 'time'
2
2
 
3
3
  module SensuPluginsZFS
4
4
  class ZFS
5
5
  def self.zpools
6
- %x[sudo zpool list -H -o name].lines('').map do |l|
6
+ `sudo zpool list -H -o name`.lines.map do |l|
7
7
  ZPool.new(l.strip)
8
8
  end
9
9
  end
@@ -14,46 +14,43 @@ module SensuPluginsZFS
14
14
 
15
15
  def initialize(name)
16
16
  @name = name
17
- @state = %x[sudo zpool status #{name} | grep '^ state: ' | cut -d ' ' -f 3].strip
18
- @capacity = %x[sudo zpool get -H capacity #{@name} | awk '{print $3}' | cut -d '%' -f1].strip.to_i
17
+ @state = `sudo zpool status #{name} | grep '^ state: ' | cut -d ' ' -f 3`.strip
18
+ @capacity = `sudo zpool get -H capacity #{@name} | awk '{print $3}' | cut -d '%' -f1`.strip.to_i
19
19
  @vdevs = create_vdevs name
20
20
  end
21
21
 
22
22
  def ok?
23
- @state == "ONLINE"
23
+ @state == 'ONLINE'
24
24
  end
25
25
 
26
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 %x[sudo zpool status #{@name} | grep '^ scan: scrub' | awk '{print $11" "$12" "$13" "$14" "$15}'].strip
27
+ return Time.at(0) if never_scrubbed?
28
+ return Time.now if scrub_in_progress?
29
+ Time.parse `sudo zpool status #{@name} | grep '^ scan: scrub' | awk '{print $11" "$12" "$13" "$14" "$15}'`.strip # rubocop:disable
33
30
  end
34
31
 
35
32
  private
36
33
 
37
34
  def create_vdevs(name)
38
- cmd_out = %x[sudo zpool status #{name} | grep ONLINE | grep -v state | awk '{print $1 " " $2 " " $3 " " $4 " " $5}']
39
- cmd_out.lines('').map do |l|
35
+ cmd_out = `sudo zpool status #{name} | grep ONLINE | grep -v state | awk '{print $1 " " $2 " " $3 " " $4 " " $5}'`
36
+ cmd_out.lines.map do |l|
40
37
  arr = l.strip.split(' ')
41
38
  VDev.new(self, arr[0], arr[1], arr[2].to_i, arr[3].to_i, arr[4].to_i)
42
39
  end
43
40
  end
44
-
41
+
45
42
  def never_scrubbed?
46
- %x[sudo zpool status #{@name} | egrep -c "none requested"].strip.to_i == 1
43
+ `sudo zpool status #{@name} | egrep -c "none requested"`.strip.to_i == 1
47
44
  end
48
45
 
49
46
  def scrub_in_progress?
50
- %x[sudo zpool status #{@name} | egrep -c "scrub in progress|resilver"].strip.to_i == 1
47
+ `sudo zpool status #{@name} | egrep -c "scrub in progress|resilver"`.strip.to_i == 1
51
48
  end
52
49
  end
53
50
 
54
51
  class VDev
55
52
  attr_reader :zpool, :name, :read, :write, :chksum
56
- def initialize(zpool, name, state, read, write, chksum)
53
+ def initialize(zpool, name, state, read, write, chksum) # rubocop:disable Metrics/ParameterLists
57
54
  @zpool = zpool
58
55
  @name = name
59
56
  @state = state
@@ -63,10 +60,12 @@ module SensuPluginsZFS
63
60
  end
64
61
 
65
62
  def ok?
66
- return !!(@state =~ /(ONLINE|AVAIL)/) &&
67
- @read == 0 &&
68
- @write == 0 &&
69
- @chksum == 0
63
+ # TODO: I am not sure why this double negation exists and someone should
64
+ # come back in and fix this later.
65
+ !!(@state =~ /(ONLINE|AVAIL)/) && # rubocop:disable Style/DoubleNegation:
66
+ @read.zero? &&
67
+ @write.zero? &&
68
+ @chksum.zero?
70
69
  end
71
70
  end
72
71
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-zfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Nørgaard
8
+ - Sensu-Plugins and contributors
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2017-08-14 00:00:00.000000000 Z
12
+ date: 2018-02-27 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: sensu-plugin
@@ -38,9 +39,108 @@ dependencies:
38
39
  - - "~>"
39
40
  - !ruby/object:Gem::Version
40
41
  version: '1.14'
42
+ - !ruby/object:Gem::Dependency
43
+ name: github-markup
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.3'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.3'
56
+ - !ruby/object:Gem::Dependency
57
+ name: pry
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '0.10'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.10'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rake
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '10.0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '10.0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: redcarpet
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '3.2'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '3.2'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rspec
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '3.1'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '3.1'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rubocop
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: 0.51.0
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: 0.51.0
126
+ - !ruby/object:Gem::Dependency
127
+ name: yard
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '0.8'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '0.8'
41
140
  description: Sensu plugin for zfs
42
141
  email:
43
142
  - b@noergaard.dk
143
+ - "<sensu-users@googlegroups.com>"
44
144
  executables:
45
145
  - check-zpool.rb
46
146
  extensions: []
@@ -52,11 +152,17 @@ files:
52
152
  - lib/sensu-plugins-zfs.rb
53
153
  - lib/sensu-plugins-zfs/version.rb
54
154
  - lib/sensu-plugins-zfs/zpool.rb
55
- homepage: https://github.com/blacksails/sensu-plugins-zfs
155
+ homepage: https://github.com/sensu-plugins/sensu-plugins-zfs
56
156
  licenses:
57
157
  - MIT
58
- metadata: {}
59
- post_install_message:
158
+ metadata:
159
+ maintianer: sensu-plugin
160
+ development_status: active
161
+ production_status: unstable - testing recommended
162
+ release_draft: 'false'
163
+ release_prerelease: 'false'
164
+ post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
165
+ in /etc/default/sensu
60
166
  rdoc_options: []
61
167
  require_paths:
62
168
  - lib
@@ -64,7 +170,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
64
170
  requirements:
65
171
  - - ">="
66
172
  - !ruby/object:Gem::Version
67
- version: '0'
173
+ version: 2.1.0
68
174
  required_rubygems_version: !ruby/object:Gem::Requirement
69
175
  requirements:
70
176
  - - ">="
@@ -72,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
178
  version: '0'
73
179
  requirements: []
74
180
  rubyforge_project:
75
- rubygems_version: 2.6.12
181
+ rubygems_version: 2.5.2.1
76
182
  signing_key:
77
183
  specification_version: 4
78
184
  summary: Sensu plugin for zfs