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.4.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



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

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
65
# File 'lib/nagios_check.rb', line 54

def finish
  raise "No value was provided" if @values.empty?
  value = @values.first.last
  return [3, "UNKNOWN"] if value.nil?
  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 @options.t
      check_with_timeout
    else
      check
    end
    return_val, status = finish
  rescue Timeout::Error
    store_message "TIMEOUT after #{@options.t}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



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

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