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=="