class Server(Daemon): "" #系统初始化 def __init__(self, config): self.logger = LoggerUtil().getLogger() self.config = config self.running = False pidfile = self.config['pidfile'] stderr = self.config['stderr'] stdout = self.config['stdout'] stdin = self.config['stdin'] Daemon.__init__(self, pidfile, stderr, stdout, stdin) #启动任务 def _run(self): while True: try: task = TaskBss() task.process() except Exception, ex: self.logger.error('task process error,msg:%s' % str(ex)) time.sleep(30)
def __init__(self): "" # log self.logger = LoggerUtil().getLogger() # config conf = ConfigManage() mq_conf = conf.get_mq_conf() self.mq_addr = mq_conf['mq_addr'] self.monitor_exchange = mq_conf['monitor_exchange'] self.monitor_type = mq_conf['monitor_type'] # 采集时间 app_conf = conf.get_app_conf() self.collect = app_conf['collect'] # vm self.vm = VmManage() # app self.app = AppManage() # infos 信息 self.infos = []
def __init__(self): "" self.logger = LoggerUtil().getLogger() self.conf = ConfigManage() # 线程池 self.work = WorkerPool()
def __init__(self, config): self.logger = LoggerUtil().getLogger() self.config = config self.running = False pidfile = self.config['pidfile'] stderr = self.config['stderr'] stdout = self.config['stdout'] stdin = self.config['stdin'] Daemon.__init__(self, pidfile, stderr, stdout, stdin)
def __init__(self, config): # 获取监控频率 conf = ConfigManage() app_conf = conf.get_app_conf() self.rate = app_conf['rate'] self.logger = LoggerUtil().getLogger() self.config = config self.running = False pidfile = self.config['pidfile'] stderr = self.config['stderr'] stdout = self.config['stdout'] stdin = self.config['stdin'] Daemon.__init__(self, pidfile, stderr, stdout, stdin)
class MonitorServer(Daemon): "" #系统初始化 def __init__(self, config): # 获取监控频率 conf = ConfigManage() app_conf = conf.get_app_conf() self.rate = app_conf['rate'] self.logger = LoggerUtil().getLogger() self.config = config self.running = False pidfile = self.config['pidfile'] stderr = self.config['stderr'] stdout = self.config['stdout'] stdin = self.config['stdin'] Daemon.__init__(self, pidfile, stderr, stdout, stdin) #启动任务 def _run(self): mointor = MonitorVm() # 监控 thread.start_new_thread(mointor.monitor, ()) # 定时发送 while True: try: mointor.send_msg() except Exception, ex: self.logger.error('task process error,msg:%s' % str(ex)) time.sleep(int(self.rate))
def __init__(self): "" self.logger = LoggerUtil().getLogger() self.vm = VmManage() conf = ConfigManage() # mq配置 mq_conf = conf.get_mq_conf() self.mq_addr = mq_conf['mq_addr'] self.task_exchange = mq_conf['task_exchange'] self.task_type = mq_conf['task_type'] # 消息 self.messages = {} res = 'task_rst' # 代理成功 self.messages['network_portproxy_ok'] = 'network.portproxy.ok' self.messages['network_portproxy_ok_router'] = res + '.network.portproxy.ok' # 代理失败 self.messages['network_portproxy_error'] = 'network.portproxy.error' self.messages['network_portproxy_error_router'] = res + '.network.portproxy.error' self.messages['network_portproxy_error_code'] = 2001 # 删除代理成功 self.messages['network_dropportproxy_ok'] = 'network.dropportproxy.ok' self.messages['network_dropportproxy_ok_router'] = res + '.network.dropportproxy.ok' # 删除代理失败 self.messages['network_dropportproxy_error'] = 'network.dropportproxy.error' self.messages['network_dropportproxy_error_router'] = res + '.network.dropportproxy.error' self.messages['network_dropportproxy_error_code'] = 2002 # 查询代理成功 self.messages['network_findportproxy_ok'] = 'network.findportproxy.ok' self.messages['network_findportproxy_ok_router'] = res + '.network.findportproxy.ok' # 查询代理失败 self.messages['network_findportproxy_error'] = 'network.findportproxy.error' self.messages['network_findportproxy_error_router'] = res + '.network.findportproxy.error' self.messages['network_findportproxy_error_code'] = 2003
def main() : logger = LoggerUtil().getLogger() try : # Initialize Options parser = optparse.OptionParser() parser.add_option("-c", "--configfile", dest="configfile", default="/etc/cattle.conf", help="config file") parser.add_option("-v", "--version", dest="version", default=False, action="store_true", help="display the version and exit") parser.add_option("-u", "--user", dest="user", default=None, help="Change to specified unprivilegd user") parser.add_option("-g", "--group", dest="group", default=None, help="Change to specified unprivilegd group") # Parse Command Line Args (options, args) = parser.parse_args() # Initial variables uid = -1 gid = -1 if options.version: print "cattle version %s" % (get_cattle_version()) sys.exit(0) configfile = options.configfile # Pass the exit up stream rather then handle it as an general exception except SystemExit, e: raise SystemExit
class TaskBss(): "" def __init__(self): "" self.logger = LoggerUtil().getLogger() self.conf = ConfigManage() # 线程池 self.work = WorkerPool() # 收到请求处理函数 def process_action(self, message): "" try: # 1 返回信息 routing_key = message.delivery_info['routing_key'] exchange = message.delivery_info['exchange'] msg = message.body action = routing_key.split('.', 1)[1] self.logger.info('action: %s ;message: %s' % (action, str(msg))) js = JsonParser() json_msg = js.decode(msg) # 2 json格式报错,日志记录 if json_msg == -1: self.logger.error('josn format error!') return bs = BusinessAction(action, json_msg) self.work.add_job( bs.job, None, None, None, ) except Exception, e: log = str(e) self.logger.error('process_action : ' + log)
def __init__(self): "" self.vm = VmManage() self.logger = LoggerUtil().getLogger() conf = ConfigManage() # mq配置 mq_conf = conf.get_mq_conf() self.mq_addr = mq_conf['mq_addr'] self.task_exchange = mq_conf['task_exchange'] self.task_type = mq_conf['task_type'] # nc唯一id cattle_conf = conf.get_cattle_conf() self.engine_id = cattle_conf['engineId'] self.messages = {} res = 'task_rst' # 资源响应 self.messages['app_ask_can'] = 'app.deploy.can' self.messages['app_ask_router'] = res + '.app.deploy.can' # 部署失败 self.messages['app_deploy_error'] = 'app.deploy.error' self.messages['app_deploy_error_router'] = res + '.app.deploy.error' self.messages['app_deploy_error_code'] = 3001 # 部署成功 self.messages['app_deploy_ok'] = 'app.deploy.ok' self.messages['app_deploy_ok_router'] = res + '.app.deploy.ok' # 卸载失败 self.messages['app_drop_error'] = 'app.drop.error' self.messages['app_drop_error_router'] = res + '.app.drop.error' self.messages['app_drop_error_code'] = 3002 # 卸载成功 self.messages['app_drop_ok'] = 'app.drop.ok' self.messages['app_drop_ok_router'] = res + '.app.drop.ok' # 启动失败 self.messages['app_start_error'] = 'app.start.error' self.messages['app_start_error_router'] = res + '.app.start.error' self.messages['app_start_error_code'] = 3003 # 启动成功 self.messages['app_start_ok'] = 'app.start.ok' self.messages['app_start_ok_router'] = res + '.app.start.ok' # 关闭失败 self.messages['app_stop_error'] = 'app.stop.error' self.messages['app_stop_error_router'] = res + '.app.stop.error' self.messages['app_stop_error_code'] = 3004 # 关闭成功 self.messages['app_stop_ok'] = 'app.stop.ok' self.messages['app_stop_ok_router'] = res + '.app.stop.ok' # 配置失败 self.messages['app_conf_error'] = 'app.conf.error' self.messages['app_conf_error_router'] = res + '.app.conf.error' self.messages['app_conf_error_code'] = 3005 # 配置成功 self.messages['app_conf_ok'] = 'app.conf.ok' self.messages['app_conf_ok_router'] = res + '.app.conf.ok'
class MonitorVm(): "monitor vm" def __init__(self): "" # log self.logger = LoggerUtil().getLogger() # config conf = ConfigManage() mq_conf = conf.get_mq_conf() self.mq_addr = mq_conf['mq_addr'] self.monitor_exchange = mq_conf['monitor_exchange'] self.monitor_type = mq_conf['monitor_type'] # 采集时间 app_conf = conf.get_app_conf() self.collect = app_conf['collect'] # vm self.vm = VmManage() # app self.app = AppManage() # infos 信息 self.infos = [] # 查询vm信息 def vm_info(self, vms=None): "" infos = [] # 如果没有vm,默认查询所有的vm信息 if vms == None: vms = [] vm_infos = self.vm.info_vms() for vm in vm_infos: vms.append(vm['vm_name'].encode('iso8859-1')) # 查询app信息 app_info = {} app_infos = self.app.app_info() for app in app_infos: app_info[app['vmName'].encode( 'iso8859-1')] = app['instanceId'].encode('iso8859-1') # 查询运行vm top 信息 tops = {} vm_info = os.popen( "virt-top -b -n 2 -d 0.5 --stream 2>/dev/null").read() num = 0 for tmp in vm_info.split("\n"): if tmp == "": continue top = tmp.split() if top[0] == "virt-top": num += 1 if top[0] == "virt-top" or top[0] == "ID": continue if num == 2: temp = {} cpu = top[6] mem = top[7] temp['cpuRate'] = cpu temp['memRate'] = mem tops[top[9]] = temp # 网卡流量 net_tmp = SystemStat.net_rate() net_rate = {} for rate in net_tmp: net_rate[rate['interface']] = rate['rate'] # 循环查询vm信息 for vmName in vms: info = {} # 1 vm name info['vmName'] = vmName # 2 vm stat state = vm_state(vmName)[vmName] info['vmState'] = state # 8 time info['eventTime'] = time.strftime("%Y-%m-%d %H:%M:%S") # 3 instanceId if vmName in app_info: info['instanceId'] = app_info[vmName] # 暂不发送 # 4 disk info # disk_info = os.popen('virt-df -d %s 2>/dev/null'%vmName).read() # diskInfo = [] # for tmp in disk_info.split("\n"): # lis = {} # if(tmp != ""): # disk = tmp.split() # if(disk[0] == "Filesystem"): # continue # content = {} # # content['used'] = disk[2] # content['available'] = disk[3] # content['rate'] = disk[4] # diskName = disk[0].split(":")[1] # lis[diskName] = content # diskInfo.append(lis) # info['diskInfo'] = diskInfo # 判断是否运行 if state != 'running': infos.append(info) continue # 5 net stat # 第一种方法 #info['netStats'] = vm_netstats(vmName)[vmName] # 第二种方法 netStats = [] # 可用‘ virsh domiflist test ’或者 ‘virsh domifstat test port22106’获取 nics = get_nics(vmName) for mac, attrs in nics.items(): tmp = {} if 'target' in attrs: dev = attrs['target'] if dev in net_rate: tmp['interface'] = dev.encode('iso8859-1') tmp['flow'] = net_rate[dev] netStats.append(tmp) info['netStats'] = netStats # 6 disk stat info['diskStats'] = vm_diskstats(vmName)[vmName] # 7 cpu mem if vmName in tops: info['cpuRate'] = tops[vmName]['cpuRate'] info['memRate'] = tops[vmName]['memRate'] infos.append(info) self.infos = infos # 运行的任务 def monitor(self): "" # 定时发送 while True: try: self.vm_info() except Exception, ex: self.logger.error('MonitorVm error,msg:%s' % str(ex)) time.sleep(int(self.collect))
def __init__(self): "" self.vm = VmManage() self.logger = LoggerUtil().getLogger() conf = ConfigManage() # mq配置 mq_conf = conf.get_mq_conf() self.mq_addr = mq_conf['mq_addr'] self.task_exchange = mq_conf['task_exchange'] self.task_type = mq_conf['task_type'] # nc唯一id cattle_conf = conf.get_cattle_conf() self.engine_id = cattle_conf['engineId'] # agent ip net_conf = conf.get_network_conf() self.engine_ip = net_conf['agent_ip'] # vm type virtual_conf = conf.get_virtual_conf() self.vm_type = virtual_conf['type'] self.messages = {} # 资源响应 res = 'task_rst' self.messages['vm_ask_can'] = 'vm.create.can' self.messages['vm_ask_router'] = res + '.vm.create.can' # 创建中 self.messages['vm_create_step'] = 'vm.create.step' self.messages['vm_create_step_router'] = res + '.vm.create.step' # 创建失败 self.messages['vm_create_error'] = 'vm.create.error' self.messages['vm_create_error_router'] = res + '.vm.create.error' self.messages['vm_create_error_code'] = 1001 # 创建成功 self.messages['vm_create_ok'] = 'vm.create.ok' self.messages['vm_create_ok_router'] = res + '.vm.create.ok' # 启动成功 self.messages['vm_start_ok'] = 'vm.start.ok' self.messages['vm_start_ok_router'] = res + '.vm.start.ok' # 启动失败 self.messages['vm_start_error'] = 'vm.start.error' self.messages['vm_start_error_router'] = res + '.vm.start.error' self.messages['vm_start_error_code'] = 1002 # 关闭电源成功 self.messages['vm_destory_ok'] = 'vm.destory.ok' self.messages['vm_destory_ok_router'] = res + '.vm.destory.ok' # 关闭电源失败 self.messages['vm_destory_error'] = 'vm.destory.error' self.messages['vm_destory_error_router'] = res + '.vm.destory.error' self.messages['vm_destory_error_code'] = 1003 # 软关机成功 self.messages['vm_shutdown_ok'] = 'vm.shutdown.ok' self.messages['vm_shutdown_ok_router'] = res + '.vm.shutdown.ok' # 软关机失败 self.messages['vm_shutdown_error'] = 'vm.shutdown.error' self.messages['vm_shutdown_error_router'] = res + '.vm.shutdown.error' self.messages['vm_shutdown_error_code'] = 1004 # 暂停成功 self.messages['vm_suspend_ok'] = 'vm.suspend.ok' self.messages['vm_suspend_ok_router'] = res + '.vm.suspend.ok' # 暂停失败 self.messages['vm_suspend_error'] = 'vm.suspend.error' self.messages['vm_suspend_error_router'] = res + '.vm.suspend.error' self.messages['vm_suspend_error_code'] = 1005 # 反暂停成功 self.messages['vm_resume_ok'] = 'vm.resume.ok' self.messages['vm_resume_ok_router'] = res + '.vm.resume.ok' # 反暂停失败 self.messages['vm_resume_error'] = 'vm.resume.error' self.messages['vm_resume_error_router'] = res + '.vm.resume.error' self.messages['vm_resume_error_code'] = 1006 # 配置修改成功 self.messages['vm_conf_ok'] = 'vm.conf.ok' self.messages['vm_conf_ok_router'] = res + '.vm.conf.ok' # 配置修改失败 self.messages['vm_conf_error'] = 'vm.conf.error' self.messages['vm_conf_error_router'] = res + '.vm.conf.error' self.messages['vm_conf_error_conf'] = 1007 # 添加硬盘成功 self.messages['vm_disk_ok'] = 'vm.disk.ok' self.messages['vm_disk_ok_router'] = res + '.vm.disk.ok' # 添加硬盘失败 self.messages['vm_disk_error'] = 'vm.disk.error' self.messages['vm_disk_error_router'] = res + '.vm.disk.error' self.messages['vm_disk_error_code'] = 1008 # 删除虚拟机成功 self.messages['vm_drop_ok'] = 'vm.drop.ok' self.messages['vm_drop_ok_router'] = res + '.vm.drop.ok' # 删除虚拟机失败 self.messages['vm_drop_error'] = 'vm.drop.error' self.messages['vm_drop_error_router'] = res + '.vm.drop.error' self.messages['vm_drop_error_code'] = 1009 # 查询虚拟机成功 self.messages['vm_find_ok'] = 'vm.find.ok' self.messages['vm_find_ok_router'] = res + '.vm.find.ok' # 查询虚拟机失败 self.messages['vm_find_error'] = 'vm.find.error' self.messages['vm_find_error_router'] = res + '.vm.find.error' self.messages['vm_find_error_code'] = 1010