Пример #1
0
def monitorProcExist(monitorObjectList):
    """
     判断指定的线程是否有存在。
     @monitorObjectList: [{'proc_name':procName,'proc_cpu_limit':procCpuLimit}]
    """
    warnToPersonList=[]
    procNameMap={}
    for monitorProcObject in monitorObjectList:
        if procNameMap.has_key(monitorProcObject['proc_name'])==False:
            procNameMap[monitorProcObject['proc_name']]=False
    pidObjectList=SystemInfo.getCPUUsedByPidName(procNameMap.keys())
    if pidObjectList==None:
        log.info('psutil的插件没有安装,或者不支持psutil的低版本的linux。')
        return warnToPersonList
    for pidObject in pidObjectList:#如果线程已经存在,将状态设置成True
        procNameMap[pidObject[0]]=True
    warnStr=''
    for procName,isExist in procNameMap.iteritems():
        if isExist==False and len(warnStr)==0:
            warnStr=MONITOR_NAME+' 线程告警:线程名称:'+procName+'不存在.'
        elif isExist==False:
            warnStr+=',线程名称:'++procName+'不存在.'
    if len(warnStr)>0:
        log.info('线程告警: %s',warnStr)
        warnToPersonList.append(warnStr)
    return warnToPersonList
Пример #2
0
def monitorProcCpu(monitorObjectList,saveDbMsgDict):
    """
    1.根据线程名称获取相应线程的告警信息.
    @monitorObjectList: [{'proc_name':procName,'proc_cpu_limit':procCpuLimit}]
    """
    warnToPersonList=[]
    procNameMap={}
    for monitorProcObject in monitorObjectList:
        if procNameMap.has_key(monitorProcObject['proc_name'])==False and monitorProcObject['proc_cpu_limit'].isdigit():
            procNameMap[monitorProcObject['proc_name']]=monitorProcObject['proc_cpu_limit']
    pidObjectList=SystemInfo.getCPUUsedByPidName(procNameMap.keys())
    if pidObjectList==None:
        log.info('psutil的插件没有安装,或者不支持psutil的低版本的linux。')
        return warnToPersonList
    saveDBMsgDict['procCpu']=pidObjectList
    for pidObject in pidObjectList:
        if pidObject[2]>=float(procNameMap[pidObject[0]]):
            log.info('线程CPU告警: pid:%s,pid_name:%s,cpu_limit:%s,real_cpu:%s',pidObject[0],pidObject[1],procNameMap[pidObject[0]],str(pidObject[2]))
            warnStr=MONITOR_NAME+' 线程CPU告警:线程名称:'+pidObject[0]+' 线程ID:'+pidObject[1]+' 阀值:'+procNameMap[pidObject[0]]++' 时间值:'+str(pidObject[2])
            warnToPersonList.append(warnStr)
    return warnToPersonList