class MonitorServer(XmlRpcBaseServer): """The XML RPC monitor server.""" server_name = "monitor" method_names = XmlRpcBaseServer.method_names + ['getRecord', 'getMonitorsConfig'] def __init__(self, argv=None): XmlRpcBaseServer.__init__(self, argv) self.plugins=MonitorPlugins(self._conf) self.plugins.registerPlugins() def _init_cb(self, conf, options): """init procedure intend to be implemented by subclasses. This method is called before to switch in daemon mode. conf is a ConfigParser object.""" self._conf = conf def getMonitorsConfig(self): ret = {} for plugin in (self.plugins.MONITORS.values()): conf = plugin.getConfig() if conf: ret[plugin.name] = conf return ret def getRecord(self): """ Returns the Monitor info at this point in time """ ret = {} ret['time'] = time() ret['host'] = self.host for plugin in (self.plugins.MONITORS.values()): for key, value in plugin.getStat().items(): ret[key] = str(value) return ret
def createMonitorChart(self, host): """Create monitrored server charts.""" stats = self.monitor[host] times = [] cvus_list = [] for stat in stats: test, cycle, cvus = stat.key.split(':') stat.cvus=cvus date = datetime.fromtimestamp(float(stat.time)) #change time format to fix cross day-night display issue times.append(date.strftime("%H:%M:%S-%m/%d")) #times.append(int(float(stat.time))) # - time_start)) cvus_list.append(cvus) Plugins = MonitorPlugins() Plugins.registerPlugins() Plugins.configure(self.getMonitorConfig(host)) charts=[] for plugin in Plugins.MONITORS.values(): image_prefix = gnuplot_scriptpath(self.report_dir, '%s_%s' % (host, plugin.name)) data_prefix = gnuplot_scriptpath(self.report_dir, '%s_%s' % (host, plugin.name)) gplot_path = str(os.path.join(self.report_dir, '%s_%s.gplot' % (host, plugin.name))) r=plugin.gnuplot(times, host, image_prefix, data_prefix, gplot_path, self.chart_size, stats) if r!=None: gnuplot(gplot_path) charts.extend(r) return charts
def __init__(self, argv=None): self.interval = None self.records = [] self._keys = {} XmlRpcBaseServer.__init__(self, argv) self.plugins = MonitorPlugins(self._conf) self.plugins.registerPlugins() self._monitor = MonitorThread(self.records, self.plugins, self.host, self.interval) self._monitor.start()
def createMonitorChart(self, host): """Create monitrored server charts.""" charts = [] Plugins = MonitorPlugins() Plugins.registerPlugins() Plugins.configure(self.getMonitorConfig(host)) for plugin in Plugins.MONITORS.values(): image_path = ('%s_%s' % (host, plugin.name)).replace("\\", "/") charts.append((plugin.name, image_path)) return charts
def __init__(self, argv=None): self.interval = None self.records = [] self._keys = {} XmlRpcBaseServer.__init__(self, argv) self.plugins=MonitorPlugins(self._conf) self.plugins.registerPlugins() self._monitor = MonitorThread(self.records, self.plugins, self.host, self.interval) self._monitor.start()
def createMonitorChart(self, host): """Create monitrored server charts.""" stats = self.monitor[host] times = [] cvus_list = [] for stat in stats: test, cycle, cvus = stat.key.split(':') stat.cvus = cvus date = datetime.fromtimestamp(float(stat.time)) times.append(date.strftime("%H:%M:%S")) #times.append(int(float(stat.time))) # - time_start)) cvus_list.append(cvus) Plugins = MonitorPlugins() Plugins.registerPlugins() Plugins.configure(self.getMonitorConfig(host)) charts = [] for plugin in Plugins.MONITORS.values(): image_prefix = gnuplot_scriptpath(self.report_dir, '%s_%s' % (host, plugin.name)) data_prefix = gnuplot_scriptpath(self.report_dir, '%s_%s' % (host, plugin.name)) gplot_path = str( os.path.join(self.report_dir, '%s_%s.gplot' % (host, plugin.name))) r = plugin.gnuplot(times, host, image_prefix, data_prefix, gplot_path, self.chart_size, stats) if r != None: gnuplot(gplot_path) charts.extend(r) return charts
class MonitorServer(XmlRpcBaseServer): """The XML RPC monitor server.""" server_name = "monitor" method_names = XmlRpcBaseServer.method_names + [ 'startRecord', 'stopRecord', 'getResult', 'getXmlResult', 'getMonitorsConfig' ] def __init__(self, argv=None): self.interval = None self.records = [] self._keys = {} XmlRpcBaseServer.__init__(self, argv) self.plugins = MonitorPlugins(self._conf) self.plugins.registerPlugins() self._monitor = MonitorThread(self.records, self.plugins, self.host, self.interval) self._monitor.start() def _init_cb(self, conf, options): """init callback.""" self.interval = conf.getfloat('server', 'interval') self._conf = conf def startRecord(self, key): """Start to monitor if it is the first key.""" self.logd('startRecord %s' % key) if not self._keys.has_key(key) or self._keys[key][1] is not None: self._monitor.startRecord() self._keys[key] = [len(self.records), None] return 1 def stopRecord(self, key): """Stop to monitor if it is the last key.""" self.logd('stopRecord %s' % key) if not self._keys.has_key(key) or self._keys[key][1] is not None: return 0 self._keys[key] = [self._keys[key][0], len(self.records)] self._monitor.stopRecord() return 1 def getResult(self, key): """Return stats for key.""" self.logd('getResult %s' % key) if key not in self._keys.keys(): return [] ret = self.records[self._keys[key][0]:self._keys[key][1]] return ret def getMonitorsConfig(self): ret = {} for plugin in (self.plugins.MONITORS.values()): conf = plugin.getConfig() if conf: ret[plugin.name] = conf return ret def getXmlResult(self, key): """Return result as xml.""" self.logd('getXmlResult %s' % key) ret = self.getResult(key) ret = [stat.__repr__(key) for stat in ret] return '\n'.join(ret) def test(self): """auto test.""" key = 'internal_test_monitor' self.startRecord(key) sleep(3) self.stopRecord(key) self.log(self.records) self.log(self.getXmlResult(key)) return 1
def __init__(self, argv=None): XmlRpcBaseServer.__init__(self, argv) self.plugins=MonitorPlugins(self._conf) self.plugins.registerPlugins()
class MonitorServer(XmlRpcBaseServer): """The XML RPC monitor server.""" server_name = "monitor" method_names = XmlRpcBaseServer.method_names + [ 'startRecord', 'stopRecord', 'getResult', 'getXmlResult', 'getMonitorsConfig'] def __init__(self, argv=None): self.interval = None self.records = [] self._keys = {} XmlRpcBaseServer.__init__(self, argv) self.plugins=MonitorPlugins(self._conf) self.plugins.registerPlugins() self._monitor = MonitorThread(self.records, self.plugins, self.host, self.interval) self._monitor.start() def _init_cb(self, conf, options): """init callback.""" self.interval = conf.getfloat('server', 'interval') self._conf=conf def startRecord(self, key): """Start to monitor if it is the first key.""" self.logd('startRecord %s' % key) if not self._keys.has_key(key) or self._keys[key][1] is not None: self._monitor.startRecord() self._keys[key] = [len(self.records), None] return 1 def stopRecord(self, key): """Stop to monitor if it is the last key.""" self.logd('stopRecord %s' % key) if not self._keys.has_key(key) or self._keys[key][1] is not None: return 0 self._keys[key] = [self._keys[key][0], len(self.records)] self._monitor.stopRecord() return 1 def getResult(self, key): """Return stats for key.""" self.logd('getResult %s' % key) if key not in self._keys.keys(): return [] ret = self.records[self._keys[key][0]:self._keys[key][1]] return ret def getMonitorsConfig(self): ret = {} for plugin in (self.plugins.MONITORS.values()): conf = plugin.getConfig() if conf: ret[plugin.name] = conf return ret def getXmlResult(self, key): """Return result as xml.""" self.logd('getXmlResult %s' % key) ret = self.getResult(key) ret = [stat.__repr__(key) for stat in ret] return '\n'.join(ret) def test(self): """auto test.""" key = 'internal_test_monitor' self.startRecord(key) sleep(3) self.stopRecord(key) self.log(self.records) self.log(self.getXmlResult(key)) return 1