class NetAtlas::Plugin::Nagios

Public Instance Methods

build_args(data_source) click to toggle source
# File lib/netatlas/plugin/nagios.rb, line 36
def build_args(data_source)
  args = ["-H #{data_source.ip_address}"]
  args << ["-p #{data_source.port}"] if data_source.port
  arguments = data_source.arguments ? data_source.arguments.attributes : {}
  arguments.each do |k, v|
    key = "--" + k.to_s.gsub("_","-")

    if v == true
      args << key
    else
      args << "#{key} #{v}" if v
    end
  end
  args.join(" ")
end
check_scripts() click to toggle source
# File lib/netatlas/plugin/nagios.rb, line 11
def check_scripts
  files = Dir.glob("#{NAGIOS_CONFIG['plugin_dir']}/*").collect {|f| f.split("/").last}.sort
  LOGGER.debug "files = #{files}"
  files
end
cmd_args(data_source) click to toggle source
# File lib/netatlas/plugin/nagios.rb, line 27
def cmd_args(data_source)
  args = []
  args << "-H #{data_source.interface.ip_address}"
  args << "-c #{data_source.arguments.critical}" if data_source.arguments.critical.to_f > 0
  args << "-w #{data_source.arguments.warning}" if data_source.arguments.warning.to_f > 0
  args << "-p #{data_source.arguments.port}" if data_source.arguments.port.to_i > 0
  args << data_source.arguments.arguments
  args.join(" ")
end
get_value(output, status) click to toggle source
# File lib/netatlas/plugin/nagios.rb, line 52
def get_value(output, status)
  puts "parsing nagios data"
  puts output
  output, perfdata = output.split('|')
  return nil unless perfdata
  puts "output now #{output}, perfdata = #{perfdata}"
  metrics = {}
  stuff = perfdata.scan(/(\w+)=([\d|\.]+)/)
  stuff.each {|i| metrics[i[0]] = i[1]}
  metrics['time']
end
poll(data_source, &block) click to toggle source
# File lib/netatlas/plugin/nagios.rb, line 16
def poll(data_source, &block)
  cmd = "#{NAGIOS_CONFIG['plugin_dir']}/#{self.class.check_script || data_source.arguments.check_script} "
  cmd += build_args(data_source)
  puts "sending #{cmd}"
  EM.system(cmd) { |output, status|
    value = get_value(output, status)
    puts "in nagios callback"
    puts "got output = #{output}, status = #{status}"
    block.call SEVERITIES[status.exitstatus], value
  }
end