weblogic监控

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

  

原文地址:https://www.cnblogs.com/slqt/p/10905955.html