class LoadAverage

Public Class Methods

new() click to toggle source
# File lib/sensu-plugins-load-checks/load-average.rb, line 2
def initialize
  @cores = cpu_count
  @avg = load_avg
end

Public Instance Methods

cpu_count() click to toggle source
# File lib/sensu-plugins-load-checks/load-average.rb, line 17
def cpu_count
  if File.exist?('/proc/cpuinfo')
    File.read('/proc/cpuinfo').scan(/^processor/).count
  else
    `sysctl -n hw.ncpu`.to_i
  end
rescue StandardError
  0
end
exceed?(thresholds) click to toggle source
# File lib/sensu-plugins-load-checks/load-average.rb, line 31
def exceed?(thresholds)
  @avg.zip(thresholds).any? { |a, t| a >= t }
end
failed?() click to toggle source
# File lib/sensu-plugins-load-checks/load-average.rb, line 27
def failed?
  @avg.nil? || @cores.zero?
end
load_avg() click to toggle source
# File lib/sensu-plugins-load-checks/load-average.rb, line 7
def load_avg
  if File.exist?('/proc/loadavg')
    # linux
    File.read('/proc/loadavg').split.take(3).map { |a| (a.to_f / @cores).round(2) } rescue nil # rubocop:disable RescueModifier
  else
    # fallback for FreeBSD
    `uptime`.split(' ')[-3..-1].map(&:to_f).map { |a| (a.to_f / @cores).round(2) } rescue nil # rubocop:disable RescueModifier
  end
end
to_s() click to toggle source
# File lib/sensu-plugins-load-checks/load-average.rb, line 35
def to_s
  @avg.join(', ')
end
total() click to toggle source
# File lib/sensu-plugins-load-checks/load-average.rb, line 39
def total
  @avg.map { |a| (a / @cores) }.join(', ')
end