- Testing DataSource Status using WLST: but this one only uses the current JDBCServiceRuntine, thus that of the AdminServer
- WebLogic DataSource Monitoring Using WLST: this one lists all the properties of all the datasources of all the running servers
Thus I had to combine those two, sauce it with my own way of wlst-scripting (see my other blog entries). Also I want a tabular form, that got me into troubles with printing the result of the testPool() method. But I came up with the following script, testDS.py:
#############################################################################
# Test Datasources on a domain
#
# @author Martien van den Akker, Darwin-IT Professionals
# @version 2.1, 2016-10-04
#
#############################################################################
# Modify these values as necessary
import sys, traceback
scriptName = sys.argv[0]
#
#
lineSeperator='__________________________________________________________________________________'
#
#
def usage():
print 'Call script as: '
print 'Windows: wlst.cmd '+scriptName+' -loadProperties localhost.properties'
print 'Linux: wlst.sh '+scriptName+' -loadProperties environment.properties'
print 'Property file should contain the following properties: '
print "adminUrl=darlin-vce:7001"
print "adminUser=weblogic"
print "adminPwd=welcome1"
#
#
def connectToadminServer(adminUrl, adminServerName):
print(lineSeperator)
print('Try to connect to the AdminServer')
try:
connect(userConfigFile=usrCfgFile, userKeyFile=usrKeyFile, url=adminUrl)
except NameError, e:
print('Apparently user config properties usrCfgFile and usrKeyFile not set.')
print('Try to connect to the AdminServer adminUser and adminPwd properties')
connect(adminUser, adminPwd, adminUrl)
#
#
def main():
try:
pad=' '
print(lineSeperator)
print('Check datasources for domain')
print(lineSeperator)
print ('Connect to the AdminServer: '+adminServerName)
connectToadminServer(adminUrl, adminServerName)
print(lineSeperator)
allServers=domainRuntimeService.getServerRuntimes();
if (len(allServers) > 0):
for tempServer in allServers:
jdbcServiceRT = tempServer.getJDBCServiceRuntime();
dataSources = jdbcServiceRT.getJDBCDataSourceRuntimeMBeans();
print('\nServer '+tempServer.getName())
if (len(dataSources) > 0):
print('Datasource '[:30]+'\tState\tTest')
for dataSource in dataSources:
testPool = dataSource.testPool()
dataSourceName = dataSource.getName()+pad
dataSourceNamePad=dataSourceName[:30]
if (testPool == None):
print dataSourceNamePad+'\t'+dataSource.getState()+'\tOK'
else:
print dataSourceNamePad+'\t'+dataSource.getState()+'\tFailure: '
print testPool
print(lineSeperator)
print('Done...')
print(lineSeperator)
except NameError, e:
print('Apparently properties not set.')
print "Please check the property: ", sys.exc_info()[0], sys.exc_info()[1]
usage()
except:
apply(traceback.print_exception, sys.exc_info())
exit(exitcode=1)
#
main();
Of course it's easy to extent the table with properties from the monitor script in WebLogic DataSource Monitoring Using WLST.
Which runs pretty neat. Run it with a shell script like the following testDS.sh script:
#!/bin/bash ############################################################################# # Test DataSources using wlst. # # @author Martien van den Akker, Darwin-IT Professionals # @version 2.1, 2016-06-27 # ############################################################################# # . fmw12c_env.sh echo echo Test Datasources wlst.sh ./testDS.py -loadProperties fmw.properties
For the fmw12c_env.sh and fmw.properties files look here.
1 comment :
it is missing:
adminServerName=AdminServer
in the print out at usage().
nice script, thanks !
Post a Comment