def main(): timer=Timer() config=agentConfig.get_config() print(config) server = ServerPlugin() data = server.check() print(data) sender=Sender(port=config['recv_port']) sender.emit(data) print("send finished total cost time:"+str(timer.total())) return 0
def run(self): global monitor_data_past timer = Timer() plugins={} count={} for pluginName in self.basic_plugin: Plugin=get_plugin_class(pluginName) plugin=Plugin() plugins[pluginName]=plugin count[pluginName]=plugin.frequency/self.check_frequency for pluginName in self.get_run_plugins(): Plugin=get_plugin_class(pluginName) plugin=Plugin() plugins[pluginName]=plugin count[pluginName]=plugin.frequency/self.check_frequency while(self.run_forever): timer.start() #do check for name,plugin in plugins.items(): if count[name] != 1: count[name] = count[name] - 1 else: count[name] = plugin.frequency/self.check_frequency if name == 'LibvirtPlugin': monitor_data_cur,data=plugin.check(monitorData=monitor_data_past) monitor_data_past = monitor_data_cur else: data=plugin.check() log.debug("check "+name+" get:"+str(data)) if isinstance(data, list): for datanode in data: self.sender.emit(datanode) else: self.sender.emit(data) cost=timer.total() if cost > self.check_frequency: log.warn("collect metrics cost time {0} is longer than check_frequency {1}".format(cost, self.check_frequency)) else: log.debug("sleep {0}s for next loop".format(self.check_frequency - cost)) time.sleep(self.check_frequency - cost)