| <!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="http://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="http://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="http://jmeter.apache.org/"><img class="logo" src="../images/logo.svg" alt="Apache JMeter"></a></div><div class="banner"><iframe src="http://www.apache.org/ads/bannerbar.html" style="border-width:0;" frameborder="0" scrolling="no"></iframe><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="http://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="../changes_history.html">Change History</a></li><li><a href="../api/index.html">Javadocs</a></li><li><a href="../building.html">Building JMeter and Add-Ons</a></li><li><a href="http://wiki.apache.org/jmeter">JMeter Wiki</a></li><li><a href="http://wiki.apache.org/jmeter/JMeterFAQ">FAQ (Wiki)</a></li></ul></li></ul><ul class="menu"><li onClick="return true"><div class="menu-title">Tutorials (PDF format)</div><ul><li><a href="../usermanual/jmeter_distributed_testing_step_by_step.pdf">Distributed Testing</a></li><li><a href="../usermanual/jmeter_proxy_step_by_step.pdf">Recording Tests</a></li><li><a href="../usermanual/junitsampler_tutorial.pdf">JUnit Sampler</a></li><li><a href="../usermanual/jmeter_accesslog_sampler_step_by_step.pdf">Access Log Sampler</a></li><li><a href="../extending/jmeter_tutorial.pdf">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="../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="http://wiki.apache.org/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="http://www.apache.org/">ASF</a></li><li><a href="http://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a></li><li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li><li><a href="http://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">16. 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">16.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 transaction percentage: <figure><a href="../images/screenshots/dashboard/report_apdex_and_summary.png"><img src="../images/screenshots/dashboard/report_apdex_and_summary.png" width="1658" height="650" 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="1376" height="433" 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>Zoomable chart where you can check/uncheck every transaction to show/hide it for: |
| <ul> |
| <li>Response times Over Time : <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>Bytes throughput Over Time : <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 : <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>Hits per second : <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 : <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 : <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 : <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 : <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 times percentiles : <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>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="1370" height="542" alt=""></a><figcaption></figcaption></figure></li> |
| <li>Times vs Threads : <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></li> |
| <li>Response Time Distribution : <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">16.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">16.2.1 Requirements<a class="sectionlink" href="#configuration_requirements" title="Link to here">¶</a></h2> |
| <p> |
| 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): |
| <pre class="source"> |
| jmeter.save.saveservice.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 |
| # 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> |
| <div class="clear"></div><div class="note"> |
| The input CSV file must include the timeStamp |
| </div><div class="clear"></div> |
| <div class="clear"></div><div class="note"> |
| The "<span class="code">Errors</span>" summary table shows more |
| accurate data if these settings are fulfilled: |
| <ul> |
| <li><pre class="source">jmeter.save.saveservice.assertion_results_failure_message = true</pre></li> |
| <li> |
| If you use a transaction controller, uncheck the box |
| <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> |
| </ul> |
| </div><div class="clear"></div> |
| </p> |
| </div> |
| |
| <div class="subsection"><h2 id="configuration_general">16.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. |
| Default: "Apache JMeter Dashboard" |
| </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. |
| 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). |
| 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). |
| Default: <span class="code">1500</span> |
| </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. |
| Format: Regular expression. |
| 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. 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. |
| Default: <span class="code">200000</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> |
| |
| <div class="subsection"><h2 id="configure_graph">16.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">16.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">16.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">16.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">16.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">16.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">16.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">16.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">16.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. |
| #jmeter.reportgenerator.overall_granularity=60000 |
| |
| Change this parameter if you want to change the granularity of Response time distribution |
| # Set to 500 ms by default |
| #jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=500 |
| |
| # 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">16.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">16.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">16.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="default_graphs">16.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>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>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="development">16.5 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><li class="gplus"><a data-social-url="https://plus.google.com/share?url=" title="Share on Google+"><i class="fa fa-google-plus" aria-hidden="true"></i>share</a></li></ul></div></div><div class="footer"><div class="copyright"> |
| Copyright © |
| 1999 – |
| 2016 |
| , 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(){ |
| // fill in the current location into social links on this page. |
| "use strict"; |
| 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> |