A quick tutorial for middleware products

Tuesday, April 21, 2015

On April 21, 2015 by Kamlesh   5 comments
WLST Script for checking the status of JDBC Datasource in Weblogic 


WLST has some good features like we can monitor the weblogic domain, monitor JMS Cluster, Datasource target and untarget etc.
In this post I am explaining about how to monitor JDBC Datasource like status of datasource, load on datasource etc. by WLST script.

Step by step explaining how to prepare the JDBCmonitor.py file and how to run it.

1)  Prepare the JDBCmonitor.py file and save it in somewhere in your machine.


#############################################################################
# @author Middlewaregeek.blogspot.in
#############################################################################

from java.io import FileInputStream
import java.lang
import os
import string

username = 'weblogic'

password = 'weblogic'

url='t3://localhost:7001'

connect(username,password,url)

allServers=domainRuntimeService.getServerRuntimes();

if (len(allServers) > 0):

  for tempServer in allServers:

    jdbcServiceRT = tempServer.getJDBCServiceRuntime();

    dataSources = jdbcServiceRT.getJDBCDataSourceRuntimeMBeans();

    if (len(dataSources) > 0):

        for dataSource in dataSources:

            print 'ActiveConnectionsAverageCount      '  ,  dataSource.getActiveConnectionsAverageCount()

            print 'ActiveConnectionsCurrentCount      '  ,  dataSource.getActiveConnectionsCurrentCount()

            print 'ActiveConnectionsHighCount         '  ,  dataSource.getActiveConnectionsHighCount()

            print 'ConnectionDelayTime                '  ,  dataSource.getConnectionDelayTime()

            print 'ConnectionsTotalCount              '  ,  dataSource.getConnectionsTotalCount()

            print 'CurrCapacity                       '  ,  dataSource.getCurrCapacity()

            print 'CurrCapacityHighCount              '  ,  dataSource.getCurrCapacityHighCount()

            print 'DeploymentState                    '  ,  dataSource.getDeploymentState()

            print 'FailedReserveRequestCount          '  ,  dataSource.getFailedReserveRequestCount()

            print 'FailuresToReconnectCount           '  ,  dataSource.getFailuresToReconnectCount()

            print 'HighestNumAvailable                '  ,  dataSource.getHighestNumAvailable()

            print 'HighestNumUnavailable              '  ,  dataSource.getHighestNumUnavailable()

            print 'LeakedConnectionCount              '  ,  dataSource.getLeakedConnectionCount()

            print 'ModuleId                           '  ,  dataSource.getModuleId()

            print 'Name                               '  ,  dataSource.getName()

            print 'NumAvailable                       '  ,  dataSource.getNumAvailable()

            print 'NumUnavailable                     '  ,  dataSource.getNumUnavailable()

            print 'Parent                             '  ,  dataSource.getParent()

            print 'PrepStmtCacheAccessCount           '  ,  dataSource.getPrepStmtCacheAccessCount()

            print 'PrepStmtCacheAddCount              '  ,  dataSource.getPrepStmtCacheAddCount()

            print 'PrepStmtCacheCurrentSize           '  ,  dataSource.getPrepStmtCacheCurrentSize()

            print 'PrepStmtCacheDeleteCount           '  ,  dataSource.getPrepStmtCacheDeleteCount()

            print 'PrepStmtCacheHitCount              '  ,  dataSource.getPrepStmtCacheHitCount()

            print 'PrepStmtCacheMissCount             '  ,  dataSource.getPrepStmtCacheMissCount()

            print 'Properties                         '  ,  dataSource.getProperties()

            print 'ReserveRequestCount                '  ,  dataSource.getReserveRequestCount()

            print 'State                              '  ,  dataSource.getState()

            print 'Type                               '  ,  dataSource.getType()

            print 'VersionJDBCDriver                  '  ,  dataSource.getVersionJDBCDriver()

            print 'WaitingForConnectionCurrentCount   '  ,  dataSource.getWaitingForConnectionCurrentCount()

            print 'WaitingForConnectionFailureTotal   '  ,  dataSource.getWaitingForConnectionFailureTotal()

            print 'WaitingForConnectionHighCount      '  ,  dataSource.getWaitingForConnectionHighCount()

            print 'WaitingForConnectionSuccessTotal   '  ,  dataSource.getWaitingForConnectionSuccessTotal()

            print 'WaitingForConnectionTotal          '  ,  dataSource.getWaitingForConnectionTotal()

            print 'WaitSecondsHighCount               '  ,  dataSource.getWaitSecondsHighCount()



2) Set the class path by using setDomainEnv script or go to the below path and execute JDBCmonitor.py file.

$WL_HOME/wlserver_10.3/common/bin

Then execute below command

$ ./wlst.sh <location of .py file >/ JDBCmonitor.py


3) You should get following output.



Initializing WebLogic Scripting Tool (WLST) ...

*sys-package-mgr*: skipping bad jar, '/WL_HOME/wlserver_10.3/common/lib/mssqlserver.jar'
Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

Connecting to t3://localhost:7001 with userid
Successfully connected to Admin Server 'admin' that belongs to domain 'XYZ'.

Warning: An insecure protocol was used to connect to the
server. To ensure on-the-wire security, the SSL port or
Admin port should be used instead.

Location changed to domainRuntime tree. This is a read-only tree with DomainMBean as the root.
For more help, use help(domainRuntime)

ActiveConnectionsAverageCount       0
ActiveConnectionsCurrentCount       0
ActiveConnectionsHighCount          0
ConnectionDelayTime                 30
ConnectionsTotalCount               20
CurrCapacity                        10
CurrCapacityHighCount               1
DeploymentState                     2
FailedReserveRequestCount           0
FailuresToReconnectCount            0
HighestNumAvailable                 10
HighestNumUnavailable               0
LeakedConnectionCount               0
ModuleId                            DS1
Name                                DS1
NumAvailable                        10
NumUnavailable                      0
Parent                              [MBeanServerInvocationHandler]com.bea:Name=AdminServer,Location=AdminServer,Type=ServerRuntime
PrepStmtCacheAccessCount            0
PrepStmtCacheAddCount               0
PrepStmtCacheCurrentSize            0
PrepStmtCacheDeleteCount            0
PrepStmtCacheHitCount               0
PrepStmtCacheMissCount              0
Properties                          {databaseName=jdbc:pointbase:server://localhost:7001/TestDS, user=XYZ}
ReserveRequestCount                 0
State                               Running
Type                                JDBCDataSourceRuntime
VersionJDBCDriver                   com.pointbase.jdbc.jdbcUniversalDriver
WaitingForConnectionCurrentCount    0
WaitingForConnectionFailureTotal    0
WaitingForConnectionHighCount       0
WaitingForConnectionSuccessTotal    0
WaitingForConnectionTotal           0
WaitSecondsHighCount                0





Regards,

Middlewaregeek



5 comments:

  1. Hi Kamlesh,

    Nice article can you add some images as well for better visuals

    ReplyDelete
  2. Hi Kamlesh,

    it didnt work for me.

    "AttributeError: 'NoneType' object has no attribute 'getServerRuntimes'"

    Didnt you know what happens here?
    I'm using WL 12.1.3

    greets Jens


    ReplyDelete
  3. Hi Jens,

    Before start this you should have mbean enable , then only it will take this attribute.

    Thanks,
    Kamlesh

    ReplyDelete
  4. how do you do this:
    Before start this you should have mbean enable

    ReplyDelete
  5. Thank You and that i have a super supply: Is It Good To Buy Old House And Renovate house renovation experts

    ReplyDelete