From 13f4dd8f370b83e16d15a8b6a425d4a2997ae6e6 Mon Sep 17 00:00:00 2001 From: Jonathan Gnagy Date: Fri, 16 Jun 2017 14:35:20 -0700 Subject: [PATCH 1/6] Added `-R` to check-process.rb to address #45 Also includes some minor rubocop fixes --- Rakefile | 3 +-- bin/check-process.rb | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Rakefile b/Rakefile index 5285a56..102e586 100644 --- a/Rakefile +++ b/Rakefile @@ -29,8 +29,7 @@ desc 'Test for binstubs' task :check_binstubs do bin_list = Gem::Specification.load('sensu-plugins-process-checks.gemspec').executables bin_list.each do |b| - `which #{ b }` - unless $CHILD_STATUS.success? + unless system("which #{b} > /dev/null") puts "#{b} was not a binstub" exit end diff --git a/bin/check-process.rb b/bin/check-process.rb index e0ee346..b18aa3a 100755 --- a/bin/check-process.rb +++ b/bin/check-process.rb @@ -117,9 +117,17 @@ class CheckProcess < Sensu::Plugin::Check::CLI description: 'Trigger on a Virtual Memory size is bigger than this', proc: proc(&:to_i) + # Alert if RSS is under this value option :rss, short: '-r RSS', long: '--resident-set-size RSS', + description: 'Trigger on a Resident Set size is smaller than this', + proc: proc(&:to_i) + + # Alert if RSS is over this value + option :over_rss, + short: '-R RSS', + long: '--over-resident-set-size RSS', description: 'Trigger on a Resident Set size is bigger than this', proc: proc(&:to_i) @@ -209,7 +217,7 @@ def line_to_hash(line, *cols) # def on_cygwin? # #YELLOW - `ps -W 2>&1`; $CHILD_STATUS.exitstatus == 0 # rubocop:disable Semicolon + `ps -W 2>&1`; $CHILD_STATUS.exitstatus.zero? # rubocop:disable Semicolon end # Acquire all the proceeses on a system for further analysis @@ -249,6 +257,7 @@ def cputime_to_csec(time) # The main function # + # rubocop:disable Metrics/AbcSize def run procs = acquire_procs @@ -261,7 +270,10 @@ def run procs.reject! { |p| p[:command] =~ /#{config[:exclude_pat]}/ } if config[:exclude_pat] procs.reject! { |p| p[:command] !~ /#{config[:cmd_pat]}/ } if config[:cmd_pat] procs.select! { |p| p[:vsz].to_f > config[:vsz] } if config[:vsz] + # Ensure RSS is over this value procs.select! { |p| p[:rss].to_f > config[:rss] } if config[:rss] + # Ensure RSS is under this value + procs.select! { |p| p[:over_rss].to_f < config[:over_rss] } if config[:over_rss] procs.select! { |p| p[:cpu].to_f > config[:cpu_utilization] } if config[:cpu_utilization] procs.select! { |p| p[:thcount].to_i > config[:thcount] } if config[:thcount] procs.reject! { |p| etime_to_esec(p[:etime]) >= config[:esec_under] } if config[:esec_under] @@ -277,6 +289,7 @@ def run msg += "; user #{config[:user].join(',')}" if config[:user] msg += "; vsz > #{config[:vsz]}" if config[:vsz] msg += "; rss > #{config[:rss]}" if config[:rss] + msg += "; rss < #{config[:over_rss]}" if config[:over_rss] msg += "; cpu > #{config[:cpu_utilization]}" if config[:cpu_utilization] msg += "; thcount > #{config[:thcount]}" if config[:thcount] msg += "; esec < #{config[:esec_under]}" if config[:esec_under] @@ -287,7 +300,7 @@ def run if config[:metric] # #YELLOW - count = procs.map { |p| p[config[:metric]].to_i }.reduce { |a, b| a + b } # rubocop:disable SingleLineBlockParams + count = procs.map { |p| p[config[:metric]].to_i }.reduce { |a, e| a + e } msg += "; #{config[:metric]} == #{count}" else count = procs.size From 70d2fd8f543ad51ff0c936a7d75e6896a6c945e5 Mon Sep 17 00:00:00 2001 From: Jonathan Gnagy Date: Fri, 16 Jun 2017 14:41:43 -0700 Subject: [PATCH 2/6] Updating Changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d3e869..4e71006 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ This project adheres to [Semantic Versioning](http://semver.org/). This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/) ## [Unreleased] +## Changed +- check-process.rb: added `-R` to allow checking for processes whose RSS exceeds some value + ## [2.3.0] - 2017-05-29 ### Changed - metrics-per-process.py: Use memory_info() in psutil versions greater than 4.0.0, as memory_info_ex() was deprecated. From c75579d0da63a988f52859bba861a0e216ece03f Mon Sep 17 00:00:00 2001 From: Jonathan Gnagy Date: Sun, 25 Jun 2017 19:54:49 -0700 Subject: [PATCH 3/6] Correcting CHANGELOG per @majormoses --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e71006..7cd4cf8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/) ## [Unreleased] -## Changed +## Added - check-process.rb: added `-R` to allow checking for processes whose RSS exceeds some value ## [2.3.0] - 2017-05-29 From 8e555a692145b50d7f2fe945ab8ec41cf82518c4 Mon Sep 17 00:00:00 2001 From: Jonathan Gnagy Date: Sun, 25 Jun 2017 19:56:05 -0700 Subject: [PATCH 4/6] Even more correct CHANGELOG... h2 -> h3 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cd4cf8..e3bb07d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/) ## [Unreleased] -## Added +### Added - check-process.rb: added `-R` to allow checking for processes whose RSS exceeds some value ## [2.3.0] - 2017-05-29 From bca53db1de6dd849cef94fb4bf2a0fb0f8ed4052 Mon Sep 17 00:00:00 2001 From: Jonathan Gnagy Date: Sun, 25 Jun 2017 23:21:30 -0700 Subject: [PATCH 5/6] Fixing bad process hash key in :over_rss compare --- bin/check-process.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/check-process.rb b/bin/check-process.rb index b18aa3a..c0db1c9 100755 --- a/bin/check-process.rb +++ b/bin/check-process.rb @@ -273,7 +273,7 @@ def run # Ensure RSS is over this value procs.select! { |p| p[:rss].to_f > config[:rss] } if config[:rss] # Ensure RSS is under this value - procs.select! { |p| p[:over_rss].to_f < config[:over_rss] } if config[:over_rss] + procs.select! { |p| p[:rss].to_f < config[:over_rss] } if config[:over_rss] procs.select! { |p| p[:cpu].to_f > config[:cpu_utilization] } if config[:cpu_utilization] procs.select! { |p| p[:thcount].to_i > config[:thcount] } if config[:thcount] procs.reject! { |p| etime_to_esec(p[:etime]) >= config[:esec_under] } if config[:esec_under] From fd3445815253efc1dbd6c1fd1a4234dcc3360cd6 Mon Sep 17 00:00:00 2001 From: Jonathan Gnagy Date: Sun, 25 Jun 2017 23:38:02 -0700 Subject: [PATCH 6/6] Reverting rubocop-related reduce var name change --- bin/check-process.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/check-process.rb b/bin/check-process.rb index c0db1c9..3b23ac0 100755 --- a/bin/check-process.rb +++ b/bin/check-process.rb @@ -300,7 +300,7 @@ def run if config[:metric] # #YELLOW - count = procs.map { |p| p[config[:metric]].to_i }.reduce { |a, e| a + e } + count = procs.map { |p| p[config[:metric]].to_i }.reduce { |a, b| a + b } # rubocop:disable SingleLineBlockParams msg += "; #{config[:metric]} == #{count}" else count = procs.size