Module: NagiosCheck

Includes:
Chronometer
Defined in:
lib/nagios_check.rb,
lib/nagios_check/range.rb,
lib/nagios_check/version.rb,
lib/nagios_check/chronometer.rb

Defined Under Namespace

Modules: Chronometer, ClassMethods Classes: MissingOption, Range

Constant Summary collapse

VERSION =
"0.3.0"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Chronometer

#time

Instance Attribute Details

#messageObject

Returns the value of attribute message.



13
14
15
# File 'lib/nagios_check.rb', line 13

def message
  @message
end

#optionsObject (readonly)

Returns the value of attribute options.



12
13
14
# File 'lib/nagios_check.rb', line 12

def options
  @options
end

Class Method Details

.included(base) ⇒ Object



129
130
131
132
133
134
135
# File 'lib/nagios_check.rb', line 129

def self.included(base)
  base.extend(ClassMethods)
  base.instance_eval do 
    @option_specs = {} 
    @defaults = {}
  end
end

Instance Method Details

#finishObject



54
55
56
57
58
59
60
61
62
63
64
# File 'lib/nagios_check.rb', line 54

def finish
  raise "No value was provided" if @values.empty?
  value = @values.first.last
  if @options.c && !@options.c.include?(value)
    return [2, "CRITICAL"]
  end
  if @options.w && !@options.w.include?(value)
    return [1, "WARNING"]
  end
  return [0, "OK"]
end

#prepareObject



16
17
18
19
# File 'lib/nagios_check.rb', line 16

def prepare
  @values = {}
  self.message = nil
end

#runObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/nagios_check.rb', line 21

def run
  prepare
  return_val, status = 3, "UNKNOWN"
  begin
    parse_options
    if @timeout
      check_with_timeout
    else
      check
    end
    return_val, status = finish
  rescue Timeout::Error
    store_message "TIMEOUT after #{@timeout}s"
  rescue OptionParser::InvalidArgument, NagiosCheck::MissingOption => e
    store_message "CLI ERROR: #{e}"
  rescue => e
    store_message "INTERNAL ERROR: #{e.class.name}: #{(e.to_s || '').gsub(/[\r\n]+/, ' ')}"
  end
  msg = status
  msg += ': ' + message if message
  if @values && !@values.empty?
    msg += '|' + @values.map do |name, value|
      "#{name}=#{value};;;;"
    end.join(' ')
  end
  puts msg
  exit return_val
end

#store_message(message) ⇒ Object



50
51
52
# File 'lib/nagios_check.rb', line 50

def store_message(message)
  self.message = message
end

#store_value(name, value, opts = {}) ⇒ Object



66
67
68
# File 'lib/nagios_check.rb', line 66

def store_value(name, value, opts = {})
  @values[name] = value.to_f
end