Example #1
0
 def reconfig(self, data):
     self.interval = int(data.get('interval', 60))
     if self.loghandler:
         logger.removeHandler(self.loghandler)
     fname = data.get('logfile', '/var/log/sauron.log')
     # Set up the logging file
     self.loghandler = logging.FileHandler(fname, mode='a')
     self.loghandler.setFormatter(formatter)
     self.loghandler.setLevel(logging.INFO)
     logger.addHandler(self.loghandler)
     
     # Read in /all/ the metrics!
     try:
         if len(data['metrics']) == 0:
             logger.error('No metrics in config file!')
             exit(1)
         for key,value in data['metrics'].items():
             try:
                 try:
                     d = dict(value.items())
                     self.metrics[key].reconfig(**d)
                 except:
                     module = value['module']
                     m = __import__('sauron.metrics.%s' % module)
                     m = getattr(m, 'metrics')
                     m = getattr(m, module)
                     c = getattr(m, module)
                     del d['module']
                     d['name'] = key
                     self.metrics[key] = c(**d)
             except KeyError:
                 logger.exception('No module listed for metric %s' % key)
                 exit(1)
             except ImportError:
                 logger.exception('Unable to import module %s' % module)
                 exit(1)
             except TypeError as e:
                 logger.exception('Unable to initialize metric %s' % key)
                 exit(1)
             except MetricException as e:
                 logger.exception('Module Exception %s' % module)
                 exit(1)
     except KeyError:
         logger.error('No metrics in config file!')
         exit(1)
     
     # Read in /all/ the emitters!
     try:
         if self.dryrun:
             logger.warn('Skipping all emitters because of --dry-run')
             self.emitters[''] = Emitter()
             return
         if len(data['emitters']) == 0:
             logger.error('No metrics in config file!')
             exit(1)
         for key,value in data['emitters'].items():
             try:
                 m = __import__('sauron.emitters.%s' % key)
                 m = getattr(m, 'emitters')
                 m = getattr(m, key)
                 c = getattr(m, key)
                 d = dict(value.items())
                 self.emitters[key] = c(**d)
             except ImportError:
                 logger.exception('Unable to import module %s' % key)
                 exit(1)
             except TypeError as e:
                 logger.exception('Unable to initialize emitter %s' % key)
                 exit(1)
             except EmitterException as e:
                 logger.exception('Error with module %s' % module)
                 exit(1)
     except:
         logger.exception('Emitter error!')
         exit(1)