def __init__(self, noopts=0, keeproot=False, name=None): # if we were provided our collector name via the constructor instead of # via code, be sure to store it correctly. if name is not None: self.name = name self.mname = name try: ZenDaemon.__init__(self, noopts, keeproot) except IOError: import traceback self.log.critical(traceback.format_exc(0)) sys.exit(1) self.rrdStats = DaemonStats() self.lastStats = 0 self.perspective = None self.services = {} self.eventQueueManager = EventQueueManager(self.options, self.log) self.startEvent = startEvent.copy() self.stopEvent = stopEvent.copy() details = dict(component=self.name, device=self.options.monitor) for evt in self.startEvent, self.stopEvent, self.heartbeatEvent: evt.update(details) self.initialConnect = defer.Deferred() self.stopped = False self.counters = collections.Counter() self.loadCounters() self._pingedZenhub = None self._connectionTimeout = None # Add a shutdown trigger to send a stop event and flush the event queue reactor.addSystemEventTrigger('before', 'shutdown', self._stopPbDaemon)
def __init__(self, single=False): """ Initalizer @param single: collect from a single device? @type single: boolean """ PBDaemon.__init__(self) # FIXME: cleanup --force option #2660 self.options.force = True self.start = None self.startat = None self.rrdStats = DaemonStats() self.single = single if self.options.device: self.single = True self.modelerCycleInterval = self.options.cycletime # get the minutes and convert to fraction of a day self.collage = float(self.options.collage) / 1440.0 self.pendingNewClients = False self.clients = [] self.finished = [] self.devicegen = None self.counters = collections.Counter() self.configFilter = None self.configLoaded = False # Make sendEvent() available to plugins zope.component.provideUtility(self, IEventService) # Delay start for between 10 and 60 seconds when run as a daemon. self.started = False self.startDelay = 0 self.immediate = 1 if self.options.daemon or self.options.cycle: if self.options.now: self.log.debug('option "now" specified, starting immediately.') else: # self.startDelay = randint(10, 60) * 60 self.startDelay = randint(10, 60) * 1 self.immediate = 0 self.log.info( 'option "now" not specified, waiting %s seconds to start.' % self.startDelay) else: self.log.debug("Run in foreground, starting immediately.") # ZEN-26637 self.collectorLoopIteration = 0 self.mainLoopGotDeviceList = False self.isMainScheduled = False self._modeledDevicesMetric = Metrology.meter( "zenmodeler.modeledDevices") self._failuresMetric = Metrology.counter("zenmodeler.failures")
def get_rrd_stats(self, hub_config, send_event): rrd_stats = DaemonStats() thresholds = hub_config.getThresholdInstances(BuiltInDS.sourcetype) threshold_notifier = ThresholdNotifier(send_event, thresholds) derivative_tracker = DerivativeTracker() rrd_stats.config( 'zenhub', hub_config.id, self.metric_writer, threshold_notifier, derivative_tracker ) return rrd_stats
def getRRDStats(self): """ Return the most recent RRD statistic information. """ rrdStats = DaemonStats() perfConf = self._getConf() from Products.ZenModel.BuiltInDS import BuiltInDS threshs = perfConf.getThresholdInstances(BuiltInDS.sourcetype) threshold_notifier = ThresholdNotifier(self.zem.sendEvent, threshs) derivative_tracker = DerivativeTracker() rrdStats.config('zenhub', perfConf.id, self._metric_writer, threshold_notifier, derivative_tracker) return rrdStats
def __init__(self, single=False): """ Initalizer @param single: collect from a single device? @type single: boolean """ PBDaemon.__init__(self) # FIXME: cleanup --force option #2660 self.options.force = True self.start = None self.startat = None self.rrdStats = DaemonStats() self.single = single if self.options.device: self.single = True self.modelerCycleInterval = self.options.cycletime self.collage = float(self.options.collage) / 1440.0 self.pendingNewClients = False self.clients = [] self.finished = [] self.devicegen = None self.counters = collections.Counter() # Make sendEvent() available to plugins zope.component.provideUtility(self, IEventService) # Delay start for between 10 and 60 seconds when run as a daemon. self.started = False self.startDelay = 0 self.immediate = 1 if self.options.daemon: if self.options.now: self.log.debug("Run as a daemon, starting immediately.") else: # self.startDelay = randint(10, 60) * 60 self.startDelay = randint(10, 60) * 1 self.immediate = 0 self.log.info("Run as a daemon, waiting %s seconds to start." % self.startDelay) else: self.log.debug("Run in foreground, starting immediately.") # load performance counters self.loadCounters()
def __init__(self): PBDaemon.__init__(self, keeproot=True) self.stats = Stats() self.rrdStats = DaemonStats()
def setUp(self): self.daemon_stats = DaemonStats()