JMeterのjtlファイルからCSVのサマリーを出力するコマンドを作る
ちょっと訳ありで、老舗な負荷試験ツール「JMeter」を動かして負荷試験をする必要がありました。
パフォーマンスは計れたものの、jtlファイルからサマリーを出力したくて調べたのですが、ちょっと大変でした。JMeterの歴史が古い分、過去のバージョンの話もたくさんあり、情報が散乱していてなかなか正しい情報が見つからないので苦労したのですよ。つらたん。
なので同じように困るかもしれない人向けのメモを残します。
(最近だとあまりニーズはないかもしれませんが...)
概要
CLI版を使っての話です。
Linux環境での実行を想定しています。
通常、JMeterを使ってパフォーマンステストをする場合、そのログをjtlファイルに出力されるよう実行します。
# ローカルのjmeterディレクトリ下にまとめています
$ ./jmeter/bin/jmeter -n -t シナリオファイル.jmx -l ログファイル.jtl
このログは実際はCSV形式の内容なのですが、それぞれの通信の細かいログですのでそのままでは使いにくいです。
全体をサマライズしたレポート(これもこれでCSV形式)を作成するようにします。
プラグインを導入して解決します。
プラグインの導入
JMeter はApache謹製ですが、そのプラグインをまとめているサイトがあります。
導入は大きくこんな流れです。
- プラグイン・マネージャーをインストールする
- プラグイン・マネージャーをつかってコマンドライン・ツールをインストールする
プラグイン・マネージャーをインストールする
CLIでプラグインを実行するためのツールをインストールするには、そのマネージャーをインストールします。
こちらのドキュメントに手順が載っているので、参考にしながらやります。
ツールのバージョンが異なるのでそこは注意です。
1. cmdrunner-2.2.jar をの入手
ドキュメントの方は2.0になっていますですが、最新版は2.2(2021/7/1現在)のようですので、よしなに置き換えてダウンロードします。
これはlibディレクトリに置いて、実行権限をつけておきます。
$ cd 自分のディレクトリ/jmeter/lib
$ wget http://search.maven.org/remotecontent?filepath=kg/apc/cmdrunner/2.2/cmdrunner-2.2.jar -O cmdrunner-2.2.jar
$ chmod 0775 cmdrunner-2.2.jar
2. plugin-manager.jar の入手
こちらのドキュメントにあるプラグイン・マネージャー用のjarファイルを入手します。(現時点での最新版は1.6でした。)
これはlib/extディレクトリに置いて、実行権限をつけておきます。
$ cd 自分のディレクトリ/jmeter/lib/ext
$ wget --trust-server-names https://jmeter-plugins.org/get/
$ chmod 0755 jmeter-plugins-manager-1.6.jar
3. PluginsManagerCMD.sh の導入
jmeter-plugins-managerからPluginsManagerCMD.shを導入します。
binディレクトリ下で、次のようにコマンドを実行します。
$ cd 自分のディレクトリ/jmeter/bin
$ java -cp 自分のディレクトリ/jmeter/lib/ext/jmeter-plugins-manager-1.6.jar org.jmeterplugins.repository.PluginManagerCMDInstaller
4. コマンドライン・ツールの導入
導入した PluginsManagerCMD.sh を使って必要なツールを導入します。
- jpgc-cmd
- jpgc-synthesis (これがないとエラーになった。GUIツールではない場合に必要なようだ)
binディレクトリ下で実行します。
$ cd 自分のディレクトリ/jmeter/bin
$ ./PluginsManagerCMD.sh install jpgc-cmd,jpgc-synthesis
実行すると,JMeterPluginsCMD.sh
がbinディレクトリ下に作成されています。
これを使ってサマリーを出力させられます。
以上で必要なものは揃いました。
レポートを出してみよう
次のようにログファイル、サマリを出力するファイル、を指定してコマンドを実行します。
(途中経過が出力されますが無視で!)
$ cd 自分のディレクトリ/jmeter/bin
$ ./JMeterPluginsCMD.sh --generate-csv report.csv --input-jtl ログファイル.jtl --plugin-type AggregateReport
$ cat report.csv
Label,# Samples,Average,Median,90% Line,95% Line,99% Line,Min,Max,Error %,Throughput,Received KB/sec,Std. Dev.
Home,3274,658,489,623,722,1145,344,60014,0.24%,5.3,32.7,2940.11
Point,3268,870,513,657,750,1516,375,60011,0.55%,5.0,1.6,4403.17
payment_code,1636,824,592,759,873,1419,424,60010,0.31%,2.7,1.0,3329.37
TOTAL,8178,776,520,684,770,1432,344,60014,0.38%,12.6,33.6,3665.42
report.csv
は任意のファイル名ですので適宜変えてOK.
おまけ
その1
ターミナル上でわかりやすくしたいのであれば、column
コマンドが便利です。
$ cat report.csv | column -s, -t
Label # Samples Average Median 90% Line 95% Line 99% Line Min Max Error % Throughput Received KB/sec Std. Dev.
Home 3274 658 489 623 722 1145 344 60014 0.24% 5.3 32.7 2940.11
Point 3268 870 513 657 750 1516 375 60011 0.55% 5.0 1.6 4403.17
payment_code 1636 824 592 759 873 1419 424 60010 0.31% 2.7 1.0 3329.37
TOTAL 8178 776 520 684 770 1432 344 60014 0.38% 12.6 33.6 3665.42
その2
ちょっとしたラッパスクリプトを作ってみました。
$ ./mk_csv.sh ログファイル.jtl
<<RAW CSV>>
Label,# Samples,Average,Median,90% Line,95% Line,99% Line,Min,Max,Error %,Throughput,Received KB/sec,Std. Dev.
Home,3274,658,489,623,722,1145,344,60014,0.24%,5.3,32.7,2940.11
Point,3268,870,513,657,750,1516,375,60011,0.55%,5.0,1.6,4403.17
payment_code,1636,824,592,759,873,1419,424,60010,0.31%,2.7,1.0,3329.37
TOTAL,8178,776,520,684,770,1432,344,60014,0.38%,12.6,33.6,3665.42
<<COLUMNED>>
Label # Samples Average Median 90% Line 95% Line 99% Line Min Max Error % Throughput Received KB/sec Std. Dev.
Home 3274 658 489 623 722 1145 344 60014 0.24% 5.3 32.7 2940.11
Point 3268 870 513 657 750 1516 375 60011 0.55% 5.0 1.6 4403.17
payment_code 1636 824 592 759 873 1419 424 60010 0.31% 2.7 1.0 3329.37
TOTAL 8178 776 520 684 770 1432 344 60014 0.38% 12.6 33.6 3665.42
ソースはこちら。
Author And Source
この問題について(JMeterのjtlファイルからCSVのサマリーを出力するコマンドを作る), 我々は、より多くの情報をここで見つけました https://qiita.com/Ping/items/ea520cb1781d91431fd1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .