def add_rmq_res_stat(self, node_id, res): ''' 添加一条rabbitmq资源使用统计 :param res: :return: ''' result = dict() if 'stat_time' not in res or 'cpu_usage' not in res or 'mem_usage' not in res or 'disk_spend' not in res or 'msg_summary' not in res: result['errno'] = -1 result['errstr'] = Error.params_fields_not_found() return result try: stat = RmqStat() stat.node_id = node_id stat.stat_time = res['stat_time'] stat.cpu_usage = res['cpu_usage'] stat.mem_usage = res['mem_usage'] stat.disk_spend = res['disk_spend'] stat.net_speed = res['net_speed'] stat.msg_summary = json.dumps(res['msg_summary']) self.database.add(stat) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() result['id'] = stat.id except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def add_machine_stat(self, node_id, res): ''' 添加物理服务器统计记录 :param res: :return: ''' result = dict() if 'stat_time' not in res or 'cpu_usage' not in res or 'mem_usage' not in res or 'disk_free' not in res: result['errno'] = -1 result['errstr'] = Error.params_fields_not_found() return result try: stat = MachineStat() stat.node_id = node_id stat.stat_time = res['stat_time'] stat.cpu_usage = res['cpu_usage'] stat.mem_usage = res['mem_usage'] stat.mem_total = res['mem_total'] stat.disk_free = res['disk_free'] self.database.add(stat) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() result['id'] = stat.id except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def add_crash(self, node_id, crash): ''' 添加一条rabbitmq崩溃记录 :param crash: :return: ''' result = dict() if 'pid' not in crash or 'start_time' not in crash or 'crash_time' not in crash: result['errno'] = -1 result['errstr'] = Error.params_fields_not_found() return result crash_info = RmqCrash() crash_info.node_id = node_id crash_info.pid = crash['pid'] crash_info.start_time = crash['start_time'] crash_info.crash_time = crash['crash_time'] try: self.database.add(crash_info) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() result['id'] = crash_info.id except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def add_task(self, task): ''' 创建测试任务 :param task: :return: ''' result = dict() if 'name' not in task or 'key' not in task or 'type' not in task or 'start_time' not in task or 'params' not in task: result['errno'] = -1 result['errstr'] = Error.params_fields_not_found() return result # 先检查任务是否存在 try: find_task = self.database.query(OrmTask).filter_by( name=task['name']).first() # key不同,说明不是子任务,属于重复添加 if find_task != None and find_task.key != task['key']: result['errno'] = -1 result['errstr'] = Error.task_exists() return result # key相同,说明是子任务,不需要再添加,返回成功 if find_task != None and find_task.key == task['key']: result['errno'] = 0 result['task_id'] = find_task.id result['errstr'] = Error.success() return result except Exception as err: print(err) result['errno'] = -1 result['errstr'] = str(err) return result # 任务不存在,添加 db_task = OrmTask() db_task.name = task['name'] db_task.key = task['key'] db_task.type = task['type'] db_task.start_time = task['start_time'] db_task.params = task['params'] try: self.database.add(db_task) self.database.commit() result['errno'] = 0 result['id'] = db_task.id result['errstr'] = Error.success() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def add_task_seq(self, task_id, seq): ''' 添加任务指标统计序列 :param seq: :return: ''' result = dict() # 如果不存在统计时间,则参数错误 if seq['stat_time'] == None: result['errno'] = -1 result['errstr'] = Error.params_fields_not_found() return result # 生产者消费者在同一个进程情况 if 'sent' in seq and 'received' in seq: try: task_seq = TaskSeq() task_seq.task_id = task_id task_seq.stat_time = seq['stat_time'] task_seq.sent = seq['sent'] task_seq.received = seq['received'] task_seq.latency_min = seq['latency_min'] task_seq.latency_median = seq['latency_median'] task_seq.latency_75th = seq['latency_75th'] task_seq.latency_95th = seq['latency_95th'] task_seq.latency_99th = seq['latency_99th'] self.database.add(task_seq) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) # 生产者消费者分离模式下的生产者 elif 'sent' in seq and 'received' not in seq: sql = 'insert into task_seq(task_id,stat_time,sent) values(%s,%d,%d) ON DUPLICATE KEY UPDATE sent=sent+%d' % \ (task_id, int(seq['stat_time']), seq['sent'], seq['sent']) try: self.database.execute(sql) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) # 分离模式下的消费者上报数据 elif 'sent' not in seq and 'received' in seq: sql = 'insert into task_seq(task_id,stat_time,received,latency_min,latency_median,latency_75th,latency_95th,latency_99th) ' \ 'values(%s,%d,%d,%d,%d,%d,%d,%d) ON DUPLICATE KEY UPDATE received=received+%d,latency_min=%d,latency_median=%d,latency_75th=%d,' \ 'latency_95th=%d,latency_99th=%d'% \ (task_id, int(seq['stat_time']), seq['received'], seq['latency_min'], seq['latency_median'], seq['latency_75th'], seq['latency_95th'], seq['latency_99th'], \ seq['received'], seq['latency_min'], seq['latency_median'], seq['latency_75th'], seq['latency_95th'], seq['latency_99th']) try: self.database.execute(sql) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) else: result['errno'] = -1 result['errstr'] = Error.params_fields_not_found() return result