Next Practical Step
Add InfluxdbBackendListenerClient with a lab Influx URL, run a two-minute CLI test, and build one Grafana panel on active threads.
Stream live JMeter metrics to InfluxDB and Grafana with Backend Listener: Influx clients, Graphite, metric prefixes, cardinality tips, and CLI setup.
For long tests you need live visibility, not only a post-run HTML report. Since JMeter 2.13, the Backend Listener can send metrics to external backends. JMeter ships Graphite and InfluxDB clients; Grafana commonly visualizes InfluxDB or Graphite data. This guide summarizes the official Real-time results chapter and component reference fields so you can wire live dashboards without abandoning CLI + HTML dashboard artifacts.
Backend Listener is a Listener implementation that pushes metrics through a BackendListenerClient rather than only painting GUI graphs. Official clients include:
| Client | Introduced / notes |
|---|---|
| GraphiteBackendListenerClient | Graphite-compatible metrics; also used with InfluxDB Graphite input in some setups |
| InfluxdbBackendListenerClient | Since JMeter 3.2; direct Influx write, custom schema, annotations support |
| InfluxDBRawBackendListenerClient | Since JMeter 5.4; writes sample-oriented data (heavier) |
You can implement AbstractBackendListenerClient for other backends (JDBC, JMS, custom HTTP), as described in the real-time results overview.
The real-time results doc groups metrics such as:
test.minAT / test.maxAT / test.meanAT - active threadstest.startedT / test.endedT - started / finished threadsNames are prefixed by a configurable root metrics prefix.
Examples documented:
.ok.count - successful responses.h.count - hits per second (includes sub-results depending on Transaction Controller settings).ok.min / .ok.max - min/max successful response timesTransaction Controller note: for hit-rate style metrics, official text warns about parent sampler generation settings. Keep transaction usage consistent so Grafana panels mean what you think.
InfluxdbBackendListenerClient is the usual Influx path).From the component reference (verify against your JMeter version):
| Parameter | Role |
|---|---|
influxdbUrl | Write URL, e.g. http://influxHost:8086/write?db=jmeter |
influxdbToken | InfluxDB 2 token (since 5.2); example format in docs |
measurement | Line protocol measurement; default often jmeter |
application | Tag for separating apps/tests |
title / run title fields | Help distinguish runs in Grafana |
eventTags | Tags for Grafana annotations (events measurement) |
summaryOnly | When true, send fewer detail series (lighter) |
samplersRegex | Filter which sampler labels are sent |
percentiles | Which percentiles to export |
Exact property rows can evolve; copy from your JMeter UI or the versioned component reference on this site.
The real-time results chapter includes an InfluxDB v2 subsection (anchor influxdb_v2 in the manual). Use org/bucket style URLs and tokens as shown there and in the component reference cloud example for raw client:
https://.../api/v2/write?org=org-id&bucket=jmeter
Parameters include graphiteHost, graphitePort (default 2003; pickle sender notes for port 2004 in the reference). You can point at Graphite itself or an InfluxDB instance with Graphite input enabled, depending on your stack.
Since 5.4, raw client writes more granular sample data. Expect higher write volume and Influx load. Use when you need per-sample analysis in the TSDB; prefer the aggregated Influx client for large tests if summary metrics suffice.
Official docs mention Grafana dashboards and InfluxDB annotations. Typical flow:
jmeter measurement (or your measurement name).minAT/meanAT/maxAT), throughput, and response time percentiles.events measurement if you set eventTags / title fields.application and transaction tags to switch tests.Screenshot references appear in the component reference (grafana_dashboard.png). Community dashboards exist; always remap metric names to your prefix and JMeter version.
jmeter -n -t plan.jmx -l results.jtl \ -JinfluxHost=influx.internal \ -e -o report/Backend Listener configuration usually lives in the plan. You can still parameterize hosts with variables if you externalize URL pieces via \${__P} where the element allows.
Lean-run rules still apply (best practices):
samplersRegex / summaryOnly to reduce series.With remote testing:
Bad:
Good:
Login, Search, Checkout.High cardinality destroys Influx performance and Grafana usability.
| Symptom | Check |
|---|---|
| No data in Grafana | URL/token/db; network from injector; Backend Listener enabled |
| Partial series | samplersRegex too strict; summaryOnly |
| Influx OOM / heavy writes | Raw client at high RPS; reduce cardinality |
| Clock skew graphs | NTP on injectors and Influx |
| Auth errors Influx 2 | Token permissions for org/bucket |
A listener that sends metrics to external backends through a BackendListenerClient implementation instead of only showing GUI graphs.
For live dashboards during large tests, start with InfluxdbBackendListenerClient (since 3.2). Use InfluxDBRawBackendListenerClient (since 5.4) when you need raw sample writes and can afford the volume.
No. Keep -l results and -e -o HTML dashboards for offline analysis and artifacts. Backend Listener is for live monitoring.
Yes. GraphiteBackendListenerClient ships with JMeter. Grafana can also query Graphite datasources.
Check samplersRegex, whether those labels actually ran, and whether Transaction Controller parent/child settings change what is emitted.
InfluxdbBackendListenerClient can write events used as Grafana annotations; eventTags and title-related fields help tag runs. See the component reference and Grafana Influx annotation docs linked from the manual.