MeterPluginCMD命令行工具生成png圖片和csv統計文件
Jmeter是個純java的開源的輕量級性能測試工具,功能強大。因為是輕量級的,與loadrunner相比,報告統計的相對較少。不過有jmeter的插件-JMeterPlugins,可以提供不少其他的報告,包括各種響應時間、吞吐率、線程等的變化曲線等
並且這個插件提供了命令行工具,可以將我們看到的各種曲線,各種報告統計成png圖片,或者csv文件。這樣我們就完全可以通過命令行來運行jmeter,生成jtl文件,然后在解析jtl文件,產生各種報告,或者展示到網頁,或者插入到數據庫,等等。
英文地址:http://jmeter-plugins.org/wiki/JMeterPluginsCMD/
安裝
下載JMeterPlugins-Standard-1.2.0.zip和JMeterPlugins-Extras-1.2.0.zip,解壓將里面的jar包復制到jmeter的lib/ext文件夾中即可。
用法
生成png圖片:
java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ThreadsStateOverTime.png
--input-jtl 1.jtl --plugin-type ThreadsStateOverTime
生成csv圖片:
java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ThreadsStateOverTime.csv --input-jtl 1.jtl --plugin-type ThreadsStateOverTime
當然也可以一次性生成兩個文件。下面是改命令的參數:
- –generate-png 指定png圖片文件
- –generate-csv 指定csv文件名
- –input-jtl 指定要解析的jtl文件
- –plugin-type 指定要輸出的數據類型,比如響應時間、cpu使用率、錯誤率等
Plugin Type Classes
插件提供解析下面這些數據的對象:
- AggregateReport = JMeter’s native Aggregate Report, can be saved only as CSV 聚合報告
- SynthesisReport = mix between JMeter’s native Summary Report and Aggregate Report, can be saved only as CSV
- ThreadsStateOverTime = Active Threads Over Time 線程數隨時間的變化曲線
- BytesThroughputOverTime 流量隨時間的變化曲線
- HitsPerSecond 點擊率隨時間的變化曲線
- LatenciesOverTime 延遲隨時間的變化曲線
- PerfMon = PerfMon Metrics Collector 服務器參數隨時間變化曲線注意這個需要在jmx腳本中添加,服務器監控,要指定ip、端口、監控項,還需要指定perfMon的輸出文件,或者在命令行指定,如
sh jmeter.sh -n -t HTTP請求-baidu.jmx -l 2.jtp -JforcePerfmonFile=true
,這樣會輸出在當前路徑。 - ResponseCodesPerSecond 響應碼隨時間變化曲線
- ResponseTimesDistribution 響應時間分布
- ResponseTimesOverTime 響應時間隨時間變化曲線
- ResponseTimesPercentiles 響應時間的百分比
- ThroughputVsThreads 吞吐率隨線程變化曲線
- TimesVsThreads = Response Times VS Threads 響應時間隨線程變化曲線
- TransactionsPerSecond 事務隨時間變化曲線
- PageDataExtractorOverTime
- MergeResults
#!/bin/sh file=$1 perfmonPath=$2 CMDRunnerPath=/Users/apple/work/jmeter-2.11/lib/ext #generate png java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_ThreadsStateOverTime.png --input-jtl $file --plugin-type ThreadsStateOverTime java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_BytesThroughputOverTime.png --input-jtl $file --plugin-type BytesThroughputOverTime java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_HitsPerSecond.png --input-jtl $file --plugin-type HitsPerSecond java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_LatenciesOverTime.png --input-jtl $file --plugin-type LatenciesOverTime java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_ResponseCodesPerSecond.png --input-jtl $file --plugin-type ResponseCodesPerSecond java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_ResponseTimesDistribution.png --input-jtl $file --plugin-type ResponseTimesDistribution java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_ResponseTimesOverTime.png --input-jtl $file --plugin-type ResponseTimesOverTime java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_ResponseTimesPercentiles.png --input-jtl $file --plugin-type ResponseTimesPercentiles java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_ThroughputVsThreads.png --input-jtl $file --plugin-type ThroughputVsThreads java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_TimesVsThreads.png --input-jtl $file --plugin-type TimesVsThreads java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_TransactionsPerSecond.png --input-jtl $file --plugin-type TransactionsPerSecond java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_PageDataExtractorOverTime.png --input-jtl $file --plugin-type PageDataExtractorOverTime java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-png ${file%.*}_PerfMon.png --input-jtl $2 --plugin-type PerfMon #generate csv java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_AggregateReport.csv --input-jtl $file --plugin-type AggregateReport java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_ThreadsStateOverTime.csv --input-jtl $file --plugin-type ThreadsStateOverTime java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_BytesThroughputOverTime.csv --input-jtl $file --plugin-type BytesThroughputOverTime java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_HitsPerSecond.csv --input-jtl $file --plugin-type HitsPerSecond java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_LatenciesOverTime.csv --input-jtl $file --plugin-type LatenciesOverTime java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_ResponseCodesPerSecond.csv --input-jtl $file --plugin-type ResponseCodesPerSecond java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_ResponseTimesDistribution.csv --input-jtl $file --plugin-type ResponseTimesDistribution java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_ResponseTimesOverTime.csv --input-jtl $file --plugin-type ResponseTimesOverTime java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_ResponseTimesPercentiles.csv --input-jtl $file --plugin-type ResponseTimesPercentiles java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_ThroughputVsThreads.csv --input-jtl $file --plugin-type ThroughputVsThreads java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_TimesVsThreads.csv --input-jtl $file --plugin-type TimesVsThreads java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_TransactionsPerSecond.csv --input-jtl $file --plugin-type TransactionsPerSecond java -jar $CMDRunnerPath/CMDRunner.jar --tool Reporter --generate-csv ${file%.*}_PageDataExtractorOverTime.csv --input-jtl $file --plugin-type PageDataExtractorOverTime