wlst weblogicデータソースランタイム情報の取得
背景
Weblogicはconsoleでデータソースの実行時統計を表示できます.例えば、現在のアクティビティ数、最大容量、最小容量などです.サーバーの数が膨大であるか、データソースの統計監視機能が必要である場合は、プログラムタイミングでデータソースの実行時情報を取得する必要があります.2つのスキームでデータソースの実行時情報を取得できます. JMXによりweblogicランタイムMBean情報を取得し、MBeanからデータソースランタイム情報を取得する. jythonスクリプトによりデータソースのランタイム情報を取得することも、本明細書で説明する方法です.
wlstスクリプト
基本的な考え方は、接続サーバを通じてデータソースの実行時情報を取得し、csvフォーマットを通じてファイルに出力し、csvファイルはexcelを通じて統計分析を行うことができ、csvファイルをサーバにアップロードして第三者プログラムを通じて統計分析を行うことができる.
スクリプトの実行
wlstスクリプトを実行するには、weblogic環境が必要です.サーバで実行することをお勧めします.まず を設定する.
2行目のスクリプトはスクリプトをサーバにアップロードし、wlstツールでスクリプト を実行します.
スクリプトはconsoleアドレス、管理者アカウント、管理者パスワードを指定する必要があります.スクリプトの実行に成功すると、現在のディレクトリに
統計複数サーバ{{とうけい:ふくすうさーば}}
複数のサーバを統計する場合は、呼び出しスクリプトをもう1つ書き、
最後に書く
jythonは少数派の言語で、ネット上の資料は少ないが、使い方はpythonとほとんど一致しており、jythonの資料が見つからない場合はpythonを調べてみることができる.
Weblogicはconsoleでデータソースの実行時統計を表示できます.例えば、現在のアクティビティ数、最大容量、最小容量などです.サーバーの数が膨大であるか、データソースの統計監視機能が必要である場合は、プログラムタイミングでデータソースの実行時情報を取得する必要があります.2つのスキームでデータソースの実行時情報を取得できます.
wlstスクリプト
基本的な考え方は、接続サーバを通じてデータソースの実行時情報を取得し、csvフォーマットを通じてファイルに出力し、csvファイルはexcelを通じて統計分析を行うことができ、csvファイルをサーバにアップロードして第三者プログラムを通じて統計分析を行うことができる.
import sys
url=sys.argv[1]
username=sys.argv[2]
password=sys.argv[3]
connect(username,password,'t3://'+url)
file=open("datasource.csv",'a')
file.write("machine,server,Name,ActiveConnectionsAverageCount,ActiveConnectionsCurrentCount,ActiveConnectionsHighCount,ConnectionDelayTime,ConnectionsTotalCount,CurrCapacity,CurrCapacityHighCount,DeploymentState,FailedReserveRequestCount,FailuresToReconnectCount,HighestNumAvailable,HighestNumUnavailable,LeakedConnectionCount,NumAvailable,NumUnavailable,PrepStmtCacheAccessCount,PrepStmtCacheAddCount,PrepStmtCacheCurrentSize,PrepStmtCacheDeleteCount,PrepStmtCacheHitCount,PrepStmtCacheMissCount,Properties,ReserveRequestCount,State,WaitingForConnectionCurrentCount,WaitingForConnectionFailureTotal,WaitingForConnectionHighCount,WaitingForConnectionSuccessTotal,WaitingForConnectionTotal,WaitSecondsHighCount
")
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 "Server:" , tempServer
print "Datasource:" , dataSource.getName()
print "ActiveCount" , dataSource.getActiveConnectionsCurrentCount()
file.write(url+",")
file.write(str(tempServer.getName())+",")
file.write(str(dataSource.getName())+",")
file.write(str(dataSource.getActiveConnectionsAverageCount())+",")
file.write(str(dataSource.getActiveConnectionsCurrentCount())+",")
file.write(str(dataSource.getActiveConnectionsHighCount())+",")
file.write(str(dataSource.getConnectionDelayTime())+",")
file.write(str(dataSource.getConnectionsTotalCount())+",")
file.write(str(dataSource.getCurrCapacity())+",")
file.write(str(dataSource.getCurrCapacityHighCount())+",")
file.write(str(dataSource.getDeploymentState())+",")
file.write(str(dataSource.getFailedReserveRequestCount())+",")
file.write(str(dataSource.getFailuresToReconnectCount())+",")
file.write(str(dataSource.getHighestNumAvailable())+",")
file.write(str(dataSource.getHighestNumUnavailable())+",")
file.write(str(dataSource.getLeakedConnectionCount())+",")
file.write(str(dataSource.getNumAvailable())+",")
file.write(str(dataSource.getNumUnavailable())+",")
file.write(str(dataSource.getPrepStmtCacheAccessCount())+",")
file.write(str(dataSource.getPrepStmtCacheAddCount())+",")
file.write(str(dataSource.getPrepStmtCacheCurrentSize())+",")
file.write(str(dataSource.getPrepStmtCacheDeleteCount())+",")
file.write(str(dataSource.getPrepStmtCacheHitCount())+",")
file.write(str(dataSource.getPrepStmtCacheMissCount())+",")
file.write(str(dataSource.getProperties())+",")
file.write(str(dataSource.getReserveRequestCount())+",")
file.write(str(dataSource.getState())+",")
file.write(str(dataSource.getWaitingForConnectionCurrentCount())+",")
file.write(str(dataSource.getWaitingForConnectionFailureTotal())+",")
file.write(str(dataSource.getWaitingForConnectionHighCount())+",")
file.write(str(dataSource.getWaitingForConnectionSuccessTotal())+",")
file.write(str(dataSource.getWaitingForConnectionTotal())+",")
file.write(str(dataSource.getWaitSecondsHighCount()))
file.write("
")
スクリプトの実行
wlstスクリプトを実行するには、weblogic環境が必要です.サーバで実行することをお勧めします.
$DOMAIN_HOME/bin/
ディレクトリに入り、setDomainEnv.sh
スクリプトを実行し、weblogic環境cd /u01/Middleware/user_projects/domains/portal_domain/bin
. ./setDomainEnv.sh
2行目のスクリプトは
.
で始まり、この点がなければ設定は有効ではありません.cd /home/oracle/scripts
java weblogic.WLST datasource.py localhost:7001 weblogic password
スクリプトはconsoleアドレス、管理者アカウント、管理者パスワードを指定する必要があります.スクリプトの実行に成功すると、現在のディレクトリに
datasource.csv
ファイルが生成され、excelで直接開くこともできます.また、curl
コマンドでリモートサーバにアップロードすることもできます.統計複数サーバ{{とうけい:ふくすうさーば}}
複数のサーバを統計する場合は、呼び出しスクリプトをもう1つ書き、
datasource.py
を複数回呼び出すことができます.cd /u01/Middleware/user_projects/domains/portal_domain/bin
. ./setDomainEnv.sh
cd /home/oracle/scripts
java weblogic.WLST datasource.py localhost:7001 weblogic password
java weblogic.WLST datasource.py localhost:7002 weblogic password
java weblogic.WLST datasource.py localhost:7003 weblogic password
java weblogic.WLST datasource.py localhost:7004 weblogic password
java weblogic.WLST datasource.py localhost:7005 weblogic password
# ...
最後に書く
jythonは少数派の言語で、ネット上の資料は少ないが、使い方はpythonとほとんど一致しており、jythonの資料が見つからない場合はpythonを調べてみることができる.