In this post we are providing WebSphere connection pool monitoring - wsadmin script. Its written in Python/Jython and can be used for WebSphere application server 6+ versions
How the script is designed
- It will find all the running server instances registered with Websphere Application server DMGR (cell) and take a list of running connection pools targeted on those servers.
- It will automatically set 80 percent of the connection max_limit as a threshold.
- It will print an alert message, in case of possible connection pool overflow. When the current connection limit reaches the threshold.
Version compatibility
Websphere Application Server 6.1 and above ( for was 6 there is little bit modification required)
The Sourcecode
import re
Running_JVMS=AdminControl.queryNames("*:type=Server,*").split(java.lang.System.getProperty("line.separator"))
ignorelist=['nodeagent','dmgr']
TMPFILE='/tmp/PoolContents.tmp'
global current_conn
for JVM in Running_JVMS:
ServerName=AdminControl.invoke(JVM ,"getName()")
if ServerName not in ignorelist:
DS=AdminControl.queryNames('*:process='+ServerName+',type=DataSource,*').split(java.lang.System.getProperty("line.separator"))
for entry in DS:
if AdminControl.invoke(entry, "getStatus()") != '99':
print "============================================"
print "ServerName :", ServerName
DSN=AdminControl.invoke(entry, "getName()")
print "DataSourceName:", DSN
JNDN=AdminControl.invoke(entry, "getJndiName()")
print "JNDIName :", JNDN
MaxConn=AdminControl.invoke(entry, "getMaxConnections()")
print "MaxConnections:", MaxConn
print "StatusCode :", AdminControl.invoke(entry, "getStatus()")
##########################
fout=open(TMPFILE, 'w')
data=AdminControl.invoke(entry, "showPoolContents")
fout.write(data)
fout.close()
percent=0.8
threshold=int(MaxConn)*float(percent)
print "Threshold :", threshold
try:
fin=open(TMPFILE)
filedata=fin.readlines()
for line in filedata:
#match 1= re.search(r'\:\s\d', line)
#matchstr=re.search(r'Total number of connection in shared pool', line)
matchstr=re.search('(.....\s......\s..\s..........\s..\s......\s....):(\s\d)', line)
if matchstr:
#current_conn=match.group().split(":")[1].strip(" ")
current_conn=matchstr.group(2)
if int(current_conn) >= int(threshold):
ALERT='YES'
ALERTSTRING='Connection Pool %r reached 80 percent of its max_limit on Server %r'%(DSN,ServerName)
print ALERTSTRING
else:
ALERT='NO'
break
else:
current_conn=0
fin.close()
print "Currently used:", current_conn
print "============================================"
except IOError:
print 'Something went Wrong.'
how to execute this script?
Save the above code with ".py" extension and run it with wsadmin.For example
wsadmin.sh -lang jython -username <username> -password <password> -lang jython -f <saved py file name>
Hope it helps
For more exclusive posts like this in web and middleware technologies. Leave your name and mail id. Trust us, we hate spam like you do.
Thanks
A K S A R A V
Write to us at [email protected]
Follow us on Facebook or Twitter
To Join our Community in Whatsapp – Click here




