Пример #1
0
 def run(self):
     parser = PerfdataParser()
     last_flush = time.time()
     updates = []
     while True:
         lines = 0
         files = glob.glob(self.perfpattern)[:self.limit]
         if files:
             input = fileinput.input(files)
             for line in input:
                 try:
                     observation, perfdata = parser.parse(line)
                 except InvalidPerfdata, e:
                     sys.stderr.write(
                         "%s %s:%i\n  line: %s" %
                         (e, input.filename(), input.filelineno(), line))
                     continue
                 except Exception, e:
                     sys.stderr.write(
                         "Error while parsing perfdata: %s %s:%i\n  line: %s"
                         % (e, input.filename(), input.filelineno(), line))
                     continue
                 for performance_data in perfdata:
                     parentservice = None
                     service = observation['service']
                     if performance_data['child_service']:
                         parentservice = service
                         service = performance_data['child_service']
                     pluginstatus = observation['state']
                     if pluginstatus == 1:
                         pluginstatus = 'warning'
                     if pluginstatus == 2:
                         pluginstatus = 'critical'
                     updates.append(
                         (observation['host'], parentservice, service,
                          performance_data['label'],
                          observation['timestamp'], performance_data['uom'],
                          performance_data['value'],
                          performance_data['lower_limit'],
                          performance_data['upper_limit'],
                          performance_data['warn_lower'],
                          performance_data['warn_upper'],
                          performance_data['warn_type'],
                          performance_data['crit_lower'],
                          performance_data['crit_upper'],
                          performance_data['crit_type'], pluginstatus))
                 lines += 1