我有一个很长的自动化套件,可以运行并生成一个日志文件,其中包括:
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
我已经有一个 Java 类,它将通过 SSH 连接到任意数量的机器并运行从 XML 文件读取的静态命令。它将输出保存到文件中以供以后解析。
我的困境是我想在测试期间自动运行 sar 命令(这当然会改变)。例如,我想从上面的日志文件中获取开始和结束时间,并使用这些日期运行 sar。使用 Unix shell,我可以得到这些日期,如下所示:
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、内存使用情况)。