- Memory usage
- Datasource connections
- HTTP Session
- Threads
The script is straight forward and appends each time a line in a result file. This can be used for furthe analyzing.
The property file:
# # Properties file # username=weblogic password=welcome1 adminurl=t3://node1.vijfhuizen.com:7001 domain=MyDomain # # Show Sessions # showsession=true appname=HelloWorldApplication webname=/helloworld # Show threads showthreads=true # Show memory showmemory=true # Show datasources showdatasources=true # # Result file # appendresultsto=/tmp/wlmon.csvThe WLST script:
import traceback
import getopt
from java.util import Calendar
import getopt
import sys
# simulate command line invocation
propFile= file('wlsmon.properties', 'r')
propDict= dict()
for propLine in propFile:
propDef= propLine.strip()
if len(propDef) == 0:
continue
if propDef[0] in ( '!', '#' ):
continue
punctuation= [ propDef.find(c) for c in ':= ' ] + [ len(propDef) ]
found= min( [ pos for pos in punctuation if pos != -1 ] )
name= propDef[:found].rstrip()
value= propDef[found:].lstrip(":= ").rstrip()
propDict[name]= value
propFile.close()
# Connection properties
username = propDict['username']
password = propDict['password']
adminurl = propDict['adminurl']
domain = propDict['domain']
appname = propDict['appname']
webname = propDict['webname']
# Switches
showsession = propDict['showsession']
showthreads = propDict['showthreads']
showmemory = propDict['showmemory']
showdatasources = propDict['showdatasources']
# Open file in append mode
appendresultsto = propDict['appendresultsto']
f = open(appendresultsto,'a')
# Connect to Adminserver
connect(username, password, adminurl)
#Get number of servers from the domain config
domainConfig()
managedServers=cmo.getServers()
heap_string = ''
session_string = ''
datasource_string = ''
thread_string = ''
#Get Runtime for our server
domainRuntime()
for managedServer in managedServers:
servername=managedServer.getName()
path = '/ServerRuntimes/' + servername
cd(path)
if cmo.getState() == 'RUNNING':
#Get all running applications
path='/ServerRuntimes/' + servername + '/JVMRuntime/' + servername
cd(path)
if showmemory == 'true':
hpfree = str(cmo.getHeapFreeCurrent())
hpfreepercent = str(cmo.getHeapFreePercent())
hpsizecurrent = str(cmo.getHeapSizeCurrent())
hpsizemax = str(cmo.getHeapSizeMax())
uptime = str(cmo.getUptime())
heap_string = uptime + ';' + hpsizemax + ';' + hpsizecurrent + ';' + hpfree + ';' + hpfreepercent
path = '/ServerRuntimes/' + servername
cd(path)
if showsession == 'true':
apps=cmo.getApplicationRuntimes()
for app in apps:
#We are intersted only on this application
if app.getName() == appname:
#Get all components in that application
comps=app.getComponentRuntimes()
for comp in comps:
if comp.getName() == servername + '_/' + webname:
#We are interested in only web components
if comp.getType() == 'WebAppComponentRuntime':
#Get all active sessions
sessionids=comp.getServletSessionsMonitoringIds()
session_string = str(len(sessionids))
path='/ServerRuntimes/' + servername + '/JDBCServiceRuntime/' + servername
cd(path)
if showdatasources == 'true':
dsMBeans = cmo.getJDBCDataSourceRuntimeMBeans()
for ds in dsMBeans:
name = ds.getName()
state = ds.getState()
currcapacity = str(ds.getCurrCapacity())
activeconnectionscurrentcount = str(ds.getActiveConnectionsCurrentCount())
activeconnectionshighcount = str(ds.getActiveConnectionsHighCount())
datasource_string = datasource_string + ';' + name + ';' + state + ';' + currcapacity + ';' + activeconnectionscurrentcount + ';' + activeconnectionshighcount
path='/ServerRuntimes/' + servername
cd(path)
if showthreads == 'true':
opensocks = cmo.getOpenSocketsCurrentCount();
path = '/ServerRuntimes/' + servername + '/ThreadPoolRuntime/ThreadPoolRuntime/'
cd(path)
executethreadtotal = str(cmo.getExecuteThreadTotalCount())
standbythreads = str(cmo.getStandbyThreadCount())
idlethreads = str(cmo.getExecuteThreadIdleCount())
pending = str(cmo.getPendingUserRequestCount())
hoggingthreads = str(cmo.getHoggingThreadCount())
serverthroughput = str(cmo.getThroughput())
thread_string = str(opensocks) + ';' + executethreadtotal + ';' + standbythreads + ';' + idlethreads + ';' + pending + ';' + hoggingthreads + ';' + serverthroughput
cal = Calendar.getInstance()
dt = cal.getTime()
f.write(str(dt) + ';' + servername + ';' + heap_string + ';' + session_string + datasource_string + ';' + thread_string + '\n')
#Disconnect and exit
f.close()
disconnect()
exit()