sensu-plugins-cpu-checks 2.0.1 → 2.1.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
  SHA256:
3
- metadata.gz: 55e3ae922696b6984288e8ffe3ecb1868b18898ae495f6c624465443b990815d
4
- data.tar.gz: 874ee5b3b456775a16f637ff9034df18accfa09f853c20b40472ac35489f96ca
3
+ metadata.gz: 5c35d99b197f2c02882d0ed2f782386437368deea7bce60099a52efb41648e7c
4
+ data.tar.gz: d96d35dfff48d9cf6606c4b060176bbcd91f271c52b216255c3b181704766028
5
5
  SHA512:
6
- metadata.gz: 4c738aa70f8fb2f5addd7d32e5e1980d80b32a259e2b0f0d3bce8201c847f4f97b507b9b392042bc0466d761972b0bdccfa9673f198b53c1de6e1abe6e0d50e2
7
- data.tar.gz: d5fa90907cfe760211081103fd0ec634433f2b33110aa2e84968a1861af5454ef30b38e45c7ae63610b45252e095c85ddf00c675d03b8eba9a5bf59d1744acd5
6
+ metadata.gz: 364bc2203e9f747e33c34621bec7a2e1b6d61535fd7730b9933e3f119130d1fc5abeb0f859358c32250d0794b0f537729c7f070503104dce6d45841af1f3dd7d
7
+ data.tar.gz: 32b8cd8665438156b8d06ae7f34f7e521fca4a83b9a0e65012bd76865835242c027bc78068ceaa0076034119895c0d4d0886b0ede3462db9b656caa827c185d1
@@ -5,6 +5,12 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [2.1.0] - 2018-04-2018
9
+ ### Added
10
+ - Added metrics-cpu-interrupts.rb (@yuri-zubov sponsored by Actility, https://www.actility.com)
11
+ - Added metrics-cpu-softirqs.rb (@yuri-zubov sponsored by Actility, https://www.actility.com)
12
+ - Added metrics-softnet-stat.rb (@yuri-zubov sponsored by Actility, https://www.actility.com)
13
+
8
14
  ## [2.0.1] - 2018-03-27
9
15
  ### Security
10
16
  - updated yard dependency to `~> 0.9.11` per: https://nvd.nist.gov/vuln/detail/CVE-2017-17042 (@majormoses)
@@ -83,7 +89,8 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
83
89
  - initial release
84
90
 
85
91
 
86
- [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-cpu-checks/compare/2.0.1...HEAD
92
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-cpu-checks/compare/2.1.0...HEAD
93
+ [2.1.0]: https://github.com/sensu-plugins/sensu-plugins-cpu-checks/compare/2.0.1...2.1.0
87
94
  [2.0.1]: https://github.com/sensu-plugins/sensu-plugins-cpu-checks/compare/2.0.0...2.0.1
88
95
  [2.0.0]: https://github.com/sensu-plugins/sensu-plugins-cpu-checks/compare/1.1.3...2.0.0
89
96
  [1.1.3]: https://github.com/sensu-plugins/sensu-plugins-cpu-checks/compare/1.1.2...1.1.3
@@ -0,0 +1,49 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # metrics-cpu-interrupts
4
+ #
5
+ # DESCRIPTION:
6
+ #
7
+ # OUTPUT:
8
+ # metric data
9
+ #
10
+ # PLATFORMS:
11
+ # Linux
12
+ #
13
+ # DEPENDENCIES:
14
+ # gem: sensu-plugin
15
+ #
16
+ # USAGE:
17
+ #
18
+ # NOTES:
19
+ #
20
+ # LICENSE:
21
+ # Zubov Yuri <yury.zubau@gmail.com> sponsored by Actility, https://www.actility.com
22
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
23
+ # for details.
24
+ #
25
+ require 'sensu-plugin/metric/cli'
26
+ require 'sensu-plugins-cpu-checks'
27
+ require 'socket'
28
+
29
+ #
30
+ # CPU Graphite
31
+ #
32
+ class MetricsCPUInterrupts < Sensu::Plugin::Metric::CLI::Graphite
33
+ include SensuPluginsCpuChecks::CommonInterrupts
34
+ option :scheme,
35
+ description: 'Metric naming scheme, text to prepend to metric',
36
+ short: '-s SCHEME',
37
+ long: '--scheme SCHEME',
38
+ default: "#{Socket.gethostname}.interrupts"
39
+
40
+ option :proc_path,
41
+ long: '--proc-path /proc',
42
+ proc: proc(&:to_s),
43
+ default: '/proc'
44
+
45
+ def run
46
+ output_metrics('interrupts')
47
+ ok
48
+ end
49
+ end
@@ -0,0 +1,49 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # metrics-cpu-softirqs
4
+ #
5
+ # DESCRIPTION:
6
+ #
7
+ # OUTPUT:
8
+ # metric data
9
+ #
10
+ # PLATFORMS:
11
+ # Linux
12
+ #
13
+ # DEPENDENCIES:
14
+ # gem: sensu-plugin
15
+ #
16
+ # USAGE:
17
+ #
18
+ # NOTES:
19
+ #
20
+ # LICENSE:
21
+ # Zubov Yuri <yury.zubau@gmail.com> sponsored by Actility, https://www.actility.com
22
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
23
+ # for details.
24
+ #
25
+ require 'sensu-plugin/metric/cli'
26
+ require 'sensu-plugins-cpu-checks'
27
+ require 'socket'
28
+
29
+ #
30
+ # CPU Graphite
31
+ #
32
+ class MetricsCPUSoftirqs < Sensu::Plugin::Metric::CLI::Graphite
33
+ include SensuPluginsCpuChecks::CommonInterrupts
34
+ option :scheme,
35
+ description: 'Metric naming scheme, text to prepend to metric',
36
+ short: '-s SCHEME',
37
+ long: '--scheme SCHEME',
38
+ default: "#{Socket.gethostname}.softirqs"
39
+
40
+ option :proc_path,
41
+ long: '--proc-path /proc',
42
+ proc: proc(&:to_s),
43
+ default: '/proc'
44
+
45
+ def run
46
+ output_metrics('softirqs')
47
+ ok
48
+ end
49
+ end
@@ -59,7 +59,7 @@ class CpuGraphite < Sensu::Plugin::Metric::CLI::Graphite
59
59
 
60
60
  output "#{config[:scheme]}.#{name}", info.first if other_metrics.include? name
61
61
  end
62
- if cpu_count > 0
62
+ if cpu_count.positive?
63
63
  # writes the number of cpus, the minus 1 is because /proc/stat/
64
64
  # first line is a "cpu" which is stats for total cpus
65
65
  output "#{config[:scheme]}.cpu_count", cpu_count - 1
@@ -0,0 +1,55 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # metrics-softnet-stat
4
+ #
5
+ # DESCRIPTION:
6
+ #
7
+ # OUTPUT:
8
+ # metric data
9
+ #
10
+ # PLATFORMS:
11
+ # Linux
12
+ #
13
+ # DEPENDENCIES:
14
+ # gem: sensu-plugin
15
+ #
16
+ # USAGE:
17
+ #
18
+ # NOTES:
19
+ #
20
+ # LICENSE:
21
+ # Zubov Yuri <yury.zubau@gmail.com> sponsored by Actility, https://www.actility.com
22
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
23
+ # for details.
24
+ #
25
+ require 'sensu-plugin/metric/cli'
26
+ require 'socket'
27
+
28
+ #
29
+ # CPU Graphite
30
+ #
31
+ class MetricsSoftnetStat < Sensu::Plugin::Metric::CLI::Graphite
32
+ option :scheme,
33
+ description: 'Metric naming scheme, text to prepend to metric',
34
+ short: '-s SCHEME',
35
+ long: '--scheme SCHEME',
36
+ default: "#{Socket.gethostname}.softnet-stat"
37
+
38
+ option :proc_path,
39
+ long: '--proc-path /proc',
40
+ proc: proc(&:to_s),
41
+ default: '/proc'
42
+
43
+ def run
44
+ name_metrics = %w[processed dropped time_squeeze cpu_collision received_rps flow_limit_count]
45
+
46
+ File.open("#{config[:proc_path]}/net/softnet_stat", 'r').each_line.with_index do |line, cpu_index|
47
+ result = line.split(' ')
48
+ array = result[0..2] + result[-3..-1]
49
+ array.each_with_index do |value, index|
50
+ output "#{config[:scheme]}.CPU#{cpu_index}.#{name_metrics[index]}", value.to_i(16)
51
+ end
52
+ end
53
+ ok
54
+ end
55
+ end
@@ -1 +1,2 @@
1
1
  require 'sensu-plugins-cpu-checks/version'
2
+ require 'sensu-plugins-cpu-checks/common_interrupts'
@@ -0,0 +1,31 @@
1
+ module SensuPluginsCpuChecks
2
+ module CommonInterrupts
3
+ def build_regexp(line)
4
+ regexp_string = '[[:space:]]*(?<irq_number>.+):'
5
+ cpu_list = line.scan(/CPU\d+/)
6
+ cpu_list.each do |name|
7
+ regexp_string += "[[:space:]]*(?<#{name}>\\d+)"
8
+ end
9
+ regexp_string += '[[:space:]]*(?<irq_type>.*)'
10
+ [Regexp.new(regexp_string), cpu_list]
11
+ end
12
+
13
+ def output_metrics(filename)
14
+ regexp = nil
15
+ cpu_list = []
16
+ File.open("#{config[:proc_path]}/#{filename}", 'r').each_line.with_index do |line, index|
17
+ if index.zero?
18
+ regexp, cpu_list = build_regexp(line)
19
+ else
20
+ result = line.match(regexp)
21
+ if result
22
+ cpu_list.each do |name|
23
+ key = [config[:scheme], name, result[:irq_type].split.join('-'), result[:irq_number]].reject(&:empty?)
24
+ output key.join('.').to_s, result[name]
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,8 +1,8 @@
1
1
  module SensuPluginsCpuChecks
2
2
  module Version
3
3
  MAJOR = 2
4
- MINOR = 0
5
- PATCH = 1
4
+ MINOR = 1
5
+ PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-cpu-checks
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.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: 2018-03-27 00:00:00.000000000 Z
11
+ date: 2018-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-plugin
@@ -171,10 +171,13 @@ description: |-
171
171
  email: "<sensu-users@googlegroups.com>"
172
172
  executables:
173
173
  - check-cpu.rb
174
+ - metrics-cpu-interrupts.rb
174
175
  - metrics-cpu-mpstat.rb
175
176
  - metrics-cpu-pcnt-usage.rb
177
+ - metrics-cpu-softirqs.rb
176
178
  - metrics-cpu.rb
177
179
  - metrics-numastat.rb
180
+ - metrics-softnet-stat.rb
178
181
  - metrics-user-pct-usage.rb
179
182
  extensions: []
180
183
  extra_rdoc_files: []
@@ -184,12 +187,16 @@ files:
184
187
  - README.md
185
188
  - bin/check-cpu.rb
186
189
  - bin/check-cpu.sh
190
+ - bin/metrics-cpu-interrupts.rb
187
191
  - bin/metrics-cpu-mpstat.rb
188
192
  - bin/metrics-cpu-pcnt-usage.rb
193
+ - bin/metrics-cpu-softirqs.rb
189
194
  - bin/metrics-cpu.rb
190
195
  - bin/metrics-numastat.rb
196
+ - bin/metrics-softnet-stat.rb
191
197
  - bin/metrics-user-pct-usage.rb
192
198
  - lib/sensu-plugins-cpu-checks.rb
199
+ - lib/sensu-plugins-cpu-checks/common_interrupts.rb
193
200
  - lib/sensu-plugins-cpu-checks/version.rb
194
201
  homepage: https://github.com/sensu-plugins/sensu-plugins-cpu-checks
195
202
  licenses: