diff -r 4548e58c8c66 -r e0b7c95a154f lib/arborist/monitor/snmp/load.rb --- a/lib/arborist/monitor/snmp/load.rb Wed Aug 30 13:55:02 2017 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -# -*- ruby -*- -# vim: set noet nosta sw=4 ts=4 : - -require 'arborist/monitor/snmp' unless defined?( Arborist::Monitor::SNMP ) - -# SNMP 5 minute load checks. -# Sets current 5 minute load as a 'load5' attribute. -# -class Arborist::Monitor::SNMP::Load - include Arborist::Monitor::SNMP - - extend Loggability - log_to :arborist - - # OIDS for discovering system load. - # - LOAD = { - five_min: '1.3.6.1.4.1.2021.10.1.3.2' - } - - # Global defaults for instances of this monitor - # - DEFAULT_OPTIONS = { - error_at: 7 - } - - - ### Class #run creates a new instance. - ### - def self::run( nodes ) - return new.run( nodes ) - end - - - ### Create a new instance of this monitor. - ### - def initialize( options=DEFAULT_OPTIONS ) - options = DEFAULT_OPTIONS.merge( options || {} ) - options.each do |name, value| - self.public_send( "#{name.to_s}=", value ) - end - end - - # Set an error if mount points are above this percentage. - attr_accessor :error_at - - - ### Perform the monitoring checks. - ### - def run( nodes ) - super do |snmp, host| - self.gather_load( snmp, host ) - end - end - - - ######### - protected - ######### - - ### Collect the load information for +host+ from an existing - ### (and open) +snmp+ connection. - ### - def gather_load( snmp, host ) - self.log.debug "Getting system load for: %s" % [ host ] - load5 = snmp.get( SNMP::ObjectId.new( LOAD[:five_min] ) ).varbind_list.first.value.to_f - self.log.debug " Load on %s: %0.2f" % [ host, load5 ] - - config = @identifiers[ host ].last || {} - error_at = config[ 'error_at' ] || self.error_at - if load5 >= error_at - @results[ host ] = { - error: "Load has exceeded %0.2f over a 5 minute average" % [ error_at ], - load5: load5 - } - else - @results[ host ] = { load5: load5 } - end - end - -end # class Arborist::Monitor::SNMP::Load -