vladb95
11/17/2015 - 2:52 PM

ruby

ruby

def parse_orardsinfo(info, collumn):
  return dict([ (i[0], i[collumn]) for i in info ])

def inventory_orards(checkname, info):
  orardsinfo = parse_orardsinfo(info,1)
#  print info 
  inventory = []
  check_pattern = checkname[:6] + '_' + checkname[7:]
  for key in orardsinfo:
    if key.startswith(check_pattern):
      inventory.append( (key, None) )
  return inventory
  

def check_orards_CPUUtilization(item, params, info):
  if params is None:
    warn = 75 
    crit = 90
  else:
    warn, crit = params  

  orardsinfo = parse_orardsinfo(info,1)
  data = float(re.search(r'\d+.\d+', orardsinfo.get(item)).group())
  perfdata = [ ("%s" % item, data, warn, crit ) ]
  if crit is None:
    return (0, "%s is %f" % (item, data/1024), perfdata)
  elif data > crit:
    return (2, "%s is %f" % (item, data/1024), perfdata)
  elif data > warn:
    return (1, "%s is %f" % (item, data/1024), perfdata)
  elif data >= 0:
    return (0, "%s is %f" % (item, data/1024), perfdata)
  else:
    return (3, "%s is %f" % (item, data/1024))


check_info["orards.CPUUtilization"] = {
    'check_function':            check_orards_CPUUtilization,
    'inventory_function':        inventory_orards,
    'service_description':       '%s',
    'has_perfdata':              True,
}
  

def check_orards_FreeableMemory(item, params, info):
  if params is None:
    warn = 1073741824
    crit = 524288000
  else:
    warn, crit = params

  orardsinfo = parse_orardsinfo(info,1)
  data = float(re.search(r'\d+.\d+', orardsinfo.get(item)).group())
  perfdata = [ ("%s" % item, data, warn, crit ) ]
  if crit is None:
    return (0, "%s is %f" % (item, data/1024), perfdata)
  elif data < crit:
    return (2, "%s is %f" % (item, data/1024), perfdata)
  elif data < warn:
    return (1, "%s is %f" % (item, data/1024), perfdata)
  elif data >= crit:
    return (0, "%s is %f" % (item, data/1024), perfdata)
  else:
    return (3, "%s is %f" % (item, data/1024))



check_info["orards.FreeableMemory"] = {
    'check_function':            check_orards_FreeableMemory,
    'inventory_function':        inventory_orards,
    'service_description':       '%s',
    'has_perfdata':              True,
}


def check_orards_FreeStorageSpace(item, params, info):
  if params is None:
    warn = 53687091200
    crit = 21474836480
  else:
    warn, crit = params

  orardsinfo = parse_orardsinfo(info,1)
  data = float(re.search(r'\d+.\d+', orardsinfo.get(item)).group())
  perfdata = [ ("%s" % item, data, warn, crit ) ]
  if crit is None:
    return (0, "%s is %f" % (item, data/1024), perfdata)
  elif data < crit:
    return (2, "%s is %f" % (item, data/1024), perfdata)
  elif data < warn:
    return (1, "%s is %f" % (item, data/1024), perfdata)
  elif data >= crit:
    return (0, "%s is %f" % (item, data/1024), perfdata)
  else:
    return (3, "%s is %f" % (item, data/1024))


check_info["orards.FreeStorageSpace"] = {
    'check_function':            check_orards_FreeStorageSpace,
    'inventory_function':        inventory_orards,
    'service_description':       '%s',
    'has_perfdata':              True,
}