| <!DOCTYPE html SYSTEM "about:legacy-compat"> |
| <html lang="en"> |
| <head> |
| <META http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> |
| <title>Apache JMeter |
| - |
| User's Manual: Generating Dashboard Report</title> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <link href="https://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css"> |
| <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css"> |
| <link rel="stylesheet" type="text/css" href="../css/new-style.css"> |
| <link rel="apple-touch-icon-precomposed" href="../images/apple-touch-icon.png"> |
| <link rel="icon" href="../images/favicon.png"> |
| <meta name="msapplication-TileColor" content="#ffffff"> |
| <meta name="msapplication-TileImage" content="../images/mstile-144x144.png"> |
| <meta name="theme-color" content="#ffffff"> |
| </head> |
| <body role="document"> |
| <a href="#content" class="hidden">Main content</a> |
| <div class="header"> |
| <!-- |
| APACHE LOGO |
| --> |
| <div> |
| <a href="https://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="../images/asf-logo.svg" alt="Logo ASF"></a> |
| </div> |
| <!-- |
| PROJECT LOGO |
| --> |
| <div> |
| <a href="https://jmeter.apache.org/"><img class="logo" src="../images/logo.svg" alt="Apache JMeter"></a> |
| </div> |
| <div class="banner"> |
| <a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a> |
| <div class="clear"></div> |
| </div> |
| </div> |
| <div class="nav"> |
| <ul class="menu"> |
| <li onClick="return true"> |
| <div class="menu-title">About</div> |
| <ul> |
| <li> |
| <a href="../index.html">Overview</a> |
| </li> |
| <li> |
| <a href="https://www.apache.org/licenses/">License</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <ul class="menu"> |
| <li onClick="return true"> |
| <div class="menu-title">Download</div> |
| <ul> |
| <li> |
| <a href="../download_jmeter.cgi">Download Releases</a> |
| </li> |
| <li> |
| <a href="../changes.html">Release Notes</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <ul class="menu"> |
| <li onClick="return true"> |
| <div class="menu-title">Documentation</div> |
| <ul> |
| <li> |
| <a href="../usermanual/get-started.html">Get Started</a> |
| </li> |
| <li> |
| <a href="../usermanual/index.html">User Manual</a> |
| </li> |
| <li> |
| <a href="../usermanual/best-practices.html">Best Practices</a> |
| </li> |
| <li> |
| <a href="../usermanual/component_reference.html">Component Reference</a> |
| </li> |
| <li> |
| <a href="../usermanual/functions.html">Functions Reference</a> |
| </li> |
| <li> |
| <a href="../usermanual/properties_reference.html">Properties Reference</a> |
| </li> |
| <li> |
| <a href="../changes_history.html">Change History</a> |
| </li> |
| <li> |
| <a href="../api/index.html">Javadocs</a> |
| </li> |
| <li> |
| <a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a> |
| </li> |
| <li> |
| <a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <ul class="menu"> |
| <li onClick="return true"> |
| <div class="menu-title">Tutorials</div> |
| <ul> |
| <li> |
| <a href="../usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a> |
| </li> |
| <li> |
| <a href="../usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a> |
| </li> |
| <li> |
| <a href="../usermanual/junitsampler_tutorial.html">JUnit Sampler</a> |
| </li> |
| <li> |
| <a href="../usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a> |
| </li> |
| <li> |
| <a href="../usermanual/jmeter_tutorial.html">Extending JMeter</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <ul class="menu"> |
| <li onClick="return true"> |
| <div class="menu-title">Community</div> |
| <ul> |
| <li> |
| <a href="../issues.html">Issue Tracking</a> |
| </li> |
| <li> |
| <a href="../security.html">Security</a> |
| </li> |
| <li> |
| <a href="../mail.html">Mailing Lists</a> |
| </li> |
| <li> |
| <a href="../svnindex.html">Source Repositories</a> |
| </li> |
| <li> |
| <a href="../building.html">Building and Contributing</a> |
| </li> |
| <li> |
| <a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a> |
| </li> |
| <li> |
| <a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterCommitters">Contributors</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <ul class="menu"> |
| <li onClick="return true"> |
| <div class="menu-title">Foundation</div> |
| <ul> |
| <li> |
| <a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a> |
| </li> |
| <li> |
| <a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a> |
| </li> |
| <li> |
| <a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a> |
| </li> |
| <li> |
| <a href="https://www.apache.org/foundation/thanks.html">Thanks</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| <div class="main" id="content"> |
| <div class="social-media"> |
| <ul class="social-media-links"> |
| <li class="twitter"> |
| <a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a> |
| </li> |
| <li class="github"> |
| <a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a> |
| </li> |
| </ul> |
| </div> |
| <ul class="pagelinks"> |
| <li> |
| <a href="remote-test.html">< Prev</a> |
| </li> |
| <li> |
| <a href="../index.html">Index</a> |
| </li> |
| <li> |
| <a href="realtime-results.html">Next ></a> |
| </li> |
| </ul> |
| <div class="section"> |
| <h1 id="generation"> |
| 14. Generating Report Dashboard<a class="sectionlink" href="#generation" title="Link to here">¶</a> |
| </h1> |
| |
| <p> |
| JMeter supports dashboard report generation to get graphs and |
| statistics from a test plan. |
| <br> |
| This chapter describes how to configure and use the generator. |
| </p> |
| |
| <div class="subsection"> |
| <h2 id="overview"> |
| 14.1 Overview<a class="sectionlink" href="#overview" title="Link to here">¶</a> |
| </h2> |
| |
| <p>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. |
| </p> |
| |
| <p> |
| This report provides the following metrics: |
| |
| <ul> |
| |
| <li> |
| <a href="https://en.wikipedia.org/wiki/Apdex" title="Application Performance Index" target="_blank">APDEX</a> (Application Performance Index) table that computes for every transaction the APDEX based on configurable values for tolerated and satisfied thresholds |
| </li> |
| |
| <li> |
| A request summary graph showing the Success and failed requests (Transaction Controller Sample Results are not taken into account) percentage: |
| <figure> |
| <a href="../images/screenshots/dashboard/report_apdex_and_summary.png"><img src="../images/screenshots/dashboard/report_apdex_and_summary.png" width="1636" height="982" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| A Statistics table providing in one table a summary of all metrics per transaction including 3 configurable percentiles: |
| <figure> |
| <a href="../images/screenshots/dashboard/report_statistics.png"><img src="../images/screenshots/dashboard/report_statistics.png" width="1639" height="467" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| An error table providing a summary of all errors and their proportion in the total requests: |
| <figure> |
| <a href="../images/screenshots/dashboard/report_errors.png"><img src="../images/screenshots/dashboard/report_errors.png" width="1344" height="455" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| A Top 5 Errors by Sampler table providing for every Sampler (excluding Transaction Controller by default) the top 5 Errors: |
| <figure> |
| <a href="../images/screenshots/dashboard/top_5_errors_by_sampler.png"><img src="../images/screenshots/dashboard/top_5_errors_by_sampler.png" width="1609" height="508" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Zoomable chart where you can check/uncheck every transaction to show/hide it for: |
| |
| <ul> |
| |
| <li> |
| Response times Over Time (Includes Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/report_response_times_over_time.png"><img src="../images/screenshots/dashboard/report_response_times_over_time.png" width="1398" height="566" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Response times Percentiles Over Time (successful responses only): |
| <figure> |
| <a href="../images/screenshots/dashboard/response_time_percentiles_over_time.png"><img src="../images/screenshots/dashboard/response_time_percentiles_over_time.png" width="1640" height="539" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Active Threads Over Time: |
| <figure> |
| <a href="../images/screenshots/dashboard/report_active_threads_over_time.png"><img src="../images/screenshots/dashboard/report_active_threads_over_time.png" width="1638" height="544" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Bytes throughput Over Time (Ignores Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/report_bytes_throughput_over_time.png"><img src="../images/screenshots/dashboard/report_bytes_throughput_over_time.png" width="1373" height="543" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Latencies Over Time (Includes Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/report_latencies_over_time.png"><img src="../images/screenshots/dashboard/report_latencies_over_time.png" width="1373" height="547" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Connect Time Over Time (Includes Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/report_connect_time_over_time.png"><img src="../images/screenshots/dashboard/report_connect_time_over_time.png" width="1635" height="520" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Hits per second (Ignores Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/report_hits_per_second.png"><img src="../images/screenshots/dashboard/report_hits_per_second.png" width="1375" height="552" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Response codes per second (Ignores Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/report_codes_per_second.png"><img src="../images/screenshots/dashboard/report_codes_per_second.png" width="1380" height="558" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Transactions per second (Includes Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/report_transactions_per_second.png"><img src="../images/screenshots/dashboard/report_transactions_per_second.png" width="1372" height="577" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Response Time vs Request per second (Ignores Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/report_response_time_vs_request.png"><img src="../images/screenshots/dashboard/report_response_time_vs_request.png" width="1380" height="545" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Latency vs Request per second (Ignores Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/report_latencies_vs_request.png"><img src="../images/screenshots/dashboard/report_latencies_vs_request.png" width="1373" height="543" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Response time Overview (Excludes Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/response_time_overview.png"><img src="../images/screenshots/dashboard/response_time_overview.png" width="1645" height="562" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Response times percentiles (Includes Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/report_response_time_percentiles.png"><img src="../images/screenshots/dashboard/report_response_time_percentiles.png" width="1374" height="551" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| <li> |
| Times vs Threads (Includes Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/report_time_vs_threads.png"><img src="../images/screenshots/dashboard/report_time_vs_threads.png" width="1373" height="567" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| |
| <div class="clear"></div> |
| <div class="note">In distributed mode, this graph shows a horizontal axis the number of threads for 1 server. It's a current limitation</div> |
| <div class="clear"></div> |
| |
| </li> |
| |
| <li> |
| Response Time Distribution (Includes Transaction Controller Sample Results): |
| <figure> |
| <a href="../images/screenshots/dashboard/report_response_time_distribution.png"><img src="../images/screenshots/dashboard/report_response_time_distribution.png" width="1373" height="549" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| </li> |
| |
| </ul> |
| |
| </li> |
| |
| </ul> |
| |
| </p> |
| |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="configuration"> |
| 14.2 Configuring Dashboard Generation<a class="sectionlink" href="#configuration" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| 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. |
| |
| <div class="clear"></div> |
| <div class="note"> |
| All report generator properties can be found in file <span class="code">reportgenerator.properties</span>. |
| To customize these properties, you should copy them in <span class="code">user.properties</span> file and modify them. |
| </div> |
| <div class="clear"></div> |
| |
| </p> |
| |
| <div class="subsection"> |
| <h2 id="configuration_requirements"> |
| 14.2.1 Requirements<a class="sectionlink" href="#configuration_requirements" title="Link to here">¶</a> |
| </h2> |
| |
| <div class="subsection"> |
| <h2 id="saveservice_requirements"> |
| 14.2.1.1 Filtering configuration<a class="sectionlink" href="#saveservice_requirements" title="Link to here">¶</a> |
| </h2> |
| Ensure you set property <span class="code">jmeter.reportgenerator.exporter.html.series_filter</span> to keep only the transactions |
| you want in the report if you don't want everything. |
| <br> |
| In the example below you must only modify <span class="code">Search|Order</span>, keep the rest: |
| |
| <pre class="source">jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$</pre> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="saveservice_requirements"> |
| 14.2.1.2 Save Service configuration<a class="sectionlink" href="#saveservice_requirements" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| To enable the generator to operate, the CSV file generated by JMeter |
| must include certain required data which <b>are correct by default in the last live version</b> of JMeter. |
| <br> |
| If you modified those settings, check that your JMeter configuration follows these settings (these are the defaults): |
| |
| <pre class="source"> |
| 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 |
| </pre> |
| |
| </p> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="transaction_controller_requirements"> |
| 14.2.1.3 Transaction Controller configuration<a class="sectionlink" href="#transaction_controller_requirements" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| If you use <span class="code">Transaction Controller</span>s, to ensure most accurate results: |
| |
| <ul> |
| |
| <li> |
| uncheck the box (<b>this is the default configuration</b>): |
| <span class="code">Generate parent sample</span> |
| |
| <figure> |
| <a href="../images/screenshots/transactioncontroller.png"><img src="../images/screenshots/transactioncontroller.png" width="" height="" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| |
| </li> |
| |
| <li> |
| If <span class="code">Transaction Controller</span> 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 |
| |
| <figure> |
| <a href="../images/screenshots/apply_naming_policy1.png"><img src="../images/screenshots/apply_naming_policy1.png" width="" height="" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| You will obtain this: |
| |
| <figure> |
| <a href="../images/screenshots/apply_naming_policy2.png"><img src="../images/screenshots/apply_naming_policy2.png" width="" height="" alt=""></a> |
| <figcaption></figcaption> |
| </figure> |
| |
| </li> |
| |
| </ul> |
| |
| </p> |
| |
| </div> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="configuration_general"> |
| 14.2.2 General settings<a class="sectionlink" href="#configuration_general" title="Link to here">¶</a> |
| </h2> |
| |
| <div class="clear"></div> |
| <div class="note"> |
| All properties must be prefixed with |
| |
| <pre class="source">jmeter.reportgenerator.</pre> |
| |
| </div> |
| <div class="clear"></div> |
| |
| <div class="properties"> |
| <h3> |
| Parameters |
| </h3> |
| <div class="property title"> |
| <div class="name title">Attribute</div> |
| <div class="description title">Description</div> |
| <div class="required title">Required</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">report_title</div> |
| <div class="description req-false"> |
| Title used in the generated report. |
| <br> |
| Default: "Apache JMeter Dashboard" |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">date_format</div> |
| <div class="description req-false"> |
| Default date format from <a href="http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html"> |
| SimpleDateFormat Java API</a> with Locale.ENGLISH. |
| <br> |
| Default Date format is <span class="code">yyyyMMddHHmmss</span> |
| <br> |
| Useful when you would like to 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). |
| |
| <div class="clear"></div> |
| <div class="note"> |
| If <span class="code">jmeter.save.saveservice.timestamp_format</span> does not contain year then use 1970 as year |
| </div> |
| <div class="clear"></div> |
| |
| <br> |
| Example: <span class="code">dd/MM/yyyy HH:mm:ss zzz</span> |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">start_date</div> |
| <div class="description req-false"> |
| Start date of the range of data to use for report. |
| <br> |
| Date format is defined by date_format property. |
| <br> |
| Default: not filled which means data range will be used from the beginning |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">end_date</div> |
| <div class="description req-false"> |
| End date of the range of data to use for report. |
| <br> |
| Date format is defined by date_format property. |
| <br> |
| Default: not filled which means data range will be used until the end |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">overall_granularity</div> |
| <div class="description req-false"> |
| Granularity of over time graphs. Data is aggregated to have 1 minute ticks. |
| <br> |
| |
| <div class="clear"></div> |
| <div class="note">Granularity must be higher than 1 second (1000) otherwise throughput graphs will be incorrect</div> |
| <div class="clear"></div> |
| Default: "60000" (1 minute) |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">apdex_satisfied_threshold</div> |
| <div class="description req-false"> |
| Sets the satisfaction threshold for the |
| <a href="https://en.wikipedia.org/wiki/Apdex" target="_blank">APDEX</a> |
| calculation (in ms). |
| <br> |
| Default: <span class="code">500</span> |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">apdex_tolerated_threshold</div> |
| <div class="description req-false"> |
| Sets the tolerance threshold for the APDEX calculation |
| (in ms). |
| <br> |
| Default: <span class="code">1500</span> |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">jmeter.reportgenerator.apdex_per_transaction</div> |
| <div class="description req-false"> |
| Sets satisfaction and tolerance threshold to specific samples. |
| <br> |
| Use sample names or regular expression. |
| <br> |
| Format is <span class="code">sample_name:satisfaction|tolerance[;]</span> |
| <br> |
| Values are in milliseconds. |
| |
| <div class="clear"></div> |
| <div class="note"> |
| Notice the colon between sample name and values, the pipe between thresholds and the |
| semicolon at the end to separate different samples. Don't forget to escape after |
| semicolon to span multiple lines. |
| </div> |
| <div class="clear"></div> |
| Example: |
| |
| <pre class="source">jmeter.reportgenerator.apdex_per_transaction=sample(\\d+):1000|2000;\ |
| samples12:3000|4000;\ |
| scenar01-12:5000|6000</pre> |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">sample_filter</div> |
| <div class="description req-false"> |
| Sets the filter of samples to keep for generating |
| graphs and statistics. An empty value deactivates the |
| filtering. |
| <br> |
| Format: Regular expression. |
| <br> |
| Default: "" |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">temp_dir</div> |
| <div class="description req-false"> |
| Sets the temporary directory used by the generation |
| process if it needs file I/O |
| operations. |
| <br> |
| Default: <span class="code">temp</span> |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">statistic_window</div> |
| <div class="description req-false"> |
| Sets the size of the sliding window used by percentile |
| evaluation. Caution: higher value provides a |
| better accuracy but needs more memory. |
| <br> |
| Default: <span class="code">20000</span> |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| </div> |
| |
| <div class="clear"></div> |
| <div class="note"> |
| Percentiles used by Summary table and Percentile graphs can be adjusted to different values by using the 3 properties: |
| |
| <ul> |
| |
| <li>aggregate_rpt_pct1: Defaults to 90</li> |
| |
| <li>aggregate_rpt_pct2: Defaults to 95</li> |
| |
| <li>aggregate_rpt_pct3: Defaults to 99</li> |
| |
| </ul> |
| |
| </div> |
| <div class="clear"></div> |
| |
| <div class="clear"></div> |
| <div class="note"> |
| Relative paths are built from the JMeter working directory |
| (default: <span class="code">bin</span>). |
| </div> |
| <div class="clear"></div> |
| |
| <div class="clear"></div> |
| <div class="note"> |
| |
| <p> |
| You can define some overall properties which are used by the |
| generator configuration. These properties are freely named |
| but you should use the prefix |
| |
| <pre class="source">jmeter.reportgenerator.</pre> |
| in order to avoid property overlap. |
| |
| </p> |
| |
| <p> |
| E.g.: |
| </p> |
| |
| <dl> |
| |
| <dt>Property definition:</dt> |
| |
| <dd> |
| <pre class="source">jmeter.reportgenerator.overall_granularity=60000</pre> |
| </dd> |
| |
| <dt>Property reference:</dt> |
| |
| <dd> |
| <pre class="source">${jmeter.reportgenerator.overall_granularity}</pre> |
| </dd> |
| |
| </dl> |
| |
| </div> |
| <div class="clear"></div> |
| |
| <div class="clear"></div> |
| <div class="note"> |
| |
| <p> |
| The calculated percentiles might differ from those from the Aggregate Report in the GUI. |
| This is because the dashboard uses a different formula to estimate the percentiles. |
| It will be most observable when the distribution of the timing values is spread |
| too wide. That can happen if too few samples were taken. If you want the numbers |
| to be more or less the same as those from the Aggregate Report, you will have to switch the used |
| <a href="https://commons.apache.org/proper/commons-math/javadocs/api-3.6/org/apache/commons/math3/stat/descriptive/rank/Percentile.EstimationType.html">estimator</a> |
| from <span class="code">LEGACY</span> to <span class="code">R_3</span>, by specifying the JMeter property |
| <span class="code">backend_metrics_percentile_estimator=R_3</span> (this time without any |
| prefix). |
| </p> |
| |
| </div> |
| <div class="clear"></div> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="configure_graph"> |
| 14.2.3 Graph settings<a class="sectionlink" href="#configure_graph" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| Each property describing a graph configuration must be prefixed |
| with |
| |
| <pre class="source">jmeter.reportgenerator.graph.</pre> |
| followed by the graph identifier. |
| |
| </p> |
| |
| |
| |
| <div class="subsection"> |
| <h2 id="general_graph_properties"> |
| 14.2.3.1 General properties<a class="sectionlink" href="#general_graph_properties" title="Link to here">¶</a> |
| </h2> |
| |
| <p>All graphs support these properties:</p> |
| |
| <div class="properties"> |
| <h3> |
| Parameters |
| </h3> |
| <div class="property title"> |
| <div class="name title">Attribute</div> |
| <div class="description title">Description</div> |
| <div class="required title">Required</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-true">classname</div> |
| <div class="description req-true"> |
| The fully qualified class name of the graph |
| |
| <br> |
| The class of the graph must extend |
| <span class="code">org.apache.jmeter.report.processor.graph.AbstractGraphConsumer</span>. |
| |
| <br> |
| See |
| <a href="#default_graphs">Default graph section</a> |
| for more details. |
| |
| </div> |
| <div class="required req-true">Yes</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">exclude_controllers</div> |
| <div class="description req-false"> |
| Defines |
| whether the graph discards controller samples. |
| Default: <span class="code">false</span> |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">title</div> |
| <div class="description req-false">Sets the title of the |
| graph. |
| Default: "" |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| </div> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="specific_graph_properties"> |
| 14.2.3.2 Specific properties<a class="sectionlink" href="#specific_graph_properties" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| Specific graph properties must use the prefix: |
| |
| <pre class="source">jmeter.reportgenerator.graph.<graph_id>.property</pre> |
| 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. |
| |
| </p> |
| |
| <p> |
| E.g.: |
| |
| <pre class="source">jmeter.reportgenerator.graph.<graph_id>.property.set_granularity=150</pre> |
| induces the call of the method <span class="code">setGranularity(150)</span> on the |
| instance of the graph. |
| |
| </p> |
| |
| </div> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="configure_export"> |
| 14.2.4 Export settings<a class="sectionlink" href="#configure_export" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| Each property describing an exporter configuration must be |
| prefixed with |
| |
| <pre class="source">jmeter.reportgenerator.exporter</pre> |
| followed by the exporter identifier. |
| |
| </p> |
| |
| <div class="subsection"> |
| <h2 id="general_export_properties"> |
| 14.2.4.1 General properties<a class="sectionlink" href="#general_export_properties" title="Link to here">¶</a> |
| </h2> |
| |
| <p>All exporters support these properties:</p> |
| |
| <div class="properties"> |
| <h3> |
| Parameters |
| </h3> |
| <div class="property title"> |
| <div class="name title">Attribute</div> |
| <div class="description title">Description</div> |
| <div class="required title">Required</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-true">classname</div> |
| <div class="description req-true"> |
| The fully qualified class name of the exporter |
| |
| <br> |
| The class of the exporter must implement |
| <span class="code">org.apache.jmeter.report.dashboard.DataExporter</span> |
| . |
| |
| </div> |
| <div class="required req-true">Yes</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">filters_only_sample_series</div> |
| <div class="description req-false"> |
| Defines whether <span class="code">series_filter</span> (see below) |
| apply only on sample series. |
| Default: <span class="code">true</span> |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">series_filter</div> |
| <div class="description req-false"> |
| Sets the filter |
| of series. An empty value deactivates the filtering. |
| If not empty, regex should end with <span class="code">(-success|-failure)?$</span> |
| <br> |
| Format: regular expression. |
| Default: "" |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">show_controllers_only</div> |
| <div class="description req-false"> |
| Defines whether only controller series are shown. |
| Default: <span class="code">false</span> |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| </div> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="specific_export_properties"> |
| 14.2.4.2 Specific properties<a class="sectionlink" href="#specific_export_properties" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| Specific exporter properties must use the prefix |
| |
| <pre class="source">jmeter.reportgenerator.exporter.<exporter_id>.property</pre> |
| |
| </p> |
| |
| <div class="properties"> |
| <h3> |
| Parameters |
| </h3> |
| <div class="property title"> |
| <div class="name title">Attribute</div> |
| <div class="description title">Description</div> |
| <div class="required title">Required</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">output_dir</div> |
| <div class="description req-false"> |
| Sets the destination directory for generated html pages. |
| Default: <span class="code">report-output</span> |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">template_dir</div> |
| <div class="description req-false"> |
| Sets the source directory of template files from |
| which the html pages are generated. |
| Default: <span class="code">report-template</span> |
| |
| </div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| </div> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="graph_export_properties"> |
| 14.2.4.3 Graph properties<a class="sectionlink" href="#graph_export_properties" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| Graph properties allow exporters to overwrite some graph data. |
| |
| <br> |
| They must use the prefix: |
| |
| <pre class="source">jmeter.reportgenerator.exporter.<exporter_id>.graph_options.<graph_id></pre> |
| |
| </p> |
| |
| <div class="properties"> |
| <h3> |
| Parameters |
| </h3> |
| <div class="property title"> |
| <div class="name title">Attribute</div> |
| <div class="description title">Description</div> |
| <div class="required title">Required</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">minX</div> |
| <div class="description req-false">Sets the minimum |
| abscissa for the graph.</div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">maxX</div> |
| <div class="description req-false">Sets the maximum |
| abscissa for the graph.</div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">minY</div> |
| <div class="description req-false">Sets the minimum |
| ordinate for the graph.</div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">maxY</div> |
| <div class="description req-false">Sets the maximum |
| ordinate for the graph.</div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| </div> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="export_filtering"> |
| 14.2.4.4 Filtering mechanisms<a class="sectionlink" href="#export_filtering" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| Unlike the filtering in the section |
| <a href="#configure_general">General properties</a> |
| which discards data before calculations, here the |
| filtering is performed after the calculations and serves |
| to simplify the final report. |
| |
| </p> |
| |
| <p> |
| The property <span class="code">series_filter</span> |
| 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. |
| |
| </p> |
| |
| <p> |
| The following tables show how the setting of filtering |
| properties works. |
| </p> |
| |
| <p> |
| |
| <table> |
| |
| <div class="nostyle"> |
| <caption>Cases of discarding when there is pattern matching</caption> |
| </div> |
| |
| <thead> |
| |
| <tr> |
| <th>filter_only_sample_series</th> |
| <th>Graph/Summary supports controllers discrimination</th> |
| <th>The current series is a controller series</th> |
| <th>show_controllers_only</th> |
| <th>Discarded</th> |
| |
| </tr> |
| |
| </thead> |
| |
| <tbody> |
| |
| <tr> |
| <td style="border-bottom:1px solid black" rowspan="8">False</td> |
| <td style="border-bottom:1px solid black" rowspan="4">False</td> |
| <td style="border-bottom:1px solid black" rowspan="2">-</td> |
| <td style="border-bottom:1px solid black">False</td> |
| <td style="border-bottom:1px solid black" rowspan="13">False</td> |
| |
| </tr> |
| |
| <tr> |
| <td style="border-bottom:1px solid black">True</td> |
| |
| </tr> |
| |
| <tr> |
| <td style="border-bottom:1px solid black" rowspan="2">-</td> |
| <td style="border-bottom:1px solid black">False</td> |
| |
| </tr> |
| |
| <tr> |
| <td style="border-bottom:1px solid black">True</td> |
| |
| </tr> |
| |
| <tr> |
| <td style="border-bottom:1px solid black" rowspan="4">True</td> |
| <td style="border-bottom:1px solid black" rowspan="2">False</td> |
| <td style="border-bottom:1px solid black">False</td> |
| |
| </tr> |
| |
| <tr> |
| <td style="border-bottom:1px solid black">True</td> |
| |
| </tr> |
| |
| <tr> |
| <td style="border-bottom:1px solid black" rowspan="2">True</td> |
| <td style="border-bottom:1px solid black">False</td> |
| |
| </tr> |
| |
| <tr> |
| <td style="border-bottom:1px solid black">True</td> |
| |
| </tr> |
| |
| <tr> |
| <td rowspan="8">True</td> |
| <td style="border-bottom:1px solid black" rowspan="4">False</td> |
| <td style="border-bottom:1px solid black" rowspan="2">-</td> |
| <td style="border-bottom:1px solid black">False</td> |
| |
| </tr> |
| |
| <tr> |
| <td style="border-bottom:1px solid black">True</td> |
| |
| </tr> |
| |
| <tr> |
| <td style="border-bottom:1px solid black" rowspan="2">-</td> |
| <td style="border-bottom:1px solid black">False</td> |
| |
| </tr> |
| |
| <tr> |
| <td style="border-bottom:1px solid black">True</td> |
| |
| </tr> |
| |
| <tr> |
| <td rowspan="4">True</td> |
| <td style="border-bottom:1px solid black" rowspan="2">False</td> |
| <td style="border-bottom:1px solid black">False</td> |
| |
| </tr> |
| |
| <tr> |
| <td style="border-bottom:1px solid black">True</td> |
| <td style="border-bottom:1px solid black">True</td> |
| |
| </tr> |
| |
| <tr> |
| <td rowspan="2">True</td> |
| <td style="border-bottom:1px solid black">False</td> |
| <td rowspan="2">False</td> |
| |
| </tr> |
| |
| <tr> |
| <td>True</td> |
| |
| </tr> |
| |
| </tbody> |
| |
| </table> |
| |
| </p> |
| |
| <p> |
| |
| <table> |
| |
| <div class="nostyle"> |
| <caption>Cases of retention when there is no pattern matching</caption> |
| </div> |
| |
| <thead> |
| |
| <tr> |
| <th>filter_only_sample_series</th> |
| <th>Graph/Summary supports controllers discrimination</th> |
| <th>Kept</th> |
| |
| </tr> |
| |
| </thead> |
| |
| <tbody> |
| |
| <tr> |
| <td style="border-bottom:1px solid black" rowspan="2">False</td> |
| <td style="border-bottom:1px solid black">False</td> |
| <td style="border-bottom:1px solid black" rowspan="2">False</td> |
| |
| </tr> |
| |
| <tr> |
| <td style="border-bottom:1px solid black">True</td> |
| |
| </tr> |
| |
| <tr> |
| <td rowspan="2">True</td> |
| <td style="border-bottom:1px solid black">False</td> |
| <td style="border-bottom:1px solid black">True</td> |
| |
| </tr> |
| |
| <tr> |
| <td>True</td> |
| <td>False</td> |
| |
| </tr> |
| |
| </tbody> |
| |
| </table> |
| |
| </p> |
| |
| <div class="clear"></div> |
| <div class="note"> |
| Incorrect filter configuration can lead to generate empty |
| graphs/summary tables: |
| |
| <ul> |
| |
| <li> |
| If you set the property |
| <span class="code">show_controllers_only</span> |
| and the graph is configured to exclude |
| controllers. |
| |
| </li> |
| |
| <li> |
| If the property |
| <span class="code">series_filter</span> |
| matches none series. |
| |
| </li> |
| |
| </ul> |
| |
| </div> |
| <div class="clear"></div> |
| |
| </div> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="sample_configuration"> |
| 14.2.5 Sample configuration<a class="sectionlink" href="#sample_configuration" title="Link to here">¶</a> |
| </h2> |
| |
| <p>You can copy the following configuration to your user.properties |
| file in order to test the report generator.</p> |
| |
| <pre class="source"> |
| # Configure this property to change the report title |
| #jmeter.reportgenerator.report_title=Apache JMeter Dashboard |
| |
| # Change this parameter if you want to change the granularity of over time graphs. |
| # Granularity must be higher than 1000 (1second) otherwise Throughput graphs will be incorrect |
| # see Bug 60149 |
| #jmeter.reportgenerator.overall_granularity=60000 |
| |
| Change this parameter if you want to change the granularity of Response time distribution |
| # Set to 100 ms by default |
| #jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=100 |
| |
| # Change this parameter if you want to override the APDEX satisfaction threshold. |
| jmeter.reportgenerator.apdex_satisfied_threshold=1500 |
| |
| # Change this parameter if you want to override the APDEX tolerance threshold. |
| jmeter.reportgenerator.apdex_tolerated_threshold=3000 |
| |
| # Sets the destination directory for generated html pages, it is better to change it for every generation |
| # This will override the value set through -o command line option |
| # jmeter.reportgenerator.exporter.html.property.output_dir=/tmp/test-report |
| |
| # Indicates which graph series are filtered (regular expression) |
| # In the below example we filter on Search and Order samples |
| # Note that the end of the pattern should always include (-success|-failure)?$ |
| # Transactions per second suffixes Transactions with "-success" or "-failure" depending |
| # on the result |
| #jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$ |
| |
| # Indicates whether series filter apply only on sample series |
| jmeter.reportgenerator.exporter.html.filters_only_sample_series=true |
| </pre> |
| |
| <div class="clear"></div> |
| <div class="note"> |
| Adapt the parameter |
| <span class="code">output_dir</span> |
| to your environment. |
| |
| </div> |
| <div class="clear"></div> |
| |
| <p> |
| This configuration allows to generate a report where: |
| |
| <ul> |
| |
| <li>Over time graphs have a time granularity equal to 1 minute.</li> |
| |
| <li>The satisfaction threshold for ADPEX calculation is 1 second and half.</li> |
| |
| <li>The tolerance threshold for ADPEX calculation is 3 seconds.</li> |
| |
| <li> |
| The HTML files are generated in the directory <span class="code">/tmp/test-report</span>. |
| </li> |
| |
| <li> |
| Only series which the name begins with "<span class="code">s0</span>" or "<span class="code">s1</span>" are shown. |
| </li> |
| |
| <li>The previous filter only applies to graphs (resp. summary tables) where the series (resp. rows) match samples</li> |
| |
| </ul> |
| |
| </p> |
| |
| </div> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="report"> |
| 14.3 Generating reports<a class="sectionlink" href="#report" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| The report generation can be done as a stand alone process from a |
| sample log file or automatically after running load test. |
| </p> |
| |
| <div class="subsection"> |
| <h2 id="report_only"> |
| 14.3.1 Generation from an existing sample CSV log file<a class="sectionlink" href="#report_only" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| Use the following command: |
| |
| <pre class="source">jmeter -g <log file> -o <Path to output folder></pre> |
| |
| </p> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="report_after_load_test"> |
| 14.3.2 Generation after load test<a class="sectionlink" href="#report_after_load_test" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| Use the following command: |
| |
| <pre class="source">jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder></pre> |
| |
| </p> |
| |
| </div> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="report_gui"> |
| 14.3.3 Generation using GUI Tools menu<a class="sectionlink" href="#report_gui" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| You can generate the HTML report using menu item <span class="code">Tools → Generate HTML report</span>: |
| |
| <figure> |
| <a href="../images/screenshots/html_report_menu.png"><img src="../images/screenshots/html_report_menu.png" width="" height="" alt="Figure 14.1. HTML Report Dialog Menu"></a> |
| <figcaption>Figure 14.1. HTML Report Dialog Menu</figcaption> |
| </figure> |
| |
| </p> |
| |
| <p>For each parameters see the following table :</p> |
| |
| <div class="properties"> |
| <h3> |
| Parameters |
| </h3> |
| <div class="property title"> |
| <div class="name title">Attribute</div> |
| <div class="description title">Description</div> |
| <div class="required title">Required</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-true">Results file (csv or jtl)</div> |
| <div class="description req-true">The CSV output of a tes run</div> |
| <div class="required req-true">Yes</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-true">user.properties file</div> |
| <div class="description req-true">The user.properties file used to run the load test</div> |
| <div class="required req-true">Yes</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-false">Output directory</div> |
| <div class="description req-false">The directory where you want the report to be created(must be empty)</div> |
| <div class="required req-false">No</div> |
| </div> |
| |
| </div> |
| |
| <p> |
| If no output directory is defined, the controller will use <span class="code">${JMETER_HOME}/bin/report-output</span>. |
| </p> |
| |
| <p> |
| You then only have to click on the <span class="code">Generate report</span> button and wait for an information dialog to appear |
| |
| <div class="clear"></div> |
| <div class="note"> |
| If report generation takes more than two minutes, adjust the property <span class="code">generate_report_ui.generation_timeout</span> |
| </div> |
| <div class="clear"></div> |
| </p> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="default_graphs"> |
| 14.4 Default graphs<a class="sectionlink" href="#default_graphs" title="Link to here">¶</a> |
| </h2> |
| |
| <div class="clear"></div> |
| <div class="note">Due to limitations of this early version, each default graph |
| must be declared in JMeter properties. Otherwise, the graph |
| views will be empty.</div> |
| <div class="clear"></div> |
| |
| <p> |
| All graphs provided by this report engine are located in the |
| package |
| <span class="code">org.apache.jmeter.report.processor.graph.impl</span> |
| |
| </p> |
| |
| <p>The dashboard generator provides the following graph classes:</p> |
| |
| <table> |
| |
| <thead> |
| |
| <tr> |
| <th>Graph</th> |
| <th>Description</th> |
| <th>Supports controller discrimination</th> |
| |
| </tr> |
| |
| </thead> |
| |
| <tbody> |
| |
| <tr> |
| <td>ActiveThreadsGraphConsumer</td> |
| <td>This graph represents the number of active threads over time.</td> |
| <td>False</td> |
| |
| </tr> |
| |
| <tr> |
| <td>BytesThroughputGraphConsumer</td> |
| <td>This graph represents the throughput of received and sent data |
| over time.</td> |
| <td>False</td> |
| |
| </tr> |
| |
| <tr> |
| <td>CodesPerSecondGraphConsumer</td> |
| <td>This graph represents the rate of response codes over time.</td> |
| <td>False</td> |
| |
| </tr> |
| |
| <tr> |
| <td>HitsPerSecondGraphConsumer</td> |
| <td>This graph represents the rate of finished requests over |
| time.</td> |
| <td>False</td> |
| |
| </tr> |
| |
| <tr> |
| <td>LatencyOverTimeGraphConsumer</td> |
| <td>This graph represents the average latency time over time.</td> |
| <td>True</td> |
| |
| </tr> |
| |
| <tr> |
| <td>ConnectTimeOverTimeGraphConsumer</td> |
| <td>This graph represents the connection time over time.</td> |
| <td>True</td> |
| |
| </tr> |
| |
| <tr> |
| <td>LatencyVSRequestGraphConsumer</td> |
| <td>This graph represents the median and average latency time |
| depending on the number of current requests.</td> |
| <td>False</td> |
| |
| </tr> |
| |
| <tr> |
| <td>ResponseTimeDistributionGraphConsumer</td> |
| <td>This graph represents the distribution of the samples |
| depending on their elapsed time and name.</td> |
| <td>True</td> |
| |
| </tr> |
| |
| <tr> |
| <td>ResponseTimeOverTimeGraphConsumer</td> |
| <td>This graph represents the average response time over time.</td> |
| <td>True</td> |
| |
| </tr> |
| |
| <tr> |
| <td>ResponseTimePercentilesGraphConsumer</td> |
| <td>This graph represents the percentiles of the elapsed time |
| over time.</td> |
| <td>True</td> |
| |
| </tr> |
| |
| <tr> |
| <td>ResponseTimePercentilesOverTimeGraphConsumer</td> |
| <td>This graph shows Min/Max and 3 percentiles response time over time.</td> |
| <td>True</td> |
| |
| </tr> |
| |
| <tr> |
| <td>ResponseTimeVSRequestGraphConsumer</td> |
| <td>This graph represents the median and average response time |
| depending on the number of current requests.</td> |
| <td>False</td> |
| |
| </tr> |
| |
| <tr> |
| <td>TimeVSThreadGraphConsumer</td> |
| <td> |
| This graph represents the average response time |
| depending on the number of current active threads. |
| |
| <p> |
| 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: |
| |
| <ul> |
| |
| <li>The abscissa is the average |
| of the number of current active |
| threads when samples of the |
| series finish.</li> |
| |
| <li>The ordinate is the average of the |
| response time for the samples of the |
| series regardless of the number of current |
| active threads.</li> |
| |
| </ul> |
| |
| </p> |
| </td> |
| <td>True</td> |
| |
| </tr> |
| |
| <tr> |
| <td>TransactionsPerSecondGraphConsumer</td> |
| <td>This graph represents the rate of transaction by |
| sample name over time.</td> |
| <td>True</td> |
| |
| </tr> |
| |
| </tbody> |
| |
| </table> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="customs_graphs"> |
| 14.5 Generating customs graphs over time<a class="sectionlink" href="#customs_graphs" title="Link to here">¶</a> |
| </h2> |
| |
| <p> |
| You can graph any sample_variable in CSV over time, you can customize your graphs |
| by settings their properties in the user.properties file. |
| |
| <br> |
| They must use the id prefix <span class="code">custom_</span>: |
| |
| <pre class="source">jmeter.reportgenerator.graph.custom_<your_graph_name_id>.property.<your_option_name></pre> |
| To specify that this graph is a customized one : |
| |
| <pre class="source">jmeter.reportgenerator.graph.custom_<your_graph_name_id>.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer</pre> |
| |
| </p> |
| |
| <div class="properties"> |
| <h3> |
| Parameters |
| </h3> |
| <div class="property title"> |
| <div class="name title">Attribute</div> |
| <div class="description title">Description</div> |
| <div class="required title">Required</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-true">set_X_Axis</div> |
| <div class="description req-true">Sets the X axis name of the graph.</div> |
| <div class="required req-true">Yes</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-true">set_Y_Axis</div> |
| <div class="description req-true">Sets the Y axis name of the graph.</div> |
| <div class="required req-true">Yes</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-true">set_Content_Message</div> |
| <div class="description req-true">Sets the displayed message when the cursor is on a point of the graph.</div> |
| <div class="required req-true">Yes</div> |
| </div> |
| |
| <div class="property"> |
| <div class="name req-true">set_Sample_Variable_Name</div> |
| <div class="description req-true">Name of the column you want to graph in the csv.</div> |
| <div class="required req-true">Yes</div> |
| </div> |
| |
| </div> |
| |
| <p> |
| Here is an example of a custom graph configuration that graphs the variable <span class="code">ts-hit</span>: |
| </p> |
| |
| <pre class="source"> |
| 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 : |
| </pre> |
| |
| </div> |
| |
| <div class="subsection"> |
| <h2 id="development"> |
| 14.6 Want to improve Report Dashboard ?<a class="sectionlink" href="#development" title="Link to here">¶</a> |
| </h2> |
| If you want to contribute new graphs or improve current ones, you |
| can read this <a href="../devguide-dashboard.html">developer documentation</a>. |
| <br> |
| Read this <a href="../building.html">documentation</a> on contributing. |
| |
| </div> |
| |
| </div> |
| <ul class="pagelinks"> |
| <li> |
| <a href="remote-test.html">< Prev</a> |
| </li> |
| <li> |
| <a href="../index.html">Index</a> |
| </li> |
| <li> |
| <a href="realtime-results.html">Next ></a> |
| </li> |
| </ul> |
| <div class="share-links"> |
| Share this page: |
| |
| <ul> |
| <li class="fb"> |
| <a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a> |
| </li> |
| <li class="twitter"> |
| <a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a> |
| </li> |
| </ul> |
| </div> |
| <a href="#top" id="topButton">Go to top</a> |
| </div> |
| <div class="footer"> |
| <div class="copyright"> |
| Copyright © |
| 1999 – |
| 2022 |
| , Apache Software Foundation |
| </div> |
| <div class="trademarks">Apache, Apache JMeter, JMeter, the Apache |
| feather, and the Apache JMeter logo are |
| trademarks of the |
| Apache Software Foundation. |
| </div> |
| </div> |
| <script>(function(){ |
| "use strict"; |
| // enable 'go to top' button functionality |
| document.addEventListener('scroll', function() { |
| if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) { |
| document.getElementById("topButton").style.display = "block"; |
| } else { |
| document.getElementById("topButton").style.display = "none"; |
| } |
| }); |
| // fill in the current location into social links on this page. |
| var as = document.getElementsByTagName('a'); |
| var loc = document.location.href; |
| if (!loc.toLowerCase().startsWith('http')) { |
| return; |
| } |
| for (var i=0; i<as.length; i++) { |
| var href = as[i].getAttribute('data-social-url'); |
| if (href !== null) { |
| as[i].href = href + encodeURIComponent(loc); |
| } |
| } |
| })();</script> |
| </body> |
| </html> |