JBossのデータソース接続の使用量を監視する

事前設定

JBoss6

standalone.xmlに
datasourceにstatistics-enabled=”true”を追加する

JBoss7

設定の必要はないです。

データソース接続の使用量の取得

c:\jboss-eap-6.3\bin\jboss-cli.bat --connect --command="/subsystem=datasources/data-source=SQLServer_sample/statistics=pool:read-resource(include-runtime=true, recursive=true)"

プロンプト待ちをでなくする

set NOPAUSE=TRUE

一定時間ごとにログに吐き出すスクリプト

windowsには、sedとjqがないため
onigsed
jq-win64
が必要です。

onigsedは、
http://www.kt.rim.or.jp/~kbk/sed/
からダウンロードしてください。

jq-win64は、
https://stedolan.github.io/jq/
からダウンロードしてください。

poolread.txt

connect
/subsystem=datasources/data-source=SQLServer_sample/statistics=pool:read-resource(include-runtime=true, recursive=true)

jb.bat

set NOPAUSE=TRUE
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
 
set time2=%time: =0%
 
set hh=%time2:~0,2%
set mn=%time2:~3,2%
set ss=%time2:~6,2%
 
set filename=%yyyy%%mm%%dd%%hh%%mn%%ss%
echo date,time,ActiveCount,CreatedCount,DestroyedCount,InUseCount,MaxUsedCount,MaxWaitCount >pool_%filename%.log

:LOOP
call c:\boss-eap-6.3\bin\jboss-cli.bat --file=poolread.txt>test.log
set date2=%date%
set time2=%time: =0%
SET /P X=%date2%,<NUL >>pool_%filename%.log
SET /P X=%time2%,<NUL >>pool_%filename%.log
c:\onigsed -e s/=^>/:/g c:\test\test.log | jq-win64 -r "[.result.ActiveCount,.result.CreatedCount,.result.DestroyedCount,.result.InUseCount,.result.MaxUsedCount,.result.MaxWaitCount]|@csv" >>pool_%filename%.log
rem waitfor dummy /t 1>nul 2>&1 & verify>nul
goto :LOOP

1回の取得に1秒ぐらいかかるため、sleepしていませんが、rem waitforのremを外すことで取得間隔を調整できます。