예제 #1
0
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))        
예제 #2
0
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
예제 #3
0
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