def startBusiness(): dblist = connectDb.getConnectInfo(configurl + "dbConnect") if type(dblist) is str: return dblist #VOP库连接 dbconn = connectDb.connectDb(dblist[0]) if type(dbconn) is str: return dbconn cursor = connectDb.getCursor(dbconn) if type(cursor) is str: connectDb.closeConnect(dbconn) return cursor insert_log = '' try: deal_err = dealBusiness(dbconn,cursor) insert_log = insert_log + deal_err except Exception,e: Errdict = {'sqlErr':"监控程序异常,请查看报错日志信息,路径:" + err_log} arm_err = armErr(cursor,Errdict) insert_log = insert_log + arm_err is_err = connectDb.sqlcommit(dbconn) if type(is_err) is str: insert_log = insert_log + "【异常信息告警插入日志数据," + is_err + "】" with open(r'%s'%err_log,'a') as error_log: print >> error_log,('%s 监控程序异常,%s' % (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),e))
def dealBusiness(dbconn,cursor): cmds = dealSql.getAcqCMD(cursor) #cmds = [[acq_id],{host_id:[[cmd,relation,key,arm_msg,arm_type,mod_id,m_id],[...]],host_id2:[[...],[...]]}] if type(cmds) is str: return cmds acq_itv = cmds[0] cmddict = cmds[1] if len(acq_itv) == 0: return '' #acq_itv = [acq_id,...] #cmddict = {host_id:[[cmd,relation,key,arm_msg,arm_type,mod_id,m_id],[...]],host_id2:[[...],[...]]} rstdict = dealSshCmd(cmddict,cursor,dbconn) #rstdict = {'err':[err1,err2,...],mod_id:{arm_type:[[m_id,arm_msg,acq_rst],[...],...],arm_type2:[[..],[..]]},mod_id2:{...}} #err1 = '' err2={mod_id:'err',mod_id2:'err'} sqlErr = '' Errlog = [] for mod_id in rstdict.keys(): if mod_id == 'err': for err in rstdict[mod_id]: Errlog.append(err) elif mod_id == 'sqlErr': sqlErr = sqlErr + rstdict[mod_id] else: insert_rst = insert(cursor,mod_id,rstdict[mod_id]) if len(insert_rst) == 0: pass else: for rst in insert_rst: sqlErr = sqlErr + "【" + rst + "】" is_err = connectDb.sqlcommit(dbconn) if type(is_err) is str: sqlErr = sqlErr + "【插入告警日志" + is_err + "】" if len(acq_itv) <> 0: for i in range(len(acq_itv)): if i == 0: itv_ids = str(acq_itv[i]) else: itv_ids = itv_ids + "," + str(acq_itv[i]) isErr = dealSql.updateInterval(cursor,itv_ids) if type(isErr) is str: sqlErr = sqlErr + "【" + isErr + "】" #ErrLog.append("更新采集频率配置表最近采集时间Faild" + isErr) is_err = connectDb.sqlcommit(dbconn) if type(is_err) is str: sqlErr = sqlErr + "【更新采集频率配置表最近采集时间" + is_err + "】" #异常报错信息处理 sqlErr = '' Errlog = ['err',{mod_id:'err'}] Errdict = {} if len(sqlErr) == 0: pass else: Errdict['sqlErr'] = sqlErr for err_msg in Errlog: if type(err_msg) is str: if Errdict.has_key('host'): Errdict['host'] = Errdict['host'] + "【" + err_msg + "】" else: Errdict['host'] = "【" + err_msg + "】" else: for i_key in err_msg.keys(): Errdict[i_key] = err_msg[i_key] #Errdict = {'sqlErr':'err','host':'err',mod_id:'err'} arm_err = armErr(cursor,Errdict) is_err = connectDb.sqlcommit(dbconn) if type(is_err) is str: sqlErr = sqlErr + "【异常信息告警插入日志数据," + is_err + "】" return arm_err
def dealBusiness(dbconn, cursor): sqlErr = "" errdict = {} arm_itvs = dealSql.getArmItv(cursor) if type(arm_itvs) is str: return arm_itvs if len(arm_itvs) == 0: return "" itvdict = {} arm_itv_ids = "" ############################ for arm_itv in arm_itvs: itvdict[arm_itv[0]] = arm_itv[1] if len(arm_itv_ids) == 0: arm_itv_ids = str(arm_itv[0]) else: arm_itv_ids = arm_itv_ids + "," + str(arm_itv[0]) confId_rsts = dealSql.getArmConfId(cursor, arm_itv_ids) if type(confId_rsts) is str: return confId_rsts if len(confId_rsts) == 0: return "" log_ids = "" errMsgDict = {} # errMsgDict = {arm_type:[[role,msg,log_id]]} for confId_rst in confId_rsts: # confId_rst = mod_idvalue,mod_type,flag,arm_itv_id if str(confId_rst[1]) == "1": # 告警模块查询 arm_msgs = dealSql.getArmMsgByMod(cursor, confId_rst[0], itvdict[confId_rst[3]]) else: arm_msgs = dealSql.getArmMsgByConfId(cursor, confId_rst[0], itvdict[confId_rst[3]]) # msgs = err_msg,role_name,arm_log_id if type(arm_msgs) is str: sqlErr = sqlErr + "【" + arm_msgs + "】" continue if len(arm_msgs) == 0: continue if str(confId_rst[2]) == "2": if len(log_ids) == 0: log_ids = str(confId_rst[2]) else: log_ids = log_ids + "," + str(confId_rst[2]) else: for arm_msg in arm_msgs: if errMsgDict.has_key(arm_msg[1]): errMsgDict[arm_msg[1]].append([arm_msg[0], arm_msg[2]]) else: errMsgDict[arm_msg[1]] = [[arm_msg[0], arm_msg[2]]] if len(log_ids) == 0: pass else: isErr = dealSql.updateArmLog(cursor, log_ids, "3") if type(isErr) is str: sqlErr = sqlErr + "【" + isErr + "】" # errMsgDict = {role:[[msg,log_id]]} for role in errMsgDict.keys(): phonelist = dealSql.getphoneNumList(cursor, role) if type(phonelist) is str: sqlErr = sqlErr + "【" + phonelist + "】" continue if len(phonelist) == 0: continue log_send_ids = message.message_send(errMsgDict[role], phonelist) if len(log_send_ids) == 0: sqlErr = sqlErr + "【告警短信发送失败,请查看短信告警日志" + logurl + "】" continue isErr = dealSql.updateArmLog(cursor, log_send_ids, "2") if type(isErr) is str: sqlErr = sqlErr + "【" + isErr + "】" is_err = connectDb.sqlcommit(dbconn) if type(is_err) is str: sqlErr = sqlErr + "【更新告警日志状态数据," + is_err + "】" return sqlErr