sensu-plugins-disk-checks 0.0.1.alpha.4 → 0.0.1
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -2
- data/CHANGELOG.md +10 -22
- data/LICENSE +1 -1
- data/README.md +2 -36
- data/bin/check-disk-usage.rb +21 -21
- data/bin/check-smart-status.rb +2 -2
- data/bin/check-smart.rb +1 -1
- data/bin/disk-capacity-metrics.rb +1 -1
- data/bin/disk-metrics.rb +1 -1
- data/bin/disk-usage-metrics.rb +1 -1
- data/lib/sensu-plugins-disk-checks.rb +10 -3
- data/lib/sensu-plugins-disk-checks/version.rb +28 -0
- metadata +66 -73
- metadata.gz.sig +0 -0
- data/bin/check-disk-fail.rb +0 -49
- data/bin/check-disk.rb +0 -157
- data/bin/check-fs-writable.rb +0 -143
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c6d81fc4caef9f10566d677be5c7c91347c8340
|
4
|
+
data.tar.gz: 1fee51e08c482fc2dcc02ab2d8504e2fa7c908f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 09bdd997c6af774b1b1edffd51615c27625962d8aeea987c5cfceae82312053e53d4ed57c791c1562480f1a06a715b08d2beefeedabfe01c86938365744747fb
|
7
|
+
data.tar.gz: c1c33931cfc9e6527fba5c86e22ad1f91d399d9ac44d9cf6a70036e640ab9707d752d94a343f3191df15f48e49c59100a9b974e444c8f576bd265b462e49897a
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
u`κ�U:��.
|
2
|
+
=�A��9E/���,���xD�
|
data/CHANGELOG.md
CHANGED
@@ -1,28 +1,16 @@
|
|
1
|
-
|
1
|
+
#Change Log
|
2
|
+
This project adheres to [Semantic Versioning](http://semver.org/).
|
2
3
|
|
3
|
-
|
4
|
-
* basic yard coverage
|
5
|
-
* pinned dependencies
|
6
|
-
* built against 1.9.3, 2.0, 2.1
|
7
|
-
* cryptographically signed
|
4
|
+
This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
|
8
5
|
|
9
|
-
|
6
|
+
## Unreleased][unreleased]
|
10
7
|
|
11
|
-
|
12
|
-
* update LICENSE and gemspec authors
|
13
|
-
* update README
|
14
|
-
* add required Ruby version *>= 1.9.3*
|
15
|
-
* add test/spec_help.rb
|
8
|
+
## 0.0.1 - 2015-04-21
|
16
9
|
|
17
|
-
|
10
|
+
### Added
|
11
|
+
- initial release
|
18
12
|
|
19
|
-
|
20
|
-
* add check-smart
|
21
|
-
* add pry gem as a development dependency
|
13
|
+
## 0.0.2 - 2015-04-21
|
22
14
|
|
23
|
-
|
24
|
-
|
25
|
-
* refactored check-disk to use sys-filesystem gem instead of df, it is not 100% backwards compatible dur to the new use of objects vs, plain text
|
26
|
-
* depreciated check-disk in favor of check-disk-usage, it will be removed in the first stable release
|
27
|
-
* add pry as a development dependency
|
28
|
-
* updated README with more detailed installation instructions
|
15
|
+
### Fixed
|
16
|
+
- deployment issue
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -5,8 +5,7 @@
|
|
5
5
|
[](https://codeclimate.com/github/sensu-plugins/sensu-plugins-disk-checks)
|
6
6
|
[](https://codeclimate.com/github/sensu-plugins/sensu-plugins-disk-checks)
|
7
7
|
[](https://gemnasium.com/sensu-plugins/sensu-plugins-disk-checks)
|
8
|
-
[](https://codeship.com/projects/76007)
|
10
9
|
## Functionality
|
11
10
|
|
12
11
|
**check-disk-fail**
|
@@ -90,39 +89,6 @@ This is a sample input file used by check-smart-status, see the script for furth
|
|
90
89
|
|
91
90
|
## Installation
|
92
91
|
|
93
|
-
|
94
|
-
|
95
|
-
```
|
96
|
-
gem cert --add <(curl -Ls https://raw.githubusercontent.com/sensu-plugins/sensu-plugins.github.io/master/certs/sensu-plugins.pem)
|
97
|
-
gem install <gem> -P MediumSecurity
|
98
|
-
```
|
99
|
-
|
100
|
-
You can also download the key from /certs/ within each repository.
|
101
|
-
|
102
|
-
#### Rubygems
|
103
|
-
|
104
|
-
`gem install sensu-plugins-disk-checks`
|
105
|
-
|
106
|
-
#### Bundler
|
107
|
-
|
108
|
-
Add *sensu-plugins-disk-checks* to your Gemfile and run `bundle install` or `bundle update`
|
109
|
-
|
110
|
-
#### Chef
|
111
|
-
|
112
|
-
Using the Sensu **sensu_gem** LWRP
|
113
|
-
```
|
114
|
-
sensu_gem 'sensu-plugins-disk-checks' do
|
115
|
-
options('--prerelease')
|
116
|
-
version '0.0.1.alpha.2'
|
117
|
-
end
|
118
|
-
```
|
119
|
-
|
120
|
-
Using the Chef **gem_package** resource
|
121
|
-
```
|
122
|
-
gem_package 'sensu-plugins-process-checks' do
|
123
|
-
options('--prerelease')
|
124
|
-
version '0.0.1.alpha.2'
|
125
|
-
end
|
126
|
-
```
|
92
|
+
[Installation and Setup](https://github.com/sensu-plugins/documentation/blob/master/user_docs/installation_instructions.md)
|
127
93
|
|
128
94
|
## Notes
|
data/bin/check-disk-usage.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
# plain text
|
10
10
|
#
|
11
11
|
# PLATFORMS:
|
12
|
-
# Linux, BSD,
|
12
|
+
# Linux, BSD, Windows
|
13
13
|
#
|
14
14
|
# DEPENDENCIES:
|
15
15
|
# gem: sensu-plugin
|
@@ -20,7 +20,7 @@
|
|
20
20
|
# NOTES:
|
21
21
|
#
|
22
22
|
# LICENSE:
|
23
|
-
# Copyright 2015 Yieldbot Inc <
|
23
|
+
# Copyright 2015 Yieldbot Inc <Sensu-Plugins>
|
24
24
|
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
25
25
|
# for details.
|
26
26
|
#
|
@@ -72,11 +72,6 @@ class CheckDisk < Sensu::Plugin::Check::CLI
|
|
72
72
|
proc: proc(&:to_i),
|
73
73
|
default: 95
|
74
74
|
|
75
|
-
option :debug,
|
76
|
-
short: '-d',
|
77
|
-
long: '--debug',
|
78
|
-
description: 'Output list of included filesystems'
|
79
|
-
|
80
75
|
# Setup variables
|
81
76
|
#
|
82
77
|
def initialize
|
@@ -93,34 +88,39 @@ class CheckDisk < Sensu::Plugin::Check::CLI
|
|
93
88
|
next if config[:fstype] && !config[:fstype].include?(line.mount_type)
|
94
89
|
next if config[:ignoretype] && config[:ignoretype].include?(line.mount_type)
|
95
90
|
next if config[:ignoremnt] && config[:ignoremnt].include?(line.mount_point)
|
96
|
-
puts "Name: #{ line.name } Mount Point: #{ line.mount_point } FS Type: #{ line.mount_type }" if config[:debug]
|
97
91
|
rescue
|
98
92
|
unknown 'An error occured getting the mount info'
|
99
93
|
end
|
100
|
-
|
101
|
-
|
94
|
+
check_mount(line)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def check_mount(line)
|
99
|
+
fs_info = Filesystem.stat(line.mount_point)
|
100
|
+
if @fs_info.respond_to?(:inodes) # needed for windows
|
101
|
+
if percent_inodes(fs_info) >= config[:icrit]
|
102
102
|
@crit_fs << "#{line.mount_point} #{percent_inodes}% inode usage"
|
103
|
-
elsif percent_inodes >= config[:iwarn]
|
104
|
-
@warn_fs <<
|
105
|
-
end
|
106
|
-
if percent_bytes >= config[:bcrit]
|
107
|
-
@crit_fs << "#{line.mount_point} #{percent_bytes}% bytes usage"
|
108
|
-
elsif percent_bytes >= config[:bwarn]
|
109
|
-
@warn_fs << "#{line.mount_point} #{percent_bytes}% bytes usage"
|
103
|
+
elsif percent_inodes(fs_info) >= config[:iwarn]
|
104
|
+
@warn_fs << "#{line.mount_point} #{percent_inodes}% inode usage"
|
110
105
|
end
|
111
106
|
end
|
107
|
+
if percent_bytes(fs_info) >= config[:bcrit]
|
108
|
+
@crit_fs << "#{line.mount_point} #{percent_bytes}% bytes usage"
|
109
|
+
elsif percent_bytes(fs_info) >= config[:bwarn]
|
110
|
+
@warn_fs << "#{line.mount_point} #{percent_bytes}% bytes usage"
|
111
|
+
end
|
112
112
|
end
|
113
113
|
|
114
114
|
# Determine the percent inode usage
|
115
115
|
#
|
116
|
-
def percent_inodes
|
117
|
-
(100.0 - (100.0 *
|
116
|
+
def percent_inodes(fs_info)
|
117
|
+
(100.0 - (100.0 * fs_info.inodes_free / fs_info.inodes)).round(2)
|
118
118
|
end
|
119
119
|
|
120
120
|
# Determine the percent byte usage
|
121
121
|
#
|
122
|
-
def percent_bytes
|
123
|
-
(100.0 - (100.0 *
|
122
|
+
def percent_bytes(fs_info)
|
123
|
+
(100.0 - (100.0 * fs_info.bytes_free / fs_info.bytes_total)).round(2)
|
124
124
|
end
|
125
125
|
|
126
126
|
# Generate output
|
data/bin/check-smart-status.rb
CHANGED
@@ -119,7 +119,7 @@ class SmartCheckStatus < Sensu::Plugin::Check::CLI
|
|
119
119
|
|
120
120
|
# Main function
|
121
121
|
#
|
122
|
-
def run
|
122
|
+
def run # rubocop:disable all
|
123
123
|
@smart_attributes = JSON.parse(IO.read(File.dirname(__FILE__) + '/smart.json'), symbolize_names: true)[:smart][:attributes]
|
124
124
|
@smart_debug = config[:debug] == 'on'
|
125
125
|
|
@@ -227,7 +227,7 @@ class SmartCheckStatus < Sensu::Plugin::Check::CLI
|
|
227
227
|
|
228
228
|
# find all devices from /proc/partitions or from parameter
|
229
229
|
#
|
230
|
-
def find_devices
|
230
|
+
def find_devices # rubocop:disable all
|
231
231
|
# Return parameter value if it's defined
|
232
232
|
return config[:devices].split(',') unless config[:devices] == 'all'
|
233
233
|
|
data/bin/check-smart.rb
CHANGED
data/bin/disk-metrics.rb
CHANGED
@@ -50,7 +50,7 @@ class DiskGraphite < Sensu::Plugin::Metric::CLI::Graphite
|
|
50
50
|
default: false
|
51
51
|
|
52
52
|
# Main function
|
53
|
-
def run
|
53
|
+
def run # rubocop:disable all
|
54
54
|
# http://www.kernel.org/doc/Documentation/iostats.txt
|
55
55
|
metrics = %w(reads readsMerged sectorsRead readTime writes writesMerged sectorsWritten writeTime ioInProgress ioTime ioTimeWeighted)
|
56
56
|
|
data/bin/disk-usage-metrics.rb
CHANGED
@@ -1,7 +1,14 @@
|
|
1
|
+
require 'sensu-plugins-disk-checks/version'
|
2
|
+
|
3
|
+
# Load the defaults
|
4
|
+
|
1
5
|
#
|
2
|
-
#
|
6
|
+
# Default class
|
3
7
|
#
|
4
8
|
module SensuPluginsDiskChecks
|
5
|
-
|
6
|
-
|
9
|
+
class << self
|
10
|
+
end
|
11
|
+
|
12
|
+
class << self
|
13
|
+
end
|
7
14
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
# encoding: utf-8
|
4
|
+
module SensuPluginsDiskChecks
|
5
|
+
# This defines the version of the gem
|
6
|
+
module Version
|
7
|
+
MAJOR = 0
|
8
|
+
MINOR = 0
|
9
|
+
PATCH = 1
|
10
|
+
|
11
|
+
VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
|
12
|
+
|
13
|
+
NAME = 'sensu-plugins-disk-checks'
|
14
|
+
BANNER = "#{NAME} v%s"
|
15
|
+
|
16
|
+
module_function
|
17
|
+
|
18
|
+
def version
|
19
|
+
format(BANNER, VER_STRING)
|
20
|
+
end
|
21
|
+
|
22
|
+
def json_version
|
23
|
+
{
|
24
|
+
'version' => VER_STRING
|
25
|
+
}.to_json
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-disk-checks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Sensu-Plugins and contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
@@ -30,196 +30,186 @@ cert_chain:
|
|
30
30
|
8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
|
31
31
|
HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2015-
|
33
|
+
date: 2015-05-22 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
36
|
+
name: sys-filesystem
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - '='
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.1.
|
41
|
+
version: 1.1.4
|
42
42
|
type: :runtime
|
43
43
|
prerelease: false
|
44
44
|
version_requirements: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - '='
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 1.1.
|
48
|
+
version: 1.1.4
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
50
|
+
name: filesystem
|
51
51
|
requirement: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - '
|
53
|
+
- - '='
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
55
|
+
version: 0.1.0
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
58
|
version_requirements: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - '
|
60
|
+
- - '='
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: 0.1.0
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
64
|
+
name: sensu-plugin
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - '
|
67
|
+
- - '='
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 1.1.0
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - '
|
74
|
+
- - '='
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
76
|
+
version: 1.1.0
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
78
|
name: codeclimate-test-reporter
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
83
|
+
version: '0.4'
|
84
84
|
type: :development
|
85
85
|
prerelease: false
|
86
86
|
version_requirements: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- -
|
88
|
+
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: '0'
|
90
|
+
version: '0.4'
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rubocop
|
93
93
|
requirement: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- - ~>
|
95
|
+
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: 0.
|
97
|
+
version: '0.30'
|
98
98
|
type: :development
|
99
99
|
prerelease: false
|
100
100
|
version_requirements: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - ~>
|
102
|
+
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: 0.
|
104
|
+
version: '0.30'
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: rspec
|
107
107
|
requirement: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - ~>
|
109
|
+
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '3.1'
|
112
112
|
type: :development
|
113
113
|
prerelease: false
|
114
114
|
version_requirements: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- - ~>
|
116
|
+
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '3.1'
|
119
119
|
- !ruby/object:Gem::Dependency
|
120
120
|
name: bundler
|
121
121
|
requirement: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- - ~>
|
123
|
+
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '1.7'
|
126
126
|
type: :development
|
127
127
|
prerelease: false
|
128
128
|
version_requirements: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
|
-
- - ~>
|
130
|
+
- - "~>"
|
131
131
|
- !ruby/object:Gem::Version
|
132
132
|
version: '1.7'
|
133
133
|
- !ruby/object:Gem::Dependency
|
134
134
|
name: rake
|
135
135
|
requirement: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
|
-
- - ~>
|
137
|
+
- - "~>"
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '10.0'
|
140
140
|
type: :development
|
141
141
|
prerelease: false
|
142
142
|
version_requirements: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
|
-
- - ~>
|
144
|
+
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: '10.0'
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: github-markup
|
149
149
|
requirement: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
|
-
- -
|
151
|
+
- - "~>"
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version: '
|
153
|
+
version: '1.3'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
156
|
version_requirements: !ruby/object:Gem::Requirement
|
157
157
|
requirements:
|
158
|
-
- -
|
158
|
+
- - "~>"
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version: '
|
160
|
+
version: '1.3'
|
161
161
|
- !ruby/object:Gem::Dependency
|
162
162
|
name: redcarpet
|
163
163
|
requirement: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
|
-
- -
|
165
|
+
- - "~>"
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version: '
|
167
|
+
version: '3.2'
|
168
168
|
type: :development
|
169
169
|
prerelease: false
|
170
170
|
version_requirements: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
|
-
- -
|
172
|
+
- - "~>"
|
173
173
|
- !ruby/object:Gem::Version
|
174
|
-
version: '
|
174
|
+
version: '3.2'
|
175
175
|
- !ruby/object:Gem::Dependency
|
176
176
|
name: yard
|
177
177
|
requirement: !ruby/object:Gem::Requirement
|
178
178
|
requirements:
|
179
|
-
- -
|
179
|
+
- - "~>"
|
180
180
|
- !ruby/object:Gem::Version
|
181
|
-
version: '0'
|
181
|
+
version: '0.8'
|
182
182
|
type: :development
|
183
183
|
prerelease: false
|
184
184
|
version_requirements: !ruby/object:Gem::Requirement
|
185
185
|
requirements:
|
186
|
-
- -
|
186
|
+
- - "~>"
|
187
187
|
- !ruby/object:Gem::Version
|
188
|
-
version: '0'
|
188
|
+
version: '0.8'
|
189
189
|
- !ruby/object:Gem::Dependency
|
190
190
|
name: pry
|
191
191
|
requirement: !ruby/object:Gem::Requirement
|
192
192
|
requirements:
|
193
|
-
- -
|
193
|
+
- - "~>"
|
194
194
|
- !ruby/object:Gem::Version
|
195
|
-
version: '0'
|
195
|
+
version: '0.10'
|
196
196
|
type: :development
|
197
197
|
prerelease: false
|
198
198
|
version_requirements: !ruby/object:Gem::Requirement
|
199
199
|
requirements:
|
200
|
-
- -
|
200
|
+
- - "~>"
|
201
201
|
- !ruby/object:Gem::Version
|
202
|
-
version: '0'
|
203
|
-
description: Sensu disk checks
|
204
|
-
email: <sensu-users@googlegroups.com>
|
205
|
-
executables:
|
206
|
-
- check-disk-fail.rb
|
207
|
-
- check-disk-usage.rb
|
208
|
-
- check-disk.rb
|
209
|
-
- check-fs-writable.rb
|
210
|
-
- check-fstab-mounts.rb
|
211
|
-
- check-smart-status.rb
|
212
|
-
- check-smart.rb
|
213
|
-
- disk-capacity-metrics.rb
|
214
|
-
- disk-metrics.rb
|
215
|
-
- disk-usage-metrics.rb
|
202
|
+
version: '0.10'
|
203
|
+
description: Sensu plugins for disk checks
|
204
|
+
email: "<sensu-users@googlegroups.com>"
|
205
|
+
executables: []
|
216
206
|
extensions: []
|
217
207
|
extra_rdoc_files: []
|
218
208
|
files:
|
219
|
-
-
|
209
|
+
- CHANGELOG.md
|
210
|
+
- LICENSE
|
211
|
+
- README.md
|
220
212
|
- bin/check-disk-usage.rb
|
221
|
-
- bin/check-disk.rb
|
222
|
-
- bin/check-fs-writable.rb
|
223
213
|
- bin/check-fstab-mounts.rb
|
224
214
|
- bin/check-smart-status.rb
|
225
215
|
- bin/check-smart.rb
|
@@ -227,32 +217,35 @@ files:
|
|
227
217
|
- bin/disk-metrics.rb
|
228
218
|
- bin/disk-usage-metrics.rb
|
229
219
|
- lib/sensu-plugins-disk-checks.rb
|
230
|
-
-
|
231
|
-
- README.md
|
232
|
-
- CHANGELOG.md
|
220
|
+
- lib/sensu-plugins-disk-checks/version.rb
|
233
221
|
homepage: https://github.com/sensu-plugins/sensu-plugins-disk-checks
|
234
222
|
licenses:
|
235
223
|
- MIT
|
236
|
-
metadata:
|
237
|
-
|
224
|
+
metadata:
|
225
|
+
maintainer: "@mattyjones"
|
226
|
+
development_status: active
|
227
|
+
production_status: unstable - testing recommended
|
228
|
+
release_draft: 'false'
|
229
|
+
release_prerelease: 'false'
|
230
|
+
post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
|
231
|
+
in /etc/default/sensu
|
238
232
|
rdoc_options: []
|
239
233
|
require_paths:
|
240
234
|
- lib
|
241
235
|
required_ruby_version: !ruby/object:Gem::Requirement
|
242
236
|
requirements:
|
243
|
-
- -
|
237
|
+
- - ">="
|
244
238
|
- !ruby/object:Gem::Version
|
245
239
|
version: 1.9.3
|
246
240
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
247
241
|
requirements:
|
248
|
-
- -
|
242
|
+
- - ">="
|
249
243
|
- !ruby/object:Gem::Version
|
250
|
-
version:
|
244
|
+
version: '0'
|
251
245
|
requirements: []
|
252
246
|
rubyforge_project:
|
253
|
-
rubygems_version: 2.
|
247
|
+
rubygems_version: 2.4.6
|
254
248
|
signing_key:
|
255
249
|
specification_version: 4
|
256
|
-
summary: Sensu disk checks
|
250
|
+
summary: Sensu plugins for disk checks
|
257
251
|
test_files: []
|
258
|
-
has_rdoc:
|
metadata.gz.sig
CHANGED
Binary file
|
data/bin/check-disk-fail.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
#! /usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# check-disk-fail
|
4
|
-
#
|
5
|
-
# DESCRIPTION:
|
6
|
-
# Check for failing disks
|
7
|
-
# Greps through dmesg output looking for indications that a drive is failing.
|
8
|
-
#
|
9
|
-
# OUTPUT:
|
10
|
-
# plain text
|
11
|
-
#
|
12
|
-
# PLATFORMS:
|
13
|
-
# Linux
|
14
|
-
#
|
15
|
-
# DEPENDENCIES:
|
16
|
-
# gem: sensu-plugin
|
17
|
-
#
|
18
|
-
# USAGE:
|
19
|
-
#
|
20
|
-
# NOTES:
|
21
|
-
#
|
22
|
-
# LICENSE:
|
23
|
-
# Coppyright 07/14/2014 Shane Feek and Alan Smith.
|
24
|
-
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
25
|
-
# for details.
|
26
|
-
#
|
27
|
-
|
28
|
-
require 'sensu-plugin/check/cli'
|
29
|
-
|
30
|
-
#
|
31
|
-
# Check Disk Fail
|
32
|
-
#
|
33
|
-
class CheckDiskFail < Sensu::Plugin::Check::CLI
|
34
|
-
# Main function
|
35
|
-
#
|
36
|
-
# Check the contents of dmesg for a set of given strings
|
37
|
-
def run
|
38
|
-
dmesg = `dmesg`.lines
|
39
|
-
|
40
|
-
%w(Read Write Smart).each do |v|
|
41
|
-
found = dmesg.grep(/failed command\: #{v.upcase}/)
|
42
|
-
# #YELLOW
|
43
|
-
unless found.empty? # rubocop:disable IfUnlessModifier
|
44
|
-
critical "Disk #{v} Failure"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
ok
|
48
|
-
end
|
49
|
-
end
|
data/bin/check-disk.rb
DELETED
@@ -1,157 +0,0 @@
|
|
1
|
-
#! /usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# check-disk
|
4
|
-
#
|
5
|
-
# DESCRIPTION:
|
6
|
-
# Uses GNU's -T option for listing filesystem type; unfortunately, this
|
7
|
-
# is not portable to BSD. Warning/critical levels are percentages only.
|
8
|
-
#
|
9
|
-
# OUTPUT:
|
10
|
-
# plain text
|
11
|
-
#
|
12
|
-
# PLATFORMS:
|
13
|
-
# Linux
|
14
|
-
#
|
15
|
-
# DEPENDENCIES:
|
16
|
-
# gem: sensu-plugin
|
17
|
-
#
|
18
|
-
# USAGE:
|
19
|
-
#
|
20
|
-
# NOTES:
|
21
|
-
#
|
22
|
-
# LICENSE:
|
23
|
-
# Copyright 2011 Sonian, Inc <chefs@sonian.net>
|
24
|
-
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
25
|
-
# for details.
|
26
|
-
#
|
27
|
-
|
28
|
-
require 'sensu-plugin/check/cli'
|
29
|
-
|
30
|
-
#
|
31
|
-
# Check Disk
|
32
|
-
#
|
33
|
-
class CheckDisk < Sensu::Plugin::Check::CLI
|
34
|
-
option :fstype,
|
35
|
-
short: '-t TYPE[,TYPE]',
|
36
|
-
description: 'Only check fs type(s)',
|
37
|
-
proc: proc { |a| a.split(',') }
|
38
|
-
|
39
|
-
option :ignoretype,
|
40
|
-
short: '-x TYPE[,TYPE]',
|
41
|
-
description: 'Ignore fs type(s)',
|
42
|
-
proc: proc { |a| a.split(',') }
|
43
|
-
|
44
|
-
option :ignoremnt,
|
45
|
-
short: '-i MNT[,MNT]',
|
46
|
-
description: 'Ignore mount point(s)',
|
47
|
-
proc: proc { |a| a.split(',') }
|
48
|
-
|
49
|
-
option :ignoreline,
|
50
|
-
short: '-l PATTERN[,PATTERN]',
|
51
|
-
description: 'Ignore df line(s) matching pattern(s)',
|
52
|
-
proc: proc { |a| a.split(',') }
|
53
|
-
|
54
|
-
option :includeline,
|
55
|
-
short: '-L PATTERN[,PATTERN]',
|
56
|
-
description: 'Only include df line(s) matching pattern(s)',
|
57
|
-
proc: proc { |a| a.split(',') }
|
58
|
-
|
59
|
-
option :warn,
|
60
|
-
short: '-w PERCENT',
|
61
|
-
description: 'Warn if PERCENT or more of disk full',
|
62
|
-
proc: proc(&:to_i),
|
63
|
-
default: 85
|
64
|
-
|
65
|
-
option :crit,
|
66
|
-
short: '-c PERCENT',
|
67
|
-
description: 'Critical if PERCENT or more of disk full',
|
68
|
-
proc: proc(&:to_i),
|
69
|
-
default: 95
|
70
|
-
|
71
|
-
option :iwarn,
|
72
|
-
short: '-W PERCENT',
|
73
|
-
description: 'Warn if PERCENT or more of inodes used',
|
74
|
-
proc: proc(&:to_i),
|
75
|
-
default: 85
|
76
|
-
|
77
|
-
option :icrit,
|
78
|
-
short: '-K PERCENT',
|
79
|
-
description: 'Critical if PERCENT or more of inodes used',
|
80
|
-
proc: proc(&:to_i),
|
81
|
-
default: 95
|
82
|
-
|
83
|
-
option :debug,
|
84
|
-
short: '-d',
|
85
|
-
long: '--debug',
|
86
|
-
description: 'Output list of included filesystems'
|
87
|
-
|
88
|
-
# Setup variables
|
89
|
-
#
|
90
|
-
def initialize
|
91
|
-
super
|
92
|
-
@crit_fs = []
|
93
|
-
@warn_fs = []
|
94
|
-
@line_count = 0
|
95
|
-
end
|
96
|
-
|
97
|
-
# Read the output of `df` spliting the lines based upon their fields
|
98
|
-
# This will check both blocks and inodes
|
99
|
-
def read_df
|
100
|
-
`df -lPT`.split("\n").drop(1).each do |line|
|
101
|
-
begin
|
102
|
-
_fs, type, _blocks, _used, _avail, capacity, mnt = line.split
|
103
|
-
next if config[:includeline] && !config[:includeline].find { |x| line.match(x) }
|
104
|
-
next if config[:fstype] && !config[:fstype].include?(type)
|
105
|
-
next if config[:ignoretype] && config[:ignoretype].include?(type)
|
106
|
-
next if config[:ignoremnt] && config[:ignoremnt].include?(mnt)
|
107
|
-
next if config[:ignoreline] && config[:ignoreline].find { |x| line.match(x) }
|
108
|
-
puts line if config[:debug]
|
109
|
-
rescue
|
110
|
-
unknown "malformed line from df: #{line}"
|
111
|
-
end
|
112
|
-
@line_count += 1
|
113
|
-
if capacity.to_i >= config[:crit]
|
114
|
-
@crit_fs << "#{mnt} #{capacity}"
|
115
|
-
elsif capacity.to_i >= config[:warn]
|
116
|
-
@warn_fs << "#{mnt} #{capacity}"
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
`df -lPTi`.split("\n").drop(1).each do |line|
|
121
|
-
begin
|
122
|
-
_fs, type, _inodes, _used, _avail, capacity, mnt = line.split
|
123
|
-
next if config[:includeline] && !config[:includeline].find { |x| line.match(x) }
|
124
|
-
next if config[:fstype] && !config[:fstype].include?(type)
|
125
|
-
next if config[:ignoretype] && config[:ignoretype].include?(type)
|
126
|
-
next if config[:ignoremnt] && config[:ignoremnt].include?(mnt)
|
127
|
-
next if config[:ignoreline] && config[:ignoreline].find { |x| line.match(x) }
|
128
|
-
puts line if config[:debug]
|
129
|
-
rescue
|
130
|
-
unknown "malformed line from df: #{line}"
|
131
|
-
end
|
132
|
-
@line_count += 1
|
133
|
-
if capacity.to_i > config[:icrit]
|
134
|
-
@crit_fs << "#{mnt} inodes #{capacity}"
|
135
|
-
elsif capacity.to_i >= config[:iwarn]
|
136
|
-
@warn_fs << "#{mnt} inodes #{capacity}"
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
# Generate output
|
142
|
-
#
|
143
|
-
def usage_summary
|
144
|
-
(@crit_fs + @warn_fs).join(', ')
|
145
|
-
end
|
146
|
-
|
147
|
-
# Main function
|
148
|
-
#
|
149
|
-
def run
|
150
|
-
unknown 'Do not use -l and -L options concurrently' if config[:includeline] && config[:ignoreline]
|
151
|
-
read_df
|
152
|
-
unknown 'No filesystems found' unless @line_count > 0
|
153
|
-
critical usage_summary unless @crit_fs.empty?
|
154
|
-
warning usage_summary unless @warn_fs.empty?
|
155
|
-
ok "All disk usage under #{config[:warn]}% and inode usage under #{config[:iwarn]}%"
|
156
|
-
end
|
157
|
-
end
|
data/bin/check-fs-writable.rb
DELETED
@@ -1,143 +0,0 @@
|
|
1
|
-
#! /usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# check-fs-writable
|
4
|
-
#
|
5
|
-
# DESCRIPTION:
|
6
|
-
# This plugin checks that a filesystem is writable. Useful for checking for stale NFS mounts.
|
7
|
-
#
|
8
|
-
# OUTPUT:
|
9
|
-
# plain text
|
10
|
-
#
|
11
|
-
# PLATFORMS:
|
12
|
-
# Linux
|
13
|
-
#
|
14
|
-
# DEPENDENCIES:
|
15
|
-
# gem: sensu-plugin
|
16
|
-
# gem: rubysl-tempfile
|
17
|
-
#
|
18
|
-
# USAGE:
|
19
|
-
# ./check-fs-writable.rb --auto (check all volgroups in fstab)
|
20
|
-
# ./check-fs-writable.rb --dir /,/var,/usr,/home (check a defined list of directories)
|
21
|
-
#
|
22
|
-
# NOTES:
|
23
|
-
#
|
24
|
-
# LICENSE:
|
25
|
-
# Copyright 2014 Yieldbot, Inc <devops@yieldbot.com>
|
26
|
-
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
27
|
-
# for details.
|
28
|
-
#
|
29
|
-
|
30
|
-
require 'sensu-plugin/check/cli'
|
31
|
-
require 'tempfile'
|
32
|
-
|
33
|
-
#
|
34
|
-
# Check Filesystem Writable
|
35
|
-
#
|
36
|
-
class CheckFSWritable < Sensu::Plugin::Check::CLI
|
37
|
-
option :dir,
|
38
|
-
description: 'Directory to check for writability',
|
39
|
-
short: '-d DIRECTORY',
|
40
|
-
long: '--directory DIRECTORY',
|
41
|
-
proc: proc { |a| a.split(',') }
|
42
|
-
|
43
|
-
option :auto,
|
44
|
-
description: 'Auto discover mount points via fstab',
|
45
|
-
short: '-a',
|
46
|
-
long: '--auto-discover'
|
47
|
-
|
48
|
-
option :debug,
|
49
|
-
description: 'Print debug statements',
|
50
|
-
long: '--debug'
|
51
|
-
|
52
|
-
# Setup variables
|
53
|
-
#
|
54
|
-
def initialize
|
55
|
-
super
|
56
|
-
@crit_pt_proc = []
|
57
|
-
@crit_pt_test = []
|
58
|
-
end
|
59
|
-
|
60
|
-
# Generate output
|
61
|
-
#
|
62
|
-
def usage_summary
|
63
|
-
if @crit_pt_test.empty? && @crit_pt_proc.empty?
|
64
|
-
ok 'All filesystems are writable'
|
65
|
-
elsif @crit_pt_test || @crit_pt_proc
|
66
|
-
critical "The following file systems are not writeable: #{ @crit_pt_test }, #{@crit_pt_proc}"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
# Get the mount points from the self namespace
|
71
|
-
#
|
72
|
-
def acquire_mnt_pts
|
73
|
-
`grep VolGroup /proc/self/mounts | awk '{print $2, $4}' | awk -F, '{print $1}' | awk '{print $1, $2}'`
|
74
|
-
end
|
75
|
-
|
76
|
-
# Does proc list the mount point as rw
|
77
|
-
#
|
78
|
-
def rw_in_proc?(mount_info)
|
79
|
-
mount_info.each do |pt|
|
80
|
-
@crit_pt_proc << "#{ pt.split[0] }" if pt.split[1] != 'rw'
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
# Create a tempfile at each mount point and attempt to write a line to it
|
85
|
-
# If it can't write the line, or the mount point does not exist it will
|
86
|
-
# generate a critical error
|
87
|
-
#
|
88
|
-
def rw_test?(mount_info)
|
89
|
-
mount_info.each do |pt|
|
90
|
-
(Dir.exist? pt.split[0]) || (@crit_pt_test << "#{ pt.split[0] }")
|
91
|
-
file = Tempfile.new('.sensu', pt.split[0])
|
92
|
-
puts "The temp file we are writing to is: #{ file.path }" if config[:debug]
|
93
|
-
# #YELLOW
|
94
|
-
# need to add a check here to validate permissions, if none it pukes
|
95
|
-
file.write('mops') || @crit_pt_test << "#{ pt.split[0] }"
|
96
|
-
file.read || @crit_pt_test << "#{ pt.split[0] }"
|
97
|
-
file.close
|
98
|
-
file.unlink
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
# Auto-generate a list of mount points to check based upon the self
|
103
|
-
# namespace in proc
|
104
|
-
#
|
105
|
-
def auto_discover
|
106
|
-
# #YELLOW
|
107
|
-
# this will only work for a single namespace as of now
|
108
|
-
mount_info = acquire_mnt_pts.split("\n")
|
109
|
-
warning 'No mount points found' if mount_info.length == 0
|
110
|
-
# #YELLOW
|
111
|
-
# I want to map this at some point to make it pretty and eaiser to read for large filesystems
|
112
|
-
puts 'This is a list of mount_pts and their current status: ', mount_info if config[:debug]
|
113
|
-
rw_in_proc?(mount_info)
|
114
|
-
rw_test?(mount_info)
|
115
|
-
puts "The critical mount points according to proc are: #{ @crit_pt_proc }" if config[:debug]
|
116
|
-
puts "The critical mount points according to actual testing are: #{ @crit_pt_test }" if config[:debug]
|
117
|
-
end
|
118
|
-
|
119
|
-
# Create a tempfile as each mount point and attempt to write a line to it
|
120
|
-
# If it can't write the line, or the mount point does not exist it will
|
121
|
-
# generate a critical error
|
122
|
-
#
|
123
|
-
def manual_test
|
124
|
-
config[:dir].each do |d|
|
125
|
-
(Dir.exist? d) || (@crit_pt_test << "#{ d }")
|
126
|
-
file = Tempfile.new('.sensu', d)
|
127
|
-
puts "The temp file we are writing to is: #{ file.path }" if config[:debug]
|
128
|
-
# #YELLOW
|
129
|
-
# need to add a check here to validate permissions, if none it pukes
|
130
|
-
file.write('mops') || @crit_pt_test << "#{ d }"
|
131
|
-
file.read || @crit_pt_test << "#{ d }"
|
132
|
-
file.close
|
133
|
-
file.unlink
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
# Main function
|
138
|
-
#
|
139
|
-
def run
|
140
|
-
(auto_discover if config[:auto]) || (manual_test if config[:dir]) || (warning 'No directorties to check')
|
141
|
-
usage_summary
|
142
|
-
end
|
143
|
-
end
|