- 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.
it is missing:
ReplyDeleteadminServerName=AdminServer
in the print out at usage().
nice script, thanks !