Ejemplo n.º 1
0
 def _parseServer(self, props):
     r'@types: java.util.Properties -> Server'
     objectNameStr = props.get('jmxObjectName')
     from javax.management import ObjectName
     objectName = ObjectName(objectNameStr)
     id_ = props.get('ID') or objectName.getKeyProperty('name')
     # vmParameters = props.get('VmParameters')
     type_ = props.get('Type')
     name = props.get('Name')
     kernelVersion = props.get('KernelVersion')
     javaHome = props.get('java.home')
     javaVersion = props.get('java.vm.version')
     serverTypeToClass = {'dispatcher': sap_jee.DispatcherServer,
                          'server':     sap_jee.JobServer
                          }
     serverClass = serverTypeToClass.get(type_)
     if not serverClass:
         raise ValueError("Unknown server type: %s" % type_)
     # JVM name is not used so can be any value
     jvm = jee.Jvm("java", version=javaVersion)
     jvm.resourcePath = javaHome
     return serverClass(id_, name, version=kernelVersion,
                        objectName=objectNameStr, jvm=jvm)
Ejemplo n.º 2
0
def stats(server_name):
    typeExp = re.compile(".*(type=\w+).*", re.IGNORECASE)
#    nameExp = re.compile(r'name=\w+(?:-\w+)+', re.IGNORECASE) #".*(name=\w+).*"
    domainList = remote.getDomains()
    for domEle in domainList:
        str = domEle + ":*"
        for ele in remote.queryMBeans(ObjectName(str),None):
            type = None
            name = None
            #print ele
            m = re.match(typeExp, ele.toString())
            if(m):
                type = re.split('=', m.group(1))[1]
            if(re.findall(r'name=[^,]+', ele.toString())):
                name = re.split('=', re.findall(r'name=[^,]+', ele.toString())[0])[1]
                if name[-1] == ']':
                    name = name[:-1]
#            if(type and name):
#                print "type:%s, name:%s" % (type, name)
#            elif(type):
#                print "type:%s" % type
            if(type.lower() == "threadpool"):
                print "type:%s, name:%s" % (type, name)
                objName = ObjectName(ele.getObjectName().getCanonicalName())
                attrList = ['currentThreadCount', 'currentThreadsBusy', 'maxThreads']
                valList = []
                for idx in range(len(attrList)):
                    valList.append(`remote.getAttribute(objName, attrList[idx])`)
                dictionary = dict(zip(attrList, valList))
#                print "Thread Details for %s :" % server_name
                dstFile = server_name + '.Thread.' + name + '.csv'
                printSortedDictValues(dstFile, dictionary)
            elif(type.lower() == "datasource"):
                print "type:%s, name:%s" % (type, name.replace('\"',''))
                objName = ObjectName(ele.getObjectName().getCanonicalName())
                attrList = ['numActive', 'numIdle']
                valList = []
                for idx in range(len(attrList)):
                    valList.append(`remote.getAttribute(objName, attrList[idx])`)
                dictionary = dict(zip(attrList, valList))
#                print "DataSource Details for %s:%s" % (server_name, name.replace('\"',''))
                dstFile = server_name + '.DS.' + name.replace('\"','') + '.csv'
                printSortedDictValues(dstFile, dictionary)
            elif(type.lower() == "manager"):
                objName = ObjectName(ele.getObjectName().getCanonicalName())
                name = objName.getKeyProperty("path").replace('/', '')
                attrList = ['sessionCounter', 'activeSessions', 'maxActiveSessions']
                valList = []
                for idx in range(len(attrList)):
                    valList.append(`remote.getAttribute(objName, attrList[idx])`)
                dictionary = dict(zip(attrList, valList))
                print "Session Details for %s:%s" % (server_name, name)
                dstFile = server_name + '.APP.' + name + '.csv'
                printSortedDictValues(dstFile, dictionary)
            elif(type.lower() == "memory"):
                objName = ObjectName(ele.getObjectName().getCanonicalName())
                obj = remote.getAttribute(objName, "HeapMemoryUsage")
                attrList = ['init', 'committed', 'used', 'max']
                valList = []
                for idx in range(len(attrList)):
                    valList.append(`int(obj.get(attrList[idx])/1024/1024)`)
                dictionary = dict(zip(attrList, valList))
                print "Heap Details for %s" % server_name
                dstFile = server_name + '.Heap.csv'
                printSortedDictValues(dstFile, dictionary)