class NOMS::Nagui

Public Instance Methods

ack_host(host,user,comment) click to toggle source
# File lib/noms/nagui.rb, line 179
def ack_host(host,user,comment)
  cmd="COMMAND [#{Time.now.to_i}] ACKNOWLEDGE_HOST_PROBLEM;#{host};0;1;1;#{user};#{comment}"
  process_command(cmd)
end
ack_service(host,service,user,comment) click to toggle source
# File lib/noms/nagui.rb, line 184
def ack_service(host,service,user,comment)
  cmd="COMMAND [#{Time.now.to_i}] ACKNOWLEDGE_SVC_PROBLEM;#{host};#{service};0;1;1;#{user};#{comment}"
  process_command(cmd)
end
calc_time(str) click to toggle source
# File lib/noms/nagui.rb, line 122
def calc_time(str)
  case str
  when /(\d+)m/
    #minutes
    $1.to_i * 60
  when /(\d+)h/
    #hours
    $1.to_i * 3600
  when /(\d+)d/
    #days
    $1.to_i * 86400
  else
    str.to_i
  end
end
check_host_online(host) click to toggle source
# File lib/noms/nagui.rb, line 201
def check_host_online(host)
  @opt['host_up_command'] = 'check-host-alive' unless @opt.has_key?('host_up_command')
  nagcheck=do_request(:GET => "/nagcheck/command/#{host}/#{@opt['host_up_command']}")
  if nagcheck['state'] == 0
    true
  else
    false
  end
end
comment(host,service,user,comment) click to toggle source
# File lib/noms/nagui.rb, line 170
def comment(host,service,user,comment)
  if service == nil
    cmd="COMMAND [#{Time.now.to_i}] ADD_HOST_COMMENT;#{host};1;#{user};#{comment}"
  else
    cmd="COMMAND [#{Time.now.to_i}] ADD_SVC_COMMENT;#{host};#{service};1;#{user};#{comment}"
  end
  process_command(cmd)
end
config_key() click to toggle source

def initialize(opt)

@opt = opt
self.dbg "Initialized with options: #{opt.inspect}"

end

# File lib/noms/nagui.rb, line 41
def config_key
  'nagui'
end
dbg(msg) click to toggle source
# File lib/noms/nagui.rb, line 30
def dbg(msg)
    if @opt.has_key? 'debug' and @opt['debug'] > 2
        puts "DBG(#{self.class}): #{msg}"
    end
end
default_query_key(type) click to toggle source
# File lib/noms/nagui.rb, line 49
def default_query_key(type)
  case type
  when 'host'
    'name'
  when 'service'
    'description'
  when 'hostgroup'
    'name'
  end
end
downtime_host(host,length,user,comment) click to toggle source
# File lib/noms/nagui.rb, line 142
def downtime_host(host,length,user,comment)
  starttime=Time.now.to_i
  endtime = starttime + calc_time(length)
  cmd="COMMAND [#{Time.now.to_i}] SCHEDULE_HOST_DOWNTIME;#{host};#{starttime};#{endtime};1;0;0;#{user};#{comment}"
  process_command(cmd)
end
downtime_service(host,service,length,user,comment) click to toggle source
# File lib/noms/nagui.rb, line 148
def downtime_service(host,service,length,user,comment)
  starttime=Time.now.to_i
  endtime = starttime + calc_time(length)
  cmd="COMMAND [#{Time.now.to_i}] SCHEDULE_SVC_DOWNTIME;#{host};#{service};#{starttime};#{endtime};1;0;0;#{user};#{comment}"
  process_command(cmd)
end
host(hostname) click to toggle source
# File lib/noms/nagui.rb, line 112
def host(hostname)
  lql = "GET hosts|Filter: name = #{hostname}"
  results = do_request(:GET => '/nagui/nagios_live.cgi', :query => "query=#{CGI.escape(lql)}")
  if results.kind_of?(Array) && results.length > 0
    results[0]
  else
    nil
  end
end
hostgroup(name) click to toggle source
# File lib/noms/nagui.rb, line 85
def hostgroup(name)
  lql = "GET hostgroups|Filter: name = #{name}"
  results = do_request(:GET => '/nagui/nagios_live.cgi', :query => "query=#{CGI.escape(lql)}")
  if results.kind_of?(Array) && results.length > 0
    results[0]
  else
    nil
  end
end
make_lql(type,queries) click to toggle source
# File lib/noms/nagui.rb, line 60
def make_lql(type,queries)
  if !queries.kind_of?(Array)
    queries=[queries]
  end
  lql='GET ' 
  lql << make_plural(type) 
  queries.each do |q|
    query = /(\w+)([!~>=<]+)(.*)/.match(q)
    if query == nil
      lql << "|Filter: #{default_query_key(type)} ~~ #{q}"
    else
      lql << "|Filter: #{query[1]} #{query[2]} #{query[3]}"
    end
  end
  lql
end
make_plural(str) click to toggle source
# File lib/noms/nagui.rb, line 45
def make_plural(str)
  "#{str}s"
end
nagcheck_host(host) click to toggle source
# File lib/noms/nagui.rb, line 189
def nagcheck_host(host)
  url = "/nagcheck/host/#{host}"
  dbg("nagcheck url= #{url}")
  nagcheck=do_request(:GET => url, :query => "report=true")
end
nagcheck_service(host,service) click to toggle source
# File lib/noms/nagui.rb, line 195
def nagcheck_service(host,service)
  url = "/nagcheck/service/#{host}/#{service}"
  dbg("nagcheck url= #{url}")
  nagcheck=do_request(:GET => url, :query => "report=true")
end
process_command(cmd) click to toggle source
# File lib/noms/nagui.rb, line 138
def process_command(cmd)
  do_request(:POST => '/nagui/nagios_live.cgi', :body => "query=#{CGI.escape(cmd)}", :content_type => 'application/x-www-form-urlencoded')
end
query(type,queries) click to toggle source
# File lib/noms/nagui.rb, line 77
def query(type,queries)
  unless @@validtypes.include? make_plural(type)
    puts "#{type} is not a valid type"
    Process.exit(1)
  end
  query_string = make_lql(type,queries)
  results = do_request(:GET => '/nagui/nagios_live.cgi', :query => "query=#{CGI.escape(query_string)}")
end
service(host,description) click to toggle source
# File lib/noms/nagui.rb, line 94
def service(host,description)
  lql = "GET services|Filter: host_name = #{host}|Filter: description = #{description}"
  results = do_request(:GET => '/nagui/nagios_live.cgi', :query => "query=#{CGI.escape(lql)}")
  if results.kind_of?(Array) && results.length > 0
    results[0]
  else
    nil
  end
end
servicegroup(name) click to toggle source
# File lib/noms/nagui.rb, line 103
def servicegroup(name)
  lql = "query=GET hosts|Filter: name = #{name}"
  results = do_request(:GET => '/nagui/nagios_live.cgi', :query => "query=#{CGI.escape(lql)}")
  if results.kind_of?(Array) && results.length > 0
    results[0]
  else
    nil
  end
end
undowntime(host,service=nil) click to toggle source
# File lib/noms/nagui.rb, line 154
def undowntime(host,service=nil)
  if service == nil
    host_record = host(host)
    host_record['downtimes'].each do |id|
      cmd = "COMMAND [#{Time.now.to_i}] DEL_HOST_DOWNTIME;#{id}"
      process_command(cmd)
    end    
  else
    service_record = service(host,service)
    service_record['downtimes'].each do |id|
      cmd = "COMMAND [#{Time.now.to_i}] DEL_SVC_DOWNTIME;#{id}"  
      process_command(cmd)
    end  
  end
end