14. レポート ダッシュボードの生成¶
JMeter は、ダッシュボード レポートの生成をサポートして、テスト計画からグラフと統計を取得します。
この章では、ジェネレータの構成方法と使用方法について説明します。
14.1 概要¶
ダッシュボード ジェネレーターは、JMeter のモジュラー拡張です。そのデフォルトの動作は、CSV ファイルからサンプルを読み取って処理し、グラフ ビューを含む HTML ファイルを生成することです。負荷テストの終了時またはオンデマンドでレポートを生成できます。
このレポートは、次の指標を提供します。
- APDEX (アプリケーション パフォーマンス インデックス) テーブルは、許容されるしきい値と満たされるしきい値の構成可能な値に基づいて、トランザクションごとに APDEX を計算します。
- 成功したリクエストと失敗したリクエスト (Transaction Controller のサンプル結果は考慮されていません) のパーセンテージを示すリクエスト概要グラフ:
- 構成可能な 3 つのパーセンタイルを含む、トランザクションごとのすべてのメトリックの概要を 1 つのテーブルに提供する統計テーブル:
- すべてのエラーの概要と、リクエスト全体に占める割合を示すエラー テーブル:
- すべてのサンプラー (デフォルトではトランザクション コントローラーを除く) の上位 5 つのエラーを提供する、サンプラーごとの上位 5 つのエラー テーブル:
- すべてのトランザクションをチェック/チェック解除して表示/非表示にできるズーム可能なチャート:
- 経時的な応答時間 (Transaction Controller のサンプル結果を含む) :
- 一定期間にわたる応答時間のパーセンタイル (成功した応答のみ) :
- アクティブなスレッドの推移:
- 経時的なバイト スループット (Transaction Controller のサンプル結果を無視) :
- 時間の経過に伴うレイテンシ (Transaction Controller のサンプル結果を含む) :
- Connect Time Over Time (Transaction Controller のサンプル結果を含む) :
- 1 秒あたりのヒット数 (トランザクション コントローラーのサンプル結果を無視):
- 1 秒あたりの応答コード (トランザクション コントローラーのサンプル結果を無視):
- 1 秒あたりのトランザクション数 (トランザクション コントローラーのサンプル結果を含む):
- 応答時間と 1 秒あたりの要求 (トランザクション コントローラーのサンプル結果を無視):
- レイテンシと 1 秒あたりのリクエスト (トランザクション コントローラーのサンプル結果は無視):
- 応答時間の概要 (Transaction Controller のサンプル結果を除く) :
- 応答時間のパーセンタイル (Transaction Controller のサンプル結果を含む):
- 時間とスレッド (トランザクション コントローラーのサンプル結果を含む):
分散モードでは、このグラフは横軸に 1 サーバーのスレッド数を示します。現在の制限です
- 応答時間の分布 (Transaction Controller のサンプル結果を含む):
14.2 ダッシュボード生成の設定¶
ダッシュボードの生成では、JMeter プロパティを使用してレポートをカスタマイズします。一般的な設定に使用されるプロパティもあれば、特定のグラフ構成またはエクスポータ構成に使用されるプロパティもあります。
14.2.1 要件¶
14.2.1.1 フィルタリング設定¶
すべてを必要としない場合は、 プロパティjmeter.reportgenerator.exporter.html.series_filterを設定して、レポートに必要なトランザクションのみを保持するようにしてください。以下の例では、 Search|Orderのみを変更する必要があり、残りは保持します。
jmeter.reportgenerator.exporter.html.series_filter=^(検索|順序)(-成功|-失敗)?$
14.2.1.2 サービス構成の保存¶
ジェネレーターが動作できるようにするには、JMeter によって生成される CSV ファイルに、JMeterの最新のライブ バージョンでデフォルトで正しい特定の必須データが含まれている必要があります。
これらの設定を変更した場合は、JMeter 構成が次の設定に従っていることを確認します (これらはデフォルトです)。
jmeter.save.saveservice.bytes = true # HttpClient4 でのみ利用可能 #jmeter.save.saveservice.sent_bytes=true jmeter.save.saveservice.label = true jmeter.save.saveservice.latency = true jmeter.save.saveservice.response_code = true jmeter.save.saveservice.response_message = true jmeter.save.saveservice.successful = true jmeter.save.saveservice.thread_counts = true jmeter.save.saveservice.thread_name = true jmeter.save.saveservice.time = true jmeter.save.saveservice.connect_time = true jmeter.save.saveservice.assertion_results_failure_message = true # タイムスタンプ形式には時刻と日付を含める必要があります。 # たとえば、エポックからのミリ秒単位のデフォルト: jmeter.save.saveservice.timestamp_format = ミリ秒 # または、以下も適しています # jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss
14.2.1.3 トランザクションコントローラーの設定¶
Transaction Controller を使用する場合、最も正確な結果を得るには:
- ボックスのチェックを外します (これがデフォルトの構成です): 親サンプルを生成
- トランザクション コントローラーが、Ajax 呼び出しをトリガーする HTML ページの要求を表すコンテナーとして使用されており、レポートにトランザクション コントローラーのみが必要な場合は、ノードを右クリックし、ネーミング ポリシーを適用します 。 これを取得します:
14.2.2 一般設定¶
jmeter.reportgenerator.
パラメーター
デフォルト: 「Apache JMeter ダッシュボード」
デフォルトの日付形式はyyyyMMddHHmmss
です。負荷テストの後にレポートを生成したい場合や、結果ファイルに別のタイム ゾーンのタイムスタンプが含まれている場合に便利です。この場合、日付形式にはタイムゾーン (zzz) を含める必要があります。
例: dd/MM/yyyy HH:mm:ss zzz
日付形式は、date_format プロパティによって定義されます。
デフォルト: データ範囲が最初から使用されることを意味します。
日付形式は、date_format プロパティによって定義されます。
デフォルト: 未入力。つまり、データ範囲が最後まで使用されます。
デフォルト: 1500
サンプル名または正規表現を使用します。
形式はsample_name:satisfaction|tolerance[;]
です 。値はミリ秒単位です。
jmeter.reportgenerator.apdex_per_transaction=sample(\\d+):1000|2000;\ samples12:3000|4000;\ シーン01-12:5000|6000
形式: 正規表現。
デフォルト: ""
デフォルト:一時
デフォルト: 20000
- aggregate_rpt_pct1 : デフォルトは 90 です
- aggregate_rpt_pct2 : デフォルトは 95 です
- aggregate_rpt_pct3 : デフォルトは 99 です
ジェネレーター構成で使用されるいくつかの全体的なプロパティを定義できます。これらのプロパティは自由に命名できますが、接頭辞を使用する必要があります
jmeter.reportgenerator.プロパティの重複を避けるためです。
例えば:
- プロパティ定義:
-
jmeter.reportgenerator.overall_granularity=60000
- プロパティ参照:
-
${jmeter.reportgenerator.overall_granularity}
14.2.3 グラフ設定¶
グラフ構成を記述する各プロパティには、接頭辞を付ける必要があります
jmeter.reportgenerator.graph.その後にグラフ識別子が続きます。
14.2.3.1 一般プロパティ¶
すべてのグラフは、次のプロパティをサポートしています。
パラメーター
を拡張する必要があります 。 詳細については 、デフォルト グラフ セクション を参照してください。
14.2.3.2 特定のプロパティ¶
特定のグラフ プロパティには、次のプレフィックスを使用する必要があります。
jmeter.reportgenerator.graph.<graph_id>.propertyプロパティの名前はキャメルケース変換を使用してマップされ、クラスの一致するメソッドがプロパティ値を引数として呼び出されます。
例えば:
jmeter.reportgenerator.graph.<graph_id>.property.set_granularity=150グラフのインスタンスで メソッドsetGranularity(150) の呼び出しを誘導します。
14.2.4 エクスポート設定¶
エクスポーター構成を記述する各プロパティには、接頭辞を付ける必要があります
jmeter.reportgenerator.exporter輸出業者の識別子が続きます。
14.2.4.1 一般プロパティ¶
すべてのエクスポーターは、次のプロパティをサポートしています。
パラメーター
を実装する必要があります 。
で終了する必要があり ます。形式: 正規表現。デフォルト: ""
14.2.4.2 特定のプロパティ¶
特定のエクスポーター プロパティはプレフィックスを使用する必要があります
jmeter.reportgenerator.exporter.<exporter_id>.property
パラメーター
14.2.4.3 グラフのプロパティ¶
グラフ プロパティを使用すると、エクスポータは一部のグラフ データを上書きできます。
次のプレフィックスを使用する必要があります。
jmeter.reportgenerator.exporter.<exporter_id>.graph_options.<graph_id>
パラメーター
14.2.4.4 フィルタリングメカニズム¶
計算前にデータを破棄する一般プロパティ セクションのフィルタリングとは異なり 、ここではフィルタリングは計算後に実行され、最終レポートを簡素化するのに役立ちます。
プロパティseries_filter を使用すると、シリーズの名前 (行のそれぞれ) に一致する正規表現を使用して、グラフのどのシリーズ (サマリー テーブルの行) をフィルター処理できます。ただし、シリーズ (それぞれの行) の名前がフィルターと一致する場合でも、他のフィルタリング プロパティの設定によって、そのシリーズが破棄される可能性があります。逆に、一致するものがない場合は、他のプロパティでそれを保持できます。
次の表は、フィルタリング プロパティの設定がどのように機能するかを示しています。
filter_only_sample_series | グラフ/サマリーがコントローラの識別をサポート | 現在のシリーズはコントローラシリーズです | show_controllers_only | 廃棄 |
---|---|---|---|---|
間違い | 間違い | - | 間違い | 間違い |
真実 | ||||
- | 間違い | |||
真実 | ||||
真実 | 間違い | 間違い | ||
真実 | ||||
真実 | 間違い | |||
真実 | ||||
真実 | 間違い | - | 間違い | |
真実 | ||||
- | 間違い | |||
真実 | ||||
真実 | 間違い | 間違い | ||
真実 | 真実 | |||
真実 | 間違い | 間違い | ||
真実 |
filter_only_sample_series | グラフ/サマリーがコントローラの識別をサポート | 維持 |
---|---|---|
間違い | 間違い | 間違い |
真実 | ||
真実 | 間違い | 真実 |
真実 | 間違い |
- プロパティ show_controllers_only を設定し、グラフがコントローラーを除外するように構成されている場合。
- プロパティ series_filterがどの シリーズとも一致しない場合。
14.2.5 サンプル構成¶
レポート ジェネレーターをテストするために、次の構成を user.properties ファイルにコピーできます。
# レポートのタイトルを変更するには、このプロパティを構成します #jmeter.reportgenerator.report_title=Apache JMeter ダッシュボード # 経時グラフの粒度を変更する場合は、このパラメーターを変更します。 # 粒度は 1000 (1 秒) より大きくする必要があります。そうしないと、スループット グラフが正しくなくなります # バグ 60149 を参照 #jmeter.reportgenerator.overall_granularity=60000 応答時間の分布の粒度を変更する場合は、このパラメーターを変更します # デフォルトで 100 ミリ秒に設定 #jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=100 # APDEX 満足度しきい値をオーバーライドする場合は、このパラメーターを変更します。 jmeter.reportgenerator.apdex_satisfied_threshold=1500 # APDEX 許容しきい値をオーバーライドする場合は、このパラメーターを変更します。 jmeter.reportgenerator.apdex_tolerated_threshold=3000 # 生成された html ページの宛先ディレクトリを設定します。世代ごとに変更することをお勧めします # これにより、-o コマンド ライン オプションで設定された値が上書きされます # jmeter.reportgenerator.exporter.html.property.output_dir=/tmp/test-report # どのグラフ系列がフィルタリングされているかを示します (正規表現) # 以下の例では、検索と注文のサンプルをフィルタリングします # パターンの最後には常に (-success|-failure)?$ を含める必要があることに注意してください # 1 秒あたりのトランザクション数のサフィックス トランザクションに応じて「-success」または「-failure」 # 結果について #jmeter.reportgenerator.exporter.html.series_filter=^(検索|順序)(-成功|-失敗)?$ # シリーズ フィルターがサンプル シリーズのみに適用されるかどうかを示します jmeter.reportgenerator.exporter.html.filters_only_sample_series=true
この構成により、次の場合にレポートを生成できます。
- 時系列グラフの時間の粒度は 1 分です。
- ADPEX 計算の満足度のしきい値は 1 秒半です。
- ADPEX 計算の許容しきい値は 3 秒です。
- HTML ファイルはディレクトリ/tmp/test-reportに生成されます。
- 名前が「 s0」または「s1 」で始まるシリーズのみが表示されます。
- 前のフィルターは、シリーズ (それぞれの行) がサンプルと一致するグラフ (それぞれの要約テーブル) にのみ適用されます
14.3 レポートの生成¶
レポートの生成は、サンプル ログ ファイルからスタンドアロン プロセスとして実行することも、負荷テストの実行後に自動的に実行することもできます。
14.3.3 GUI ツールメニューを利用した生成¶
メニュー項目Tools → Generate HTML report を使用して、HTML レポートを生成できます。
各パラメータについては、次の表を参照してください。
パラメーター
出力ディレクトリが定義されていない場合、コントローラーは${JMETER_HOME}/bin/report-outputを使用します。
次に、[レポートの生成] ボタンをクリックして、情報ダイアログが表示されるのを待つ だけです。
14.4 デフォルトのグラフ¶
このレポート エンジンによって提供されるすべてのグラフは、パッケージ org.apache.jmeter.report.processor.graph.implにあります。
ダッシュボード ジェネレーターには、次のグラフ クラスが用意されています。
グラフ | 説明 | コントローラの識別をサポート |
---|---|---|
ActiveThreadsGraphConsumer | このグラフは、時間の経過に伴うアクティブなスレッドの数を表します。 | 間違い |
BytesThroughputGraphConsumer | このグラフは、時間の経過に伴う送受信データのスループットを表します。 | 間違い |
CodesPerSecondGraphConsumer | このグラフは、時間の経過に伴う応答コードの割合を表しています。 | 間違い |
HitsPerSecondGraphConsumer | このグラフは、時間の経過に伴う完了したリクエストの割合を表しています。 | 間違い |
LatencyOverTimeGraphConsumer | このグラフは、時間の経過に伴う平均待ち時間を表します。 | 真実 |
ConnectTimeOverTimeGraphConsumer | このグラフは、時間の経過に伴う接続時間を表します。 | 真実 |
LatencyVSRequestGraphConsumer | このグラフは、現在のリクエスト数に応じた中央値と平均レイテンシ時間を表しています。 | 間違い |
ResponseTimeDistributionGraphConsumer | このグラフは、経過時間と名前に応じたサンプルの分布を表しています。 | 真実 |
ResponseTimeOverTimeGraphConsumer | このグラフは、時間の経過に伴う平均応答時間を表します。 | 真実 |
ResponseTimePercentilesGraphConsumer | このグラフは、経時的な経過時間のパーセンタイルを表します。 | 真実 |
ResponseTimePercentilesOverTimeGraphConsumer | このグラフは、時間の経過に伴う最小/最大および 3 パーセンタイルの応答時間を示しています。 | 真実 |
ResponseTimeVSRequestGraphConsumer | このグラフは、現在のリクエスト数に応じた中央値と平均応答時間を表しています。 | 間違い |
TimeVSThreadGraphConsumer |
このグラフは、現在アクティブなスレッドの数に応じた平均応答時間を表します。
* で集計されたシリーズは、現在アクティブなスレッドの数に関係なく、平均応答時間を表します。これらのシリーズは、現在アクティブなスレッドの数が平均に集計されるため、1 つのポイントで表されます。したがって、これらの点について:
|
真実 |
TransactionsPerSecondGraphConsumer | このグラフは、時間の経過に伴うサンプル名ごとのトランザクション率を表しています。 | 真実 |
14.5 経時的な税関グラフの生成¶
CSV の任意の sample_variable を経時的にグラフ化できます。user.properties ファイルでプロパティを設定することにより、グラフをカスタマイズできます。
ID プレフィックスcustom_を使用する必要があります。
jmeter.reportgenerator.graph.custom_<your_graph_name_id>.property.<your_option_name>このグラフがカスタマイズされたグラフであることを指定するには:
jmeter.reportgenerator.graph.custom_<your_graph_name_id>.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer
パラメーター
変数ts-hitをグラフ化するカスタム グラフ構成の例を次に示します。
jmeter.reportgenerator.graph.custom_testGraph.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer jmeter.reportgenerator.graph.custom_testGraph.title=チャンクヒット jmeter.reportgenerator.graph.custom_testGraph.property.set_Y_Axis=ヒット数 jmeter.reportgenerator.graph.custom_testGraph.set_X_Axis=経過時間 jmeter.reportgenerator.graph.custom_testGraph.property.set_granularity=60000 jmeter.reportgenerator.graph.custom_testGraph.property.set_Sample_Variable_Name=ts-hit jmeter.reportgenerator.graph.custom_testGraph.property.set_Content_Message=ヒット数:
14.6 レポートダッシュボードを改善したいですか? ¶
新しいグラフに貢献したり、現在のグラフを改善したりしたい場合は、この開発者ドキュメントを読むことができます。貢献 については、このドキュメントをお読みください。