Gatlingを実行すると simulation.log が生成されます。
このファイルの中身について調査します。
このログさえあればレポートを生成できるので、中身がわかればいろいろ使いみちがありそう。
確認したバージョンは 2.2.0
調べる理由
Gatlingのレポートに不満があるわけではないですが、他のメトリクスと同じ時系列のグラフに出せると捗る気がします。
graphite経由でリアルタイム可視化することもできますが、ネットワークに不可がかかるため、simulation.logに保存して、あとでかき集めて、好きなDBに取り込みたいという感じです。
gatling-coreのパーサーを使う手もありますが、ログ自体はシンプルなので、整理してみています。
調査結果
ファイル形式はTSVです。
$ head simulation.log 00:31:37
RUN SampleSimulation samplesimulation 1481907959927 2.0
USER Simple Test 1 START 1481907961664 1481907961664
USER Simple Test 2 START 1481907961770 1481907961770
USER Simple Test 3 START 1481907961771 1481907961771
USER Simple Test 4 START 1481907961781 1481907961781
USER Simple Test 5 START 1481907961782 1481907961782
REQUEST Simple Test 623 root request 1481908081520 1481908081658 OK
REQUEST Simple Test 1508 root request 1481908071123 1481908071123 KO j.n.ConnectException: connection timed out: /10.146.0.4:80
REQUEST Simple Test 426 root request 1481908081520 1481908081658 OK
$ od -c simulation.log | head 00:31:51
0000000 R U N \t S a m p l e S i m u l a
0000020 t i o n \t \t s a m p l e s i m u
0000040 l a t i o n \t 1 4 8 1 9 0 7 9 5
0000060 9 9 2 7 \t \t 2 . 0 \n U S E R \t
0000100 S i m p l e T e s t \t 1 \t S T
0000120 A R T \t 1 4 8 1 9 0 7 9 6 1 6 6
0000140 4 \t 1 4 8 1 9 0 7 9 6 1 6 6 4 \n
0000160 U S E R \t S i m p l e T e s t
0000200 \t 2 \t S T A R T \t 1 4 8 1 9 0 7
0000220 9 6 1 7 7 0 \t 1 4 8 1 9 0 7 9 6
レコードの種類
1列目にレコードの種類がはいってます。
- RUN - Gatlingが開始した時の情報
- REQUEST - Gatlingがリクエストした時の情報
- USER - Gatling内でリクエストを行うユーザが増えた時の情報
- GROUP - グループに関する情報
- ERROR - 調べてない
- ASSERTION - Assertionをつかったときにでるのではないかと思う(調べてない)
RUN
6列のデータがある。
- 1列目 RUNがはいる
- 2列目 クラス名がはいる 例だと SampleSimulation
- 3列目 ユーザ定義シミュレーション名が入る 例だとなにもはいってない
- 4列目 シミュレーションID 例だと samplesimulation
- 5列目 開始時間 ミリ秒で入ってる 例だと 1481907959927
- 6列目 version 例だと 2.0
参考
USER
5列ある
- 1列目 USERがはいる
- 2列目 シナリオ名がはいる
- 3列目 イベント名が入る STARTかENDかどちらか
- 4列目 イベント開始時間
- 5列目 イベント終了時間
参考
- https://github.com/eiel/gatling/blob/13c1deb54e0a624694f10ad4db7168f5b668fb80/gatling-charts/src/main/scala/io/gatling/charts/stats/Records.scala#L28-L37
- https://github.com/eiel/gatling/blob/c8be073a31a36d6f5df6847c5db1d0371bf54f68/gatling-core/src/main/scala/io/gatling/core/stats/message/MessageEvent.scala#L27-L28
REQUEST
- 1列目 REQUESTがはいる
- 2列目 シナリオ名がはいるけどレポートにはつかわれてなさそう。例だと Simple Test
- 3列目 グループ名が入るらしい。例だと数字がはいってる。
- 4列目 リクエスト名がはいる。例だと root request
- 5列目 開始時刻 ミリ秒
- 6列目 終了時刻 ミリ秒 開始時刻と差をとればレスポンスタイムに。
- 7列目 ステータスが入る OK か KO か
- 8列目 エラーメッセージが入る ステータスがKOのとき入ってる模様
参考
GROUP
しらべてない
ERROR
しらべてない
- ASSERTION
しらべてない