---
title: "Backend Listener"
description: "Configure the JMeter Backend Listener listeners: properties, defaults, and practical usage notes for building reliable load tests."
url: https://docs.jmeter.ai/components/backend-listener/
lastUpdated: 2026-10-01
source: docs.jmeter.ai
---

# Backend Listener

*Part of the **Listeners** category. Also documented in context in the [full Component Reference](/user-manual/component-reference/#backend-listener).*

**TL;DR:** the Backend Listener streams live sample results to an external time-series backend (InfluxDB, Graphite, Elasticsearch, Prometheus via a bridge) during the run, so you can watch a real-time dashboard instead of waiting for the test to finish and parsing a `.jtl` file.

![Backend Listener](/images/screenshots/backend_listener.png)

The backend listener is an Asynchronous listener that enables you to plug custom implementations of [BackendListenerClient](https://jmeter.apache.org/api/org/apache/jmeter/visualizers/backend/BackendListenerClient.html).
By default, a Graphite implementation is provided.

| Name | Required | Description |
| --- | --- | --- |
| Name | Yes | Descriptive name for this element that is shown in the tree. |
| Backend Listener implementation | Yes | Class of the `BackendListenerClient` implementation. |
| Async Queue size | Yes | Size of the queue that holds the SampleResults while they are processed asynchronously. |
| Parameters | Yes | Parameters of the `BackendListenerClient` implementation. |

The following parameters apply to the [GraphiteBackendListenerClient](https://jmeter.apache.org/api/org/apache/jmeter/visualizers/backend/graphite/GraphiteBackendListenerClient.html) implementation:

| Name | Required | Description |
| --- | --- | --- |
| graphiteMetricsSender | Yes | `org.apache.jmeter.visualizers.backend.graphite.TextGraphiteMetricsSender` or `org.apache.jmeter.visualizers.backend.graphite.PickleGraphiteMetricsSender` |
| graphiteHost | Yes | Graphite or InfluxDB (with Graphite plugin enabled) server host |
| graphitePort | Yes | Graphite or InfluxDB (with Graphite plugin enabled) server port, defaults to `2003`. Note `PickleGraphiteMetricsSender` (port `2004`) can only talk to Graphite server. |
| rootMetricsPrefix | Yes | Prefix of metrics sent to backend. Defaults to “`jmeter`.”         Note that JMeter does not add a separator between the root prefix and the samplerName which is why the trailing dot is currently needed. |
| summaryOnly | Yes | Only send a summary with no detail. Defaults to `true`. |
| samplersList | Yes | Defines the names (labels) of sample results to be sent to the back end.         If `useRegexpForSamplersList=false` this is a list of semi-colon separated names.         If `useRegexpForSamplersList=true` this is a regular expression which will be matched against the names. |
| useRegexpForSamplersList | Yes | Consider samplersList as a regular expression to select the samplers for which you want to report metrics to backend. Defaults to `false`. |
| percentiles | Yes | The percentiles you want to send to the backend.         A percentile may contain a fractional part, for example `12.5`.         (The separator is always ”.”)         List must be semicolon separated. Generally 3 or 4 values should be sufficient. |

See also [Real-time results](/user-manual/realtime-results/) for more details.

![Grafana dashboard](/images/screenshots/grafana_dashboard.png)

*Grafana dashboard*

Since JMeter 3.2, an implementation that allows writing directly in InfluxDB with a custom schema.
It is called `InfluxdbBackendListenerClient`. The following parameters apply to the
[InfluxdbBackendListenerClient](https://jmeter.apache.org/api/org/apache/jmeter/visualizers/backend/influxdb/InfluxdbBackendListenerClient.html) implementation:

| Name | Required | Description |
| --- | --- | --- |
| influxdbMetricsSender | Yes | `org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender` |
| influxdbUrl | Yes | Influx URL (example: `http://influxHost:8086/write?db=jmeter`) |
| influxdbToken | No | InfluxDB 2 [authentication token](https://v2.docs.influxdata.com/v2.0/security/) (example: `HE9yIdAPzWJDspH_tCc2UvdKZpX==`); since 5.2. |
| application | Yes | Name of tested application. This value is stored in the ‘`events`’ measurement as a tag named ‘`application`’ |
| measurement | Yes | Measurement as per [Influx Line Protocol Reference](https://docs.influxdata.com/influxdb/v1.1/write_protocols/line_protocol_reference/). Defaults to “`jmeter`”. |
| summaryOnly | Yes | Only send a summary with no detail. Defaults to `true`. |
| samplersRegex | Yes | Regular expression which will be matched against the names of samples and sent to the back end. |
| testTitle | Yes | Test name. Defaults to `Test name`. This value is stored in the ‘`events`’ measurement as a field named ‘`text`’. JMeter generate automatically at the start and the end of the test an annotation with this value ending with ’ started’ and ’ ended’ |
| eventTags | No | Grafana allow to display tag for each annotation. You can fill them here. This value is stored in the ‘`events`’ measurement as a tag named ‘`tags`’. |
| percentiles | Yes | The percentiles you want to send to the backend.         A percentile may contain a fractional part, for example `12.5`         (The separator is always “`.`”).         List must be semicolon separated. Generally three or four values should be sufficient. |
| TAG_WhatEverYouWant | No | You can add as many custom tags as you want. For each of them, create a new line and prefix its name by “`TAG_`” |

See also [Real-time results](/user-manual/realtime-results/) and [Influxdb annotations in Grafana](http://docs.grafana.org/reference/annotations/#influxdb-annotations) for more details.
There is also a [subsection on configuring the listener for InfluxDB v2](/user-manual/realtime-results/#influxdb_v2).

Since JMeter 5.4, an implementation that writes all sample results to InfluxDB.
It is called `InfluxDBRawBackendListenerClient`.
It is worth noting that this will use more resources than the
`InfluxdbBackendListenerClient`, both by JMeter and InfluxDB
due to the increase in data and individual writes.
The following parameters apply to the
[InfluxDBRawBackendListenerClient](/../api/org/apache/jmeter/visualizers/backend/influxdb/InfluxDBRawBackendListenerClient/)
implementation:

| Name | Required | Description |
| --- | --- | --- |
| influxdbMetricsSender | Yes | `org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender` |
| influxdbUrl | Yes | Influx URL (e.g. [http://influxHost:8086/write?db=jmeter](http://influxHost:8086/write?db=jmeter) or, for the cloud, [https://eu-central-1-1.aws.cloud2.influxdata.com/api/v2/write?org=org-id&bucket=jmeter](https://eu-central-1-1.aws.cloud2.influxdata.com/api/v2/write?org=org-id&bucket=jmeter)) |
| influxdbToken | No | InfluxDB 2 [authentication token](https://v2.docs.influxdata.com/v2.0/security/) (e.g. HE9yIdAPzWJDspH_tCc2UvdKZpX==) |
| measurement | Yes | Measurement as per [Influx Line Protocol Reference](https://docs.influxdata.com/influxdb/v1.7/write_protocols/line_protocol_reference/).         Defaults to “`jmeter`.” |

^

### Common gotchas

- It runs **asynchronously in a queue** — under very high throughput, an undersized queue can drop metrics rather than block the test; increase `async.queue.size` if you see gaps in the dashboard that don’t match the actual run.
- This is the right tool for **live observability**; it doesn’t replace the standard `.jtl` results file or the HTML Dashboard Report for post-run analysis and archiving.
- Configuration (URL, database/bucket, application name tag) is backend-specific — see [Grafana / InfluxDB / Backend Listener](/topics/grafana-influx-backend-listener/) for a working setup.
- Adds CPU/network overhead on the injector itself; on already-saturated load generators, consider a lighter listener or sampling instead.

## Related

- [Grafana / InfluxDB / Backend Listener](/topics/grafana-influx-backend-listener/)
- [Coordinated Omission Calculator](/tools/coordinated-omission/)
- [Full Component Reference](/user-manual/component-reference/)
- [Functions and Variables](/user-manual/functions/)
