监控Weblogic性能情况脚本

import time

datetime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
date = time.strftime('%Y-%m-%d',time.localtime())

serverip=sys.argv[1]
port=sys.argv[2]
filename=sys.argv[3]

url="t3://" + str(serverip) + ":" + str(port)

def monitorServer():
    global serverHealthState,OpenSocketsCurrentCount,OverallHealthState,SocketsOpenedTotalCount,State,serverName
    serverRuntime()
    cd("/")
    HealthState = cmo.getHealthState()
    tmpHealthState = str(HealthState).split(',')
    tmpServerHealthState = str(tmpHealthState[1]).split(':')
    serverHealthState = tmpServerHealthState[1]
    penSocketsCurrentCount = cmo.getOpenSocketsCurrentCount()
    verallHealthState = cmo.getOverallHealthState()
    SocketsOpenedTotalCount = cmo.getSocketsOpenedTotalCount()
    State = cmo.getState()
    serverName = cmo.getName()

def monitorApplication():
    global appName,appHealthState,OpenSessionsCurrentCount,OpenSessionsHighCount,SessionsOpenedTotalCount,Status
    serverConfig()
    appDeploys = cmo.getAppDeployments()
    lastAppName = ""
    for app in appDeploys:
        appName = app.getName() 
        if appName != "domainhealth-100":
            lastAppName = str(appName);
            serverRuntime()
            cd("/ApplicationRuntimes/" + str(appName))
            HealthState = cmo.getHealthState()
            tmpHealthState = str(HealthState).split(',')
            tmpappHealthState = str(tmpHealthState[1]).split(':')
            appHealthState = tmpappHealthState[1]
            compoRts = cmo.getComponentRuntimes()
            for compo in compoRts:
                    comName = compo.getName()
                    cd("/ApplicationRuntimes/" + str(appName) + "/ComponentRuntimes/" + str(comName))
                    penSessionsCurrentCount = cmo.getOpenSessionsCurrentCount()
                    penSessionsHighCount = cmo.getOpenSessionsHighCount()
                    SessionsOpenedTotalCount = cmo.getSessionsOpenedTotalCount()
                    Status = cmo.getStatus()
        else:
            appName = lastAppName
        
def monitorJVM():
        global HeapFreeCurrent,HeapSizeCurrent,HeapFreePercent,HeapSizeMax
        serverRuntime()
        cd("/JVMRuntime/" + str(serverName))
        HeapFreeCurrent = cmo.getHeapFreeCurrent()
        HeapSizeCurrent = cmo.getHeapSizeCurrent()
        HeapFreePercent = cmo.getHeapFreePercent()
        HeapSizeMax = cmo.getHeapSizeMax()
                                
def monitorExecuteThreadPool():
    global ExecuteThreadIdleCount,ExecuteThreadTotalCount,threadHealthState,HoggingThreadCount,PendingUserRequestCount,QueueLength,StandbyThreadCount,Throughput,CompletedRequestCount,ExecuteThreadCount
    serverRuntime()
    ExecuteThreadIdleCount = ""
    ExecuteThreadTotalCount = ""
    CompletedRequestCount = ""
    HealthState = ""
    threadHealthState = ""
    HoggingThreadCount = ""
    PendingUserRequestCount = ""
    QueueLength = ""
    StandbyThreadCount = ""
    Throughput = ""
    try:
        cd("/ThreadPoolRuntime/ThreadPoolRuntime")
        ExecuteThreadIdleCount = cmo.getExecuteThreadIdleCount()
        ExecuteThreadTotalCount = cmo.getExecuteThreadTotalCount()
        CompletedRequestCount = cmo.getCompletedRequestCount()
        HealthState = cmo.getHealthState()
        tmpHealthState = str(HealthState).split(',')
        tmpThreadHealthState = str(tmpHealthState[1]).split(':')
        threadHealthState = tmpThreadHealthState[1]
        HoggingThreadCount = cmo.getHoggingThreadCount()
        PendingUserRequestCount = cmo.getPendingUserRequestCount()
        QueueLength = cmo.getQueueLength()
        StandbyThreadCount = cmo.getStandbyThreadCount()
        ExecuteThreadCount = ExecuteThreadTotalCount - ExecuteThreadIdleCount - StandbyThreadCount
        Throughput = cmo.getThroughput()
    except WLSTException,e:
        cd("/ExecuteQueueRuntimes/weblogic.kernel.Default")
        ExecuteThreadIdleCount = cmo.getExecuteThreadCurrentIdleCount()
        ExecuteThreadTotalCount = cmo.getExecuteThreadTotalCount()
        ExecuteThreadCount = ExecuteThreadTotalCount - ExecuteThreadIdleCount
        CompletedRequestCount = ""
        HealthState = ""
        threadHealthState = ""
        HoggingThreadCount = ""
        PendingUserRequestCount = cmo.getPendingRequestCurrentCount()
        QueueLength = ""
        StandbyThreadCount = ""
        Throughput = ""
                        
def monitorJDBCDataSource():
    global dsName,ActiveConnectionsCurrentCount,ActiveConnectionsHighCount,ConnectionsTotalCount,CurrCapacityHighCount,HighestNumAvailable,HighestNumUnavailable,dsState,WaitingForConnectionCurrentCount,WaitingForConnectionHighCount
    serverRuntime()
    dsName = ""
    ActiveConnectionsCurrentCount = ""
    ActiveConnectionsHighCount = ""
    ConnectionsTotalCount = ""
    CurrCapacityHighCount = ""
    HighestNumAvailable = ""
    HighestNumUnavailable = ""
    dsState = ""
    WaitingForConnectionCurrentCount = ""
    WaitingForConnectionHighCount = ""
    try:
        cd("/JDBCServiceRuntime/" + str(serverName))
        dataSources = cmo.getJDBCDataSourceRuntimeMBeans()
        for ds in dataSources:
            dsName = ds.getName()
            ActiveConnectionsCurrentCount = ds.getActiveConnectionsCurrentCount()
            ActiveConnectionsHighCount = ds.getActiveConnectionsHighCount()
            ConnectionsTotalCount = ds.getConnectionsTotalCount()
            CurrCapacityHighCount = ds.getCurrCapacityHighCount()
            HighestNumAvailable = ds.getHighestNumAvailable()
            HighestNumUnavailable = ds.getHighestNumUnavailable()
            dsState = ds.getState()
            WaitingForConnectionCurrentCount = ds.getWaitingForConnectionCurrentCount()
            WaitingForConnectionHighCount = ds.getWaitingForConnectionHighCount()
    except WLSTException,e:
        dsName = ""
        ActiveConnectionsCurrentCount = ""
        ActiveConnectionsHighCount = ""
        ConnectionsTotalCount = ""
        CurrCapacityHighCount = ""
        HighestNumAvailable = ""
        HighestNumUnavailable = ""
        dsState = ""
        WaitingForConnectionCurrentCount = ""
        WaitingForConnectionHighCount = ""
                
def writeFile():
    rptFile = open(str(filename),'a')
    rptFile.write(str(datetime) + ","+ str(serverip) + "," + str(port) + "," + str(serverName) + "," + str(State) + "," + str(serverHealthState) + "," + str(OpenSocketsCurrentCount) + "," + str(SocketsOpenedTotalCount) + "," + str(appName) + "," + str(Status) + "," + str(appHealthState) + "," + str(OpenSessionsCurrentCount) + "," + str(OpenSessionsHighCount) + "," + str(SessionsOpenedTotalCount) + "," +str(threadHealthState) + "," + str(ExecuteThreadCount) + "," + str(ExecuteThreadIdleCount) + "," + str(StandbyThreadCount) + "," + str(HoggingThreadCount) + "," + str(ExecuteThreadTotalCount) + "," + str(Throughput) + "," + str(CompletedRequestCount) + "," + str(QueueLength) + "," + str(PendingUserRequestCount) + "," + str(HeapFreeCurrent) + "," + str(HeapSizeCurrent) + "," + str(HeapFreePercent) + "," + str(HeapSizeMax) + "," + str(dsName) + "," + str(dsState) + "," + str(ActiveConnectionsCurrentCount) + "," + str(ActiveConnectionsHighCount) + "," + str(ConnectionsTotalCount) + "," + str(HighestNumAvailable) + "," + str(HighestNumUnavailable) + "," + str(WaitingForConnectionCurrentCount) + "," +str(WaitingForConnectionHighCount))
    rptFile.write('\n')
    rptFile.close()
                
    rptFile = open("/webapp/monitor/result/byDomain/" + str(serverip) + "_" + str(port) + ".csv",'a')
    rptFile.write(str(datetime) + ","+ str(serverip) + "," + str(port) + "," + str(serverName) + "," + str(State) + "," + str(serverHealthState) + "," + str(OpenSocketsCurrentCount) + "," + str(SocketsOpenedTotalCount) + "," + str(appName) + "," + str(Status) + "," + str(appHealthState) + "," + str(OpenSessionsCurrentCount) + "," + str(OpenSessionsHighCount) + "," + str(SessionsOpenedTotalCount) + "," +str(threadHealthState) + "," + str(ExecuteThreadCount) + "," + str(ExecuteThreadIdleCount) + "," + str(StandbyThreadCount) + "," + str(HoggingThreadCount) + "," + str(ExecuteThreadTotalCount) + "," + str(Throughput) + "," + str(CompletedRequestCount) + "," + str(QueueLength) + "," + str(PendingUserRequestCount) + "," + str(HeapFreeCurrent) + "," + str(HeapSizeCurrent) + "," + str(HeapFreePercent) + "," + str(HeapSizeMax) + "," + str(dsName) + "," + str(dsState) + "," + str(ActiveConnectionsCurrentCount) + "," + str(ActiveConnectionsHighCount) + "," + str(ConnectionsTotalCount) + "," + str(HighestNumAvailable) + "," + str(HighestNumUnavailable) + "," + str(WaitingForConnectionCurrentCount) + "," +str(WaitingForConnectionHighCount))
    rptFile.write('\n')
    rptFile.close()
        
def writeErrFile():
    rptFile = open(str(filename),'a')
    rptFile.write(str(datetime) + ","+ str(serverip) + "," + str(port) + ",Not Running!")
    rptFile.write('\n')
    rptFile.close()
                
    rptFile = open("/webapp/monitor/result/byDomain/" + str(serverip) + "_" + str(port) + ".csv",'a')
    rptFile.write(str(datetime) + ","+ str(serverip) + "," + str(port))
    rptFile.write('\n')
    rptFile.close()
        
if __name__ == "main":
    try:
        connect('weblogic', '1234qwer,.', url)
    except WLSTException,e:
        writeErrFile()
        
    monitorServer()
    monitorApplication()
    monitorJVM()
    monitorExecuteThreadPool()
    monitorJDBCDataSource()
    writeFile()
    
exit()

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22408716/viewspace-751408/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22408716/viewspace-751408/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值