Websphere Connection Pool Monitoring - wsadmin script

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

  1. 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.
  2. It will automatically set 80 percent of the connection max_limit as a threshold.
  3. 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.

Loading

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