JBoss EAP の CLI を利用してデータソースの統計情報を抽出する
JBoss EAP の CLI を利用してデータソースの統計情報を抽出する手順を整理します。
(このネタも殆ど同じ会社の方に教えていただいた情報ですが…)
- 5秒毎に任意のデータソースの統計情報から ActiveCount の行を抽出し、値の右側にあるカンマを削除するサンプル
while true; do $JBOSS_HOME/bin/jboss-cli.sh -c --command="/subsystem=datasources/data-source=<データソース名>/statistics=pool:read-resource(include-runtime=true)" | grep "ActiveCount" | awk '{print $3}' | sed -e 's/,//'; sleep 5; done
5
5
5
5
$JBOSS_HOME/bin/jboss-cli.sh -c --command="/subsystem=datasources/data-source=<データソース名>/statistics=pool:read-resource(include-runtime=true)"
{
"outcome" => "success",
"result" => {
"ActiveCount" => 5,
"AvailableCount" => 4,
"AverageBlockingTime" => 3L,
"AverageCreationTime" => 252L,
"AverageGetTime" => 3L,
"AveragePoolTime" => 26L,
"AverageUsageTime" => 5L,
"BlockingFailureCount" => 0,
"CreatedCount" => 5,
"DestroyedCount" => 0,
"IdleCount" => 4,
"InUseCount" => 1,
"MaxCreationTime" => 724L,
"MaxGetTime" => 140L,
"MaxPoolTime" => 142980L,
"MaxUsageTime" => 175L,
"MaxUsedCount" => 5,
"MaxWaitCount" => 4,
"MaxWaitTime" => 37L,
"TimedOut" => 0,
"TotalBlockingTime" => 8261L,
"TotalCreationTime" => 1262L,
"TotalGetTime" => 591603L,
"TotalPoolTime" => 5243097L,
"TotalUsageTime" => 1138902L,
"WaitCount" => 1236,
"XACommitAverageTime" => 0L,
"XACommitCount" => 0L,
"XACommitMaxTime" => 0L,
"XACommitTotalTime" => 0L,
"XAEndAverageTime" => 0L,
"XAEndCount" => 0L,
"XAEndMaxTime" => 0L,
"XAEndTotalTime" => 0L,
"XAForgetAverageTime" => 0L,
"XAForgetCount" => 0L,
"XAForgetMaxTime" => 0L,
"XAForgetTotalTime" => 0L,
"XAPrepareAverageTime" => 0L,
"XAPrepareCount" => 0L,
"XAPrepareMaxTime" => 0L,
"XAPrepareTotalTime" => 0L,
"XARecoverAverageTime" => 0L,
"XARecoverCount" => 0L,
"XARecoverMaxTime" => 0L,
"XARecoverTotalTime" => 0L,
"XARollbackAverageTime" => 0L,
"XARollbackCount" => 0L,
"XARollbackMaxTime" => 0L,
"XARollbackTotalTime" => 0L,
"XAStartAverageTime" => 0L,
"XAStartCount" => 0L,
"XAStartMaxTime" => 0L,
"XAStartTotalTime" => 0L,
"statistics-enabled" => true
}
}
$JBOSS_HOME/bin/jboss-cli.sh -c --output-json --command="/subsystem=datasources/data-source=<データソース名>/statistics=pool:read-resource(include-runtime=true)" | jq '[.result.ActiveCount,.result.IdleCount,.result.InUseCount,.result.MaxUsedCount] | @csv'
"5,2,3,5"
- 上記処理をループして5秒毎に CSV テキストを出力するサンプル
while true; do $JBOSS_HOME/bin/jboss-cli.sh -c --output-json --command="/subsystem=datasources/data-source=<データソース名>/statistics=pool:read-resource(include-runtime=true)" | jq '[.result.ActiveCount,.result.IdleCount,.result.InUseCount,.result.MaxUsedCount] | @csv'; sleep 5; done
"5,4,1,5"
"5,3,2,5"
"5,3,2,5"
"5,4,1,5"
本格的に利用する場合は、実行タイミングで時刻情報も出力するような改良が必要ですね…。
こんなサンプルですが何か参考になれば幸いです。
(追記)
- 上記処理の先頭に日付時刻情報を出力するようにしたサンプル
while true; do date '+%Y%m%d-%H%M%S' | tr '\n' ' '; $JBOSS_HOME/bin/jboss-cli.sh -c --output-json --command="/subsystem=datasources/data-source=<データソース名>/statistics=pool:read-resource(include-runtime=true)" | jq '[.result.ActiveCount,.result.IdleCount,.result.InUseCount,.result.MaxUsedCount] | @csv'; sleep 5; done
20220810-212010 "5,2,3,5"
20220810-212023 "5,4,1,5"
20220810-212037 "5,3,2,5"
20220810-212052 "5,3,2,5"