JMeter supports dashboard report generation to get graphs and
statistics from a test plan.
This chapter describes how to configure and use the generator.
15.1 Overview
|
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:
-
APDEX
(Application Performance Index) table that computes for every transaction the APDEX based on configurable values for tolerated and satisfied thresholds
-
A request summary graph showing the Success and failed requests (Transaction Controller Sample Results are not taken into account) percentage:
-
A Statistics table providing in one table a summary of all metrics per transaction including 3 configurable percentiles :
-
An error table providing a summary of all errors and their proportion in the total requests :
-
A Top 5 Errors by Sampler table providing for every Sampler (excluding Transaction Controller by default) the top 5 Errors :
-
Zoomable chart where you can check/uncheck every transaction to show/hide it for:
-
Response times Over Time (Includes Transaction Controller Sample Results) :
-
Response times Percentiles Over Time (successful responses only) :
-
Active Threads Over Time :
-
Bytes throughput Over Time (Ignores Transaction Controller Sample Results) :
-
Latencies Over Time (Includes Transaction Controller Sample Results) :
-
Connect Time Over Time (Includes Transaction Controller Sample Results) :
-
Hits per second (Ignores Transaction Controller Sample Results):
-
Response codes per second (Ignores Transaction Controller Sample Results):
-
Transactions per second (Includes Transaction Controller Sample Results):
-
Response Time vs Request per second (Ignores Transaction Controller Sample Results):
-
Latency vs Request per second (Ignores Transaction Controller Sample Results):
-
Response time Overview (Excludes Transaction Controller Sample Results) :
-
Response times percentiles (Includes Transaction Controller Sample Results):
-
Times vs Threads (Includes Transaction Controller Sample Results):
In distributed mode, this graph shows a horizontal axis the number of threads for 1 server. It's a current limitation
|
-
Response Time Distribution (Includes Transaction Controller Sample Results):
|
|
15.2 Configuring Dashboard Generation
|
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.
All report generator properties can be found in file
reportgenerator.properties
.
To customize these properties, you should copy them in
user.properties
file and modify them.
|
15.2.1 Requirements
|
To enable the generator to operate, the input CSV files
must include certain required data. Check that your JMeter
configuration follows these settings (these are the defaults):
 |
 |
 |
 |
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
# 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
|
 |
 |
 |
 |
The input CSV file must include the timeStamp
|
To ensure most accurate results, if you use a transaction controller, uncheck the box:
Generate parent sample
|
The "
Errors
" summary table shows more
accurate data if these settings are fulfilled:
|
When using JMeter distributed mode with multiple jmeter-server instances, ensure you add in your Thread Groups something that uniquely identifies ThreadGroup for every JVM, example:
where you pass a different JVM_ID property for each jmeter-server through:
where
i
varies between 1 and the number of jmeter-server you are using.
|
|
|
15.2.2 General settings
|
All properties must be prefixed with
|
Parameters
Attribute | Description | Required |
report_title |
Title used in the generated report.
Default: "Apache JMeter Dashboard"
|
No
|
date_format |
Default date format from
SimpleDateFormat Java API
with Locale.ENGLISH.
Date format is
yyyyMMddHHmmss
Useful when you would generate a report after the load test, and the results file contains timestamp in
another time zone. In this case the date format must include the time zone (zzz).
Example:
dd/MM/yyyy HH:mm:ss zzz
|
No
|
start_date |
Start date of the range of data to use for report.
Date format is defined by date_format property.
Default: not filled which means data range will be used from the beginning
|
No
|
end_date |
End date of the range of data to use for report.
Date format is defined by date_format property.
Default: not filled which means data range will be used until the end
|
No
|
overall_granularity |
Granularity of over time graphs. Data is aggregated to have 1 minute ticks.
Granularity must be higher than 1 second (1000) otherwise throughput graphs will be incorrect
|
Default: "60000" (1 minute)
|
No
|
apdex_satisfied_threshold |
Sets the satisfaction threshold for the
APDEX
calculation (in ms).
Default:
500
|
No
|
apdex_tolerated_threshold |
Sets the tolerance threshold for the APDEX calculation
(in ms).
Default:
1500
|
No
|
sample_filter |
Sets the filter of samples to keep for generating
graphs and statistics. An empty value deactivates the
filtering.
Format: Regular expression.
Default: ""
|
No
|
temp_dir |
Sets the temporary directory used by the generation
process if it needs file I/O
operations.
Default:
temp
|
No
|
statistic_window |
Sets the size of the sliding window used by percentile
evaluation. Caution: higher value provides a
better accuracy but needs more memory.
Default:
20000
|
No
|
Percentiles used by Summary table and Percentile graphs can be adjusted to different values by using the 3 properties:
-
aggregate_rpt_pct1 : Defaults to 90
-
aggregate_rpt_pct2 : Defaults to 95
-
aggregate_rpt_pct3 : Defaults to 99
|
Relative paths are built from the JMeter working directory
(default:
bin
).
|
|
|
15.2.4 Export settings
|
Each property describing an exporter configuration must be
prefixed with
 |
 |
 |
 |
jmeter.reportgenerator.exporter
|
 |
 |
 |
 |
followed by the exporter identifier.
15.2.4.1 General properties
|
All exporters support these properties:
Parameters
Attribute | Description | Required |
classname |
The fully qualified class name of the exporter
The class of the exporter must implement
org.apache.jmeter.report.dashboard.DataExporter
.
|
Yes
|
filters_only_sample_series |
Defines whether
series_filter
(see below)
apply only on sample series.
Default:
true
|
No
|
series_filter |
Sets the filter
of series. An empty value deactivates the filtering.
If not empty, regex should end with
(-success|-failure)?
Format: regular expression.
Default: ""
|
No
|
show_controllers_only |
Defines whether only controller series are shown.
Default:
false
|
No
|
|
|
15.2.4.4 Filtering mechanisms
|
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.
Incorrect filter configuration can lead to generate empty
graphs/summary tables:
-
If you set the property
show_controllers_only
and the graph is configured to exclude
controllers.
-
If the property
series_filter
matches none series.
|
|
|
|
|
|
|
15.3 Generating reports
|
The report generation can be done as a stand alone process from a
sample log file or automatically after running load test.
|
|
15.4 Default graphs
|
Due to limitations of this early version, each default graph
must be declared in JMeter properties. Otherwise, the graph
views will be empty.
|
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:
|
|
|