sensu-plugins-load-checks 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -1
- data/README.md +14 -0
- data/bin/check-load.rb +33 -11
- data/bin/metrics-load.rb +5 -1
- data/lib/sensu-plugins-load-checks/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 298dd4b0198829f6f6fd1a5761cbe41104072281
|
4
|
+
data.tar.gz: f1ef98ca9e411273db36bffb5801ee6bc06e2ddb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74983811f7e704e45f89c0bba37f1b2c0733e3036a9ba149a335e1949844699c4da5c32c929963fdcfc582d990fca184a2efa3228f4e26ff58fb82ebfcfc380d
|
7
|
+
data.tar.gz: 5fd34a60ee3119d59e5901cf1b220d7301c70163c7e402fa27541aa33e64813cbfbb8664833b14dd379d0a28f2ae3b80ecf130b920f6a6b46daf261b352b6fad
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,17 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
|
+
### [2.0.0]
|
8
|
+
### Breaking Change
|
9
|
+
- bin/check-load.rb change the default of per_core to true (@majormoses)
|
10
|
+
|
11
|
+
### Changed
|
12
|
+
- Use the `uptime` command in bin/check-load.rb as well (@smuth4)
|
13
|
+
- Correctly detect the number of cores on BSD (@smuth4)
|
14
|
+
- bin/check-load.rb better output message (@woltage)
|
15
|
+
- bin/check-load.rb change the default thresholds to better align with per_core values (@majormoses)
|
16
|
+
- bin/check-load.rb changes to use >= rather than > for thresholds (@majormoses)
|
17
|
+
- bin/check-load.rb switch to using 'unknown' rather than 'warning' when unable to determine the load average (@majormoses)
|
7
18
|
|
8
19
|
## [1.0.0] - 2016-06-16
|
9
20
|
### Changed
|
@@ -32,7 +43,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
32
43
|
### Added
|
33
44
|
- initial release
|
34
45
|
|
35
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-load-checks/compare/
|
46
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-load-checks/compare/2.0.0...HEAD
|
47
|
+
[2.0.0]: https://github.com/sensu-plugins/sensu-plugins-load-checks/compare/1.0.0...2.0.0
|
36
48
|
[1.0.0]: https://github.com/sensu-plugins/sensu-plugins-load-checks/compare/0.0.4...1.0.0
|
37
49
|
[0.0.4]: https://github.com/sensu-plugins/sensu-plugins-load-checks/compare/0.0.3...0.0.4
|
38
50
|
[0.0.3]: https://github.com/sensu-plugins/sensu-plugins-load-checks/compare/0.0.2...0.0.3
|
data/README.md
CHANGED
@@ -14,6 +14,20 @@
|
|
14
14
|
|
15
15
|
## Usage
|
16
16
|
|
17
|
+
### check-load.rb
|
18
|
+
|
19
|
+
To see the list of full options you can run:
|
20
|
+
```
|
21
|
+
$ ./bin/check-load.rb --help
|
22
|
+
Usage: ./bin/check-load.rb (options)
|
23
|
+
-c, --crit L1,L5,L15 Load CRITICAL threshold, 1/5/15 min average
|
24
|
+
-p, --per-core Divide load average results by cpu/core count
|
25
|
+
-w, --warn L1,L5,L15 Load WARNING threshold, 1/5/15 min average
|
26
|
+
```
|
27
|
+
|
28
|
+
This check will only work on linux systems as it relies on `cat /proc/loadavg` and `cat /proc/cpuinfo`. The check now defaults to using the `per_core` option which will take the loadavg and divide by the number of cores. You can use `-w/-c` with a comma separated value for 1/5/15 minute thresholds.
|
29
|
+
|
30
|
+
|
17
31
|
## Installation
|
18
32
|
|
19
33
|
[Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
|
data/bin/check-load.rb
CHANGED
@@ -8,13 +8,13 @@
|
|
8
8
|
# plain text
|
9
9
|
#
|
10
10
|
# PLATFORMS:
|
11
|
-
# Linux
|
11
|
+
# Linux, BSD, Solaris, etc
|
12
12
|
#
|
13
13
|
# DEPENDENCIES:
|
14
14
|
# gem: sensu-plugin
|
15
15
|
#
|
16
16
|
# USAGE:
|
17
|
-
#
|
17
|
+
# ./bin/check-load.rb --help
|
18
18
|
# NOTES:
|
19
19
|
#
|
20
20
|
# LICENSE:
|
@@ -26,13 +26,25 @@
|
|
26
26
|
require 'sensu-plugin/check/cli'
|
27
27
|
|
28
28
|
class LoadAverage
|
29
|
-
def initialize(per_core =
|
29
|
+
def initialize(per_core = true)
|
30
30
|
@cores = per_core ? cpu_count : 1
|
31
|
-
@avg =
|
31
|
+
@avg = load_avg.map { |a| (a.to_f / @cores).round(2) } rescue nil # rubocop:disable RescueModifier
|
32
|
+
end
|
33
|
+
|
34
|
+
def load_avg
|
35
|
+
if File.exist?('/proc/loadavg')
|
36
|
+
File.read('/proc/loadavg').split.take(3)
|
37
|
+
else
|
38
|
+
`uptime`.delete(',').split(' ')[-3..-1]
|
39
|
+
end
|
32
40
|
end
|
33
41
|
|
34
42
|
def cpu_count
|
35
|
-
File.
|
43
|
+
if File.exist?('/proc/cpuinfo')
|
44
|
+
File.read('/proc/cpuinfo').scan(/^processor/).count
|
45
|
+
else
|
46
|
+
`sysctl -n hw.ncpu`.to_i
|
47
|
+
end
|
36
48
|
rescue
|
37
49
|
0
|
38
50
|
end
|
@@ -42,12 +54,16 @@ class LoadAverage
|
|
42
54
|
end
|
43
55
|
|
44
56
|
def exceed?(thresholds)
|
45
|
-
@avg.zip(thresholds).any? { |a, t| a
|
57
|
+
@avg.zip(thresholds).any? { |a, t| a >= t }
|
46
58
|
end
|
47
59
|
|
48
60
|
def to_s
|
49
61
|
@avg.join(', ')
|
50
62
|
end
|
63
|
+
|
64
|
+
def total
|
65
|
+
@avg.map { |a| (a * @cores) }.join(', ')
|
66
|
+
end
|
51
67
|
end
|
52
68
|
|
53
69
|
class CheckLoad < Sensu::Plugin::Check::CLI
|
@@ -56,26 +72,32 @@ class CheckLoad < Sensu::Plugin::Check::CLI
|
|
56
72
|
long: '--warn L1,L5,L15',
|
57
73
|
description: 'Load WARNING threshold, 1/5/15 min average',
|
58
74
|
proc: proc { |a| a.split(',').map(&:to_f) },
|
59
|
-
default: [
|
75
|
+
default: [2.75, 2.5, 2.0]
|
60
76
|
|
61
77
|
option :crit,
|
62
78
|
short: '-c L1,L5,L15',
|
63
79
|
long: '--crit L1,L5,L15',
|
64
80
|
description: 'Load CRITICAL threshold, 1/5/15 min average',
|
65
81
|
proc: proc { |a| a.split(',').map(&:to_f) },
|
66
|
-
default: [
|
82
|
+
default: [3.5, 3.25, 3.0]
|
67
83
|
|
68
84
|
option :per_core,
|
69
85
|
short: '-p',
|
70
86
|
long: '--per-core',
|
71
87
|
description: 'Divide load average results by cpu/core count',
|
72
88
|
boolean: 'true',
|
73
|
-
default:
|
89
|
+
default: true
|
74
90
|
|
75
91
|
def run
|
76
92
|
avg = LoadAverage.new(config[:per_core])
|
77
|
-
|
78
|
-
|
93
|
+
unknown 'Could not read load average from /proc' if avg.failed?
|
94
|
+
|
95
|
+
if config[:per_core] && avg.cpu_count > 1
|
96
|
+
message "Per core load average (#{avg.cpu_count} CPU): #{avg} - Total: #{avg.total}"
|
97
|
+
else
|
98
|
+
message "Total load average (#{avg.cpu_count} CPU): #{avg}"
|
99
|
+
end
|
100
|
+
|
79
101
|
critical if avg.exceed?(config[:crit])
|
80
102
|
warning if avg.exceed?(config[:warn])
|
81
103
|
ok
|
data/bin/metrics-load.rb
CHANGED
@@ -54,7 +54,11 @@ class LoadStat < Sensu::Plugin::Metric::CLI::Graphite
|
|
54
54
|
default: false
|
55
55
|
|
56
56
|
def number_of_cores
|
57
|
-
@cores ||= File.
|
57
|
+
@cores ||= if File.exist?('/proc/cpuinfo')
|
58
|
+
File.read('/proc/cpuinfo').scan(/^processor/).count
|
59
|
+
else
|
60
|
+
`sysctl -n hw.ncpu`.to_i
|
61
|
+
end
|
58
62
|
end
|
59
63
|
|
60
64
|
def run
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-load-checks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sensu-Plugins and contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -194,9 +194,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
194
|
version: '0'
|
195
195
|
requirements: []
|
196
196
|
rubyforge_project:
|
197
|
-
rubygems_version: 2.5
|
197
|
+
rubygems_version: 2.4.5
|
198
198
|
signing_key:
|
199
199
|
specification_version: 4
|
200
200
|
summary: Sensu plugins for load checks
|
201
201
|
test_files: []
|
202
|
-
has_rdoc:
|