跳到主要内容

生成报告仪表板

JMeter 支持仪表板报告生成,以从测试计划中获取图表和统计信息。
本章介绍如何配置和使用生成器。

14.1 概述

仪表板生成器是 JMeter 的模块化扩展。它的默认行为是从 CSV 文件中读取和处理样本以生成包含图形视图的 HTML 文件。它可以在负载测试结束时或按需生成报告。

此报告提供以下指标:

  • APDEX(应用程序性能指数)表,根据可容忍和满足阈值的可配置值计算每个事务的 APDEX

  • 显示成功和失败请求(不考虑事务控制器示例结果)百分比的请求摘要图:

  • 一个统计表,在一个表中提供每个事务的所有指标的摘要,包括 3 个可配置的百分位数:

  • 一个错误表,提供所有错误的摘要及其在总请求中的比例:

  • Sampler 的前 5 个错误表为每个 Sampler(默认情况下不包括事务控制器)提供前 5 个错误:

  • 可缩放图表,您可以在其中选中/取消选中每笔交易以显示/隐藏它:

    • 随时间变化的响应时间(包括事务控制器示例结果):

    • 响应时间百分比随时间变化(仅限成功响应):

    • 随着时间的推移活动线程:

    • 随时间推移的字节吞吐量(忽略事务控制器示例结果):

    • 随时间推移的延迟(包括事务控制器示例结果):

    • 随时间变化的连接时间(包括事务控制器示例结果):

    • 每秒点击次数(忽略事务控制器示例结果):

    • 每秒响应代码(忽略事务控制器示例结果):

    • 每秒事务数(包括事务控制器示例结果):

    • 响应时间与每秒请求(忽略事务控制器示例结果):

    • 延迟与每秒请求(忽略事务控制器示例结果):

    • 响应时间概览(不包括事务控制器示例结果):

    • 响应时间百分位数(包括事务控制器示例结果):

    • 时间与线程(包括事务控制器示例结果):

      在分布式模式下,此图显示了一个水平轴,表示 1 个服务器的线程数。这是当前的限制

    • 响应时间分布(包括事务控制器示例结果):

14.2 配置仪表板生成

仪表板生成使用 JMeter 属性来自定义报告。一些属性用于常规设置,而其他属性用于特定的图形配置或导出器配置。

所有报告生成器属性都可以在文件 reportgenerator.properties 中找到。要自定义这些属性,你应该将它们复制到 user.properties 文件中并进行修改。

14.2.1 要求

14.2.1.1 过滤配置

如果你不想要所有内容,请 确保设置属性 jmeter.reportgenerator.exporter.series_filter 以仅在报告中保留你想要的交易。
在下面的示例中,你必须只修改 Search|Order,保留其余部分:

jmeter.reportgenerator.exporter.series_filter=^(Search|Order)(-success|-failure)?$

14.2.1.2 保存服务配置

为了使生成器能够运行,JMeter 生成的 CSV 文件必须包含某些必需的数据,这些数据在 JMeter 的最后一个实时版本中默认是正确的
如果你修改了这些设置,请检查你的 JMeter 配置是否遵循这些设置(这些是默认设置):

jmeter.save.saveservice.bytes = true
# Only available with 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
# the timestamp format must include the time and should include the date.
# For example the default, which is milliseconds since the epoch:
jmeter.save.saveservice.timestamp_format = ms
# Or the following would also be suitable
# 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 仪表板
日期格式来自 SimpleDateFormat Java API 的 默认日期格式,带有 Locale.ENGLISH。 默认日期格式为 yyyyMMddHHmmss 。当你希望在负载测试之后生成报告并且结果文件包含另一个时区的时间戳时很有用。在这种情况下,日期格式必须包括时区 (zzz)。如果 jmeter.save.saveservice.timestamp_format 不包含年份,则使用 1970 作为年份。示例:dd/MM/yyyy HH:mm:ss zzz
开始日期用于报告的数据范围的开始日期。 日期格式由 date_format 属性定义。 默认值:未填充,表示将从头开始使用数据范围
结束日期用于报告的数据范围的结束日期。 日期格式由 date_format 属性定义。 默认值:未填充,这意味着数据范围将一直使用到最后
整体粒度随时间变化图的粒度。数据汇总为 1 分钟刻度。粒度必须高于 1 秒 (1000) 否则吞吐量图将不正确默认值:60000(1 分钟)
apdex_satisfied_threshold设置 APDEX 计算的满意度阈值(以毫秒为单位)。 默认值:500
apdex_tolerated_threshold设置 APDEX 计算的容差阈值(以毫秒为单位)。 默认值:1500
jmeter.reportgenerator.apdex_per_transaction为特定样本设置满意度和容忍度阈值。 使用示例名称或正则表达式。格式为 sample_name:satisfaction | tolerance[;] 值以毫秒为单位。注意样本名称和值之间的冒号,阈值之间的管道和末尾的分号以分隔不同的样本。不要忘记在分号后转义以跨越多行。
样本过滤器设置要保留的样本过滤器以生成图形和统计信息。空值禁用过滤。 格式:正则表达式。 默认: ""
临时目录如果需要文件 I/O 操作,则设置生成过程使用的临时目录。 默认值:temp
统计窗口设置百分比评估使用的滑动窗口的大小。注意:值越高,精度越高,但需要更多内存。 默认值:20000

通过使用 3 个属性,可以将汇总表和百分比图使用的百分比调整为不同的值:

  • aggregate_rpt_pct1 :默认为 90
  • aggregate_rpt_pct2 :默认为 95
  • aggregate_rpt_pct3 :默认为 99

相对路径是从 JMeter 工作目录构建的(默认值:bin)。

你可以定义生成器配置使用的一些整体属性。这些属性可以自由命名,但你应该使用前缀

jmeter.reportgenerator.

为了避免属性重叠。

例如:

属性定义:

jmeter.reportgenerator.overall_granularity=60000

属性参考:

${jmeter.reportgenerator.overall_granularity}

14.2.3 图表设置

描述图配置的每个属性都必须以

jmeter.reportgenerator.graph.

后跟图形标识符。

14.2.3.1 一般属性

所有图表都支持这些属性:

选项描述是否必需
班级名称图的完全限定类名。 图的类必须扩展 org.apache.jmeter.report.processor.graph.AbstractGraphConsumer。有关更多详细信息,请参阅 默认图表部分
exclude_controllers定义图形是否丢弃控制器样本。默认值:假

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 一般属性

所有导出器都支持这些属性:

选项描述是否必需
班级名称导出器的完全限定类名。导出器的类必须实现 org.apache.jmeter.report.dashboard.DataExporter
filters_only_sample_series定义 series_filter(见下文)是否仅适用于样本系列。默认值:真
series_filter设置系列过滤器。空值禁用过滤。如果不为空,则正则表达式应以(-success | -failure)?$ 结尾。格式:正则表达式。默认: ``
show_controllers_only定义是否仅显示控制器系列。默认值:假

14.2.4.2 具体属性

特定的导出器属性必须使用前缀

jmeter.reportgenerator.exporter.<exporter_id>.property
选项描述是否必需
输出目录设置生成的 html 页面的目标目录。默认值:报告输出
模板目录设置生成 html 页面的模板文件的源目录。默认值:报告模板

14.2.4.3 图形属性

图形属性允许导出器覆盖一些图形数据。
他们必须使用前缀:

jmeter.reportgenerator.exporter.<exporter_id>.graph_options.<graph_id>
选项描述是否必需
minX设置图形的最小横坐标
maxX设置图形的最大横坐标
minY设置图形的最小纵坐标
maxY设置图形的最大纵坐标

14.2.4.4 过滤机制

与 在计算前丢弃数据的 一般属性 部分中的过滤不同 ,这里的过滤是在计算之后执行的,用于简化最终报告。

属性 series_filter 允许使用与系列名称(相应的行)匹配的正则表达式过滤图形的哪个系列(汇总表的相应行)。但是,即使系列的名称(相应的行)与过滤器匹配,其他过滤属性的设置也可能导致其丢弃。相反,如果没有匹配,其他属性可以允许保留它。

下表显示了过滤属性设置的工作原理。

过滤属性设置的工作原理

不正确的过滤器配置可能导致生成空图/汇总表:

  • 如果你设置属性 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.property.output_dir=/tmp/test-report

# 表示过滤了哪些图系列(正则表达式)
# 在下面的例子中,我们过滤搜索和排序样本
# 请注意,模式的结尾应始终包含 (-success|-failure)?$
# Transactions per second 以`-success`或`-failure`为后缀的交易数,具体取决于
# 关于结果
#jmeter.reportgenerator.exporter.series_filter=^(Search|Order)(-success|-failure)?$

# 指示系列过滤器是否仅适用于样本系列
jmeter.reportgenerator.exporter.filters_only_sample_series=true

使参数 output_dir 适应 你的环境。

此配置允许生成报告,其中:

  • 随着时间的推移图的时间粒度等于 1 分钟。
  • ADPEX 计算的满意度阈值为 1 秒半。
  • ADPEX 计算的容差阈值为 3 秒。
  • HTML 文件在目录 /tmp/test-report 中生成。
  • 仅显示名称以s0s1开头的系列。
  • 前面的过滤器仅适用于系列(相应的行)匹配样本的图表(相应的汇总表)

14.3 生成报告

报告生成可以作为来自示例日志文件的独立过程完成,也可以在运行负载测试后自动完成。

14.3.1 从现有的示例 CSV 日志文件生成

使用以下命令:

jmeter -g <log file> -o <Path to output folder>

14.3.2 负载测试后生成

使用以下命令:

jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder>

14.3.3 使用 GUI 工具菜单生成

你可以使用菜单项 Tools → Generate HTML report 生成 HTML 报告:

图 14.1。 HTML 报告对话框菜单

图 14.1。HTML 报告对话框菜单

每个参数见下表:

选项描述是否必需
结果文件(csv 或 jtl)测试运行的 CSV 输出
user.properties 文件用于运行负载测试的 user.properties 文件

如果没有定义输出目录,控制器将使用${JMETER_HOME}/bin/report-output

然后,你只需单击生成报告按钮并等待信息对话框出现

如果报告生成时间超过两分钟,请调整属性 generate_report_ui.generation_timeout

14.4 默认图表

由于这个早期版本的限制,每个默认图都必须在 JMeter 属性中声明。否则,图表视图将为空。

此报告引擎提供的所有图表都位于包 org.apache.jmeter.report.processor.graph.impl

仪表板生成器提供以下图形类:

图形描述支持控制器区分
ActiveThreadsGraphConsumer此图表示一段时间内的活动线程数。错误的
BytesThroughputGraphConsumer此图表示随时间变化的接收和发送数据的吞吐量。错误的
CodesPerSecondGraphConsumer此图表示响应代码随时间变化的速率。错误的
HitsPerSecondGraphConsumer此图表示随着时间的推移完成请求的速率。错误的
LatencyOverTimeGraphConsumer此图表示随时间变化的平均延迟时间。真的
ConnectTimeOverTimeGraphConsumer此图表示随时间变化的连接时间。真的
延迟 VSRequestGraphConsumer此图表示取决于当前请求数量的中值和平均延迟时间。错误的
ResponseTimeDistributionGraphConsumer该图表示样本的分布取决于它们经过的时间和名称。真的
ResponseTimeOverTimeGraphConsumer此图表示随时间变化的平均响应时间。真的
ResponseTimePercentilesGraphConsumer此图表示随着时间的推移经过的时间的百分位数。真的
ResponseTimePercentilesOverTimeGraphConsumer此图显示随时间变化的最小/最大和 3 个百分位响应时间。真的
ResponseTimeVSRequestGraphConsumer此图表示取决于当前请求数量的中值和平均响应时间。错误的
TimeVSThreadGraphConsumer此图表示取决于当前活动线程数的平均响应时间。

*-聚合系列表示平均响应时间,与当前活动线程的数量无关。这些系列由一个点表示,因为当前活动线程的数量被聚合为一个平均值。所以对于这些点:

  • 横坐标是系列样本完成时当前活动线程数的平均值。
  • 纵坐标是该系列样本的平均响应时间,与当前活动线程的数量无关。

| 真的 | | 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
选项描述是否必需
set_X_Axis设置图形的 X 轴名称。
set_Y_Axis设置图形的 Y 轴名称。
set_Content_Message设置当光标在图形的某个点上时显示的消息。
set_Sample_Variable_Name你要在 csv 中绘制图表的列的名称。是

以下是绘制变量 ts-hit 的自定义图形配置示例:

jmeter.reportgenerator.graph.custom_testGraph.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer
jmeter.reportgenerator.graph.custom_testGraph.title=Chunk Hit
jmeter.reportgenerator.graph.custom_testGraph.property.set_Y_Axis=Number of Hits
jmeter.reportgenerator.graph.custom_testGraph.set_X_Axis=Over Time
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=Number of Hits :

14.6 想要改进报告仪表板?

如果你想贡献新的图表或改进当前的图表,你可以阅读此 开发者文档
阅读有关贡献的 文档。