次のようなログファイルを実行して生成する長い自動化スイートがあります。
Time, API, Min, Max, Average, Current, Invocation
2013-07-22 14:52:39, api1, 167.0, 167.0, 167.0, 167.0, 1
2013-07-22 14:52:39, api1, 167.0, 169.0, 168.0, 169.0, 2
...
...
テストが完了したら、sar (または nmon、ただし最初に sar を試す) を介して Unix マシンの統計を自動的に収集したいと考えています。sar コマンドは次のようなものです。
sar -i 900 -f /var/log/sa/sa22 -s 10:00:00 -e 18:00:00
任意の数のマシンに SSH で接続し、XML ファイルから読み取った静的コマンドを実行する Java クラスが既にあります。後で解析するために出力をファイルに保存します。
私のジレンマは、テスト中に sar コマンドの実行を自動化したいということです (これはもちろん変更されます)。たとえば、上記のログ ファイルから開始時刻と終了時刻を取得し、それらの日付で sar を実行したいとします。Unix シェルでは、これらの日付を次のように取得できます。
SECOND_LINE=`sed -n '2p' ${LOG_DIR}/${CURRENT_DATE}_results.txt`
START_DATE=`echo ${SECOND_LINE} | cut -c9-10`
START_TIME=`echo ${SECOND_LINE} | cut -c12-13,15-16`
LAST_LINE=`sed -n '$p' ${LOG_DIR}/${CURRENT_DATE}_results.txt`
END_DATE=`echo ${LAST_LINE} | cut -c9-10`
END_TIME=`echo ${LAST_LINE} | cut -c12-13,15-16`
それらを Java クラスに渡して毎回 sar コマンドを作成するか、Java クラスがコマンドで読み取るテキスト ファイルに対して検索と置換を行うことができます。ただし、自動化スイートが複数日にわたって実行されたり、別の月にまたがったりした場合の処理方法がわかりません。
私が望むことを達成するためのより良い方法はありますか、それとも私の考えを続けるべきですか? 私の最終的な目標は、テストの全期間 (数分または数日) の sar データ (CPU 使用率、ディスク IO、メモリ使用量) を取得することです。