]>
JMeter supports dashboard report generation to get graphs and
statistics from a test plan. The dashboard generator is a modular extension of JMeter.
Its default behavior is to read and process samples from
CSV files to generate HTML files containing graph views.
It can generate the report at end of a load test or on demand.
This report provides the following metrics:
This chapter describes how to configure and use the generator.
Dashboard generation uses JMeter properties to customize the
report. Some properties are used for general settings and others are
used for a particular graph configuration or exporter configuration.
reportgenerator.properties
.
To customize these properties, you should copy them in user.properties
file and modify them.
jmeter.reportgenerator.exporter.html.series_filter
to keep only the transactions
you want in the report if you don't want everything.Search|Order
, keep the rest:
To enable the generator to operate, the CSV file generated by JMeter
must include certain required data which are correct by default in the last live version of JMeter.
If you modified those settings, check that your JMeter configuration follows these settings (these are the defaults):
If you use Transaction Controller
s, to ensure most accurate results:
Generate parent sample
Transaction Controller
is used as a Container to represent a request for an HTML Page that will trigger Ajax calls and you
only want in your report the Transaction Controller, then Right click on the node and Apply Naming Policy
You will obtain this:
yyyyMMddHHmmss
jmeter.save.saveservice.timestamp_format
does not contain year then use 1970 as yeardd/MM/yyyy HH:mm:ss zzz
500
1500
sample_name:satisfaction|tolerance[;]
temp
20000
bin
).You can define some overall properties which are used by the generator configuration. These properties are freely named but you should use the prefix in order to avoid property overlap.
E.g.:
Each property describing a graph configuration must be prefixed with followed by the graph identifier.
All graphs support these properties:
org.apache.jmeter.report.processor.graph.AbstractGraphConsumer
.
false
Specific graph properties must use the prefix: The name of the property will be mapped using camel case transformation and the matching method of the class will be called with the property value as argument.
E.g.:
induces the call of the method setGranularity(150)
on the
instance of the graph.
Each property describing an exporter configuration must be prefixed with followed by the exporter identifier.
All exporters support these properties:
org.apache.jmeter.report.dashboard.DataExporter
.
series_filter
(see below)
apply only on sample series.
Default: true
(-success|-failure)?$
false
Specific exporter properties must use the prefix
report-output
report-template
Graph properties allow exporters to overwrite some graph data.
They must use the prefix:
Unlike the filtering in the section General properties which discards data before calculations, here the filtering is performed after the calculations and serves to simplify the final report.
The property series_filter
allows to filter which series of a graph (resp. rows of
a summary table) using regular expression that matches
the name of the series (resp. of the row).
However, even if the name of the
series (resp. row) matches the filter, the setting
of the other filtering properties can lead to its
discarding. Conversely if there is no matching, the
other properties can allow to keep it.
The following tables show how the setting of filtering properties works.
filter_only_sample_series | Graph/Summary supports controllers discrimination | The current series is a controller series | show_controllers_only | Discarded |
---|---|---|---|---|
False | False | - | False | False |
True | ||||
- | False | |||
True | ||||
True | False | False | ||
True | ||||
True | False | |||
True | ||||
True | False | - | False | |
True | ||||
- | False | |||
True | ||||
True | False | False | ||
True | True | |||
True | False | False | ||
True |
filter_only_sample_series | Graph/Summary supports controllers discrimination | Kept |
---|---|---|
False | False | False |
True | ||
True | False | True |
True | False |
show_controllers_only
and the graph is configured to exclude
controllers.
series_filter
matches none series.
You can copy the following configuration to your user.properties file in order to test the report generator.
output_dir
to your environment.
This configuration allows to generate a report where:
/tmp/test-report
.s0
" or "s1
" are shown.The report generation can be done as a stand alone process from a sample log file or automatically after running load test.
Use the following command:
Use the following command:
You can generate the HTML report using menu item Tools → Generate HTML report
:
For each parameters see the following table :
If no output directory is defined, the controller will use ${JMETER_HOME}/bin/report-output
.
You then only have to click on the Generate report
button and wait for an information dialog to appear
generate_report_ui.generation_timeout
All graphs provided by this report engine are located in the
package
org.apache.jmeter.report.processor.graph.impl
The dashboard generator provides the following graph classes:
Graph | Description | Supports controller discrimination |
---|---|---|
ActiveThreadsGraphConsumer | This graph represents the number of active threads over time. | False |
BytesThroughputGraphConsumer | This graph represents the throughput of received and sent data over time. | False |
CodesPerSecondGraphConsumer | This graph represents the rate of response codes over time. | False |
HitsPerSecondGraphConsumer | This graph represents the rate of finished requests over time. | False |
LatencyOverTimeGraphConsumer | This graph represents the average latency time over time. | True |
ConnectTimeOverTimeGraphConsumer | This graph represents the connection time over time. | True |
LatencyVSRequestGraphConsumer | This graph represents the median and average latency time depending on the number of current requests. | False |
ResponseTimeDistributionGraphConsumer | This graph represents the distribution of the samples depending on their elapsed time and name. | True |
ResponseTimeOverTimeGraphConsumer | This graph represents the average response time over time. | True |
ResponseTimePercentilesGraphConsumer | This graph represents the percentiles of the elapsed time over time. | True |
ResponseTimePercentilesOverTimeGraphConsumer | This graph shows Min/Max and 3 percentiles response time over time. | True |
ResponseTimeVSRequestGraphConsumer | This graph represents the median and average response time depending on the number of current requests. | False |
TimeVSThreadGraphConsumer |
This graph represents the average response time
depending on the number of current active threads.
The *-aggregated series represent the average response time regardless of the number of current active threads. These series are represented by a sole point because the number of current active threads is aggregated to an average. So for these points:
|
True |
TransactionsPerSecondGraphConsumer | This graph represents the rate of transaction by sample name over time. | True |
You can graph any sample_variable in CSV over time, you can customize your graphs
by settings their properties in the user.properties file.
They must use the id prefix custom_
:
To specify that this graph is a customized one :
Here is an example of a custom graph configuration that graphs the variable ts-hit
: