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