Пример #1
0
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)
Пример #2
0
    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 = []
Пример #3
0
    def __init__(self):
        ""

        self.logger = LoggerUtil().getLogger()
        self.conf = ConfigManage()
        # 线程池
        self.work = WorkerPool()
Пример #4
0
    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)
Пример #5
0
    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)
Пример #6
0
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))
Пример #7
0
    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
Пример #8
0
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
Пример #9
0
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)
Пример #10
0
    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'
Пример #11
0
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))
Пример #12
0
    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