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)
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)