connect('user', 'password', 't3://xx.xx.xx.xx:7001') def report_format(code, name, result, alert=0, children=None): _report_ = {'code': code, 'name': name, 'result': result, 'alert': alert} if children: _report_['children'] = children return _report_ # 获取所有server def get_all_server(): serverConfig() return cmo.getServers() # 获取所有运行中的server def get_run_servers(): print dir(domainRuntimeService) return domainRuntimeService.getServerRuntimes() def get_server_state(server_name): alert = 0 domainRuntime() state = cmo.lookupServerLifeCycleRuntime(server_name).getState() if state != 'RUNNING': alert = 1 return report_format('服务状态', state, alert) def get_thread(run_server): threadRuntime = run_server.getThreadPoolRuntime() # 执行线程总数 ETTC = threadRuntime.getExecuteThreadTotalCount() # 空闲执行线程 ETIC = threadRuntime.getExecuteThreadIdleCount() # 独占线程 HTC = threadRuntime.getHoggingThreadCount() # 备用线程 STC = threadRuntime.getStandbyThreadCount() BTC = (ETTC - STC - ETIC - 1) return report_format('服务端口连接数', BTC,0) def get_current_thread(run_server): threadRuntime = run_server.getThreadPoolRuntime() # 空闲执行线程 ETIC = threadRuntime.getExecuteThreadIdleCount() return report_format('空闲线程数', ETIC,0) <!-- def get_max_thread(run_server): threadRuntime = domainRuntimeService.getJRockitRuntime() print dir(threadRuntime) def get_min_thread(run_server): threadRuntime = run_server.getThreadPoolRuntime() ETIC = threadRuntime.getExecuteThreadPoolSizeMin() return report_format('最小线程数', ETIC,0) --> def get_current_heap(run_server): jvmRuntime = run_server.getJVMRuntime() # 返回当前JVM堆中内存数,单位时字节 current_heap = jvmRuntime.getHeapSizeCurrent() return report_format('堆大小', current_heap,0) def get_current_heap(run_server): jvmRuntime = run_server.getJVMRuntime() # 返回当前JVM堆中内存数,单位时字节 current_heap = jvmRuntime.getHeapSizeMax() return report_format('最大堆', current_heap,0) def get_jdbc(run_server): datasources = run_server.getJDBCServiceRuntime().getJDBCDataSourceRuntimeMBeans() result = '' if len(datasources) != 0: for ds in datasources: ds_name = ds.getName() ds_state = ds.getState() ActiveConnections = ds.getActiveConnectionsCurrentCount() result += '%s: %s: %s' % (ds_name, ds_state, ActiveConnections) else: result = 'NULL' return report_format('服务JDBC当前连接数', result, 0) def get_queue(run_server): threadRuntime = run_server.getThreadPoolRuntime() # 队列大小 ETIC = threadRuntime.getQueueLength() return report_format('队列长度', ETIC,0) # 获取每个server的属性 def check_server(server, run_server_dict): server_report = [] name = server.getName() run_server = run_server_dict.get(name) listen_address = server.getListenAddress() listen_port = server.getListenPort() machine = server.getMachine() if machine: machine = machine.getName() cluster = server.getCluster() if cluster: cluster = cluster.getName() server_report.append(report_format('集群', cluster, 0)) server_report.append(report_format('服务名称', name, 0)) server_report.append(report_format('监听IP', listen_address, 0)) server_report.append(report_format('监听端口', listen_port, 0)) server_report.append(report_format('计算机', machine, 0)) server_report.append(get_server_state(name)) if run_server: server_report.append(get_thread(run_server)) server_report.append(get_jdbc(run_server)) server_report.append(get_current_thread(run_server)) server_report.append(get_max_thread(run_server)) server_report.append(get_min_thread(run_server)) server_report.append(get_current_heap(run_server)) return server_report # 获取完整的domain属性 def get_domain(): # 获取domain_name domain_name = cmo.getName() # 获取所有运行中的server字典 run_server_dict = {} for i in get_run_servers(): run_server_dict[i.getName()] = i # 获取所有server状态 children = [] for s in get_all_server(): children.append(check_server(s, run_server_dict)) return report_format('domain', '单元节点', domain_name, 0, children) # 开始执行 reports = get_domain() print "==data==" print reports print "==data=="