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