]>
Since JMeter 2.13 you can get realtime results sent to a backend through the
Backend Listener using potentially any backend (JDBC, JMS, Webservice...) implementing AbstractBackendListenerClient.
JMeter ships with a GraphiteBackendListenerClient which allows you to send metrics to a Graphite Backend.
This feature provides:
In this document we will present the configuration setup to be able to graph and historize the data in 3 different backends:
Threads metrics are the following:
Metric Name | Description |
---|---|
<rootMetricsPrefix>.cumulated.minActiveThreads | Min active threads |
<rootMetricsPrefix>.cumulated.maxActiveThreads | Max active threads |
<rootMetricsPrefix>.cumulated.meanActiveThreads | Mean active threads |
<rootMetricsPrefix>.cumulated.startedThreads | Started threads |
<rootMetricsPrefix>.cumulated.stoppedThreads | Finished threads |
Response times metrics are the following:
Metric Name | Description |
---|---|
<rootMetricsPrefix>.<samplerName>.success | Number of successful responses for sampler name |
<rootMetricsPrefix>.<samplerName>.failure | Number of failed responses for sampler name |
<rootMetricsPrefix>.<samplerName>.total | Total number of requests for sampler name |
<rootMetricsPrefix>.<samplerName>.min | Min response time for sampler name |
<rootMetricsPrefix>.<samplerName>.max | Max response time for sampler name |
<rootMetricsPrefix>.<samplerName>.percentile<percentileValue> | Percentile computed for successful responses of sampler name. You can input as many percentiles as you want (3 or 4 being a reasonable value). By default listener computes percentiles 90%, 95% and 99% |
By default JMeter sends only metrics for all samplers using "__cumulated__" as samplerName.
To make JMeter send metrics to backend add a BackendListener using the GraphiteBackendListenerClient.
InfluxDB is an open-source, distributed,time-series database that allows to
easily store metrics.
Installation and configuration is very easy, read this for more details InfluxDB documentation.
InfluxDB data can be easily viewed in a browser through either Influga or Grafana.
We will use Grafana in this case.
To enable Graphite listener in InfluxDB, edit files /opt/influxdb/shared/config.toml or /usr/local/etc/influxdb.conf, find "input_plugins.graphite" and set this:
# Configure the graphite api
[input_plugins.graphite]
enabled = true
address = "0.0.0.0" # If not set, is actually set to bind-address.
port = 2003
database = "jmeter" # store graphite data in this database
# udp_enabled = true # enable udp interface on the same port as the tcp interface
Connect to InfluxDB admin console and create 2 databases:
Installing grafana is just a matter of putting the unzipped bundle behind an Apache HTTP server.
Read documentation for more details.
Open config.js file and find datasources element, and edit it like this:
datasources: {
influxdb: {
type: 'influxdb',
url: "http://localhost:8086/db/jmeter",
username: 'root',
password: 'root',
},
grafana: {
type: 'influxdb',
url: "http://localhost:8086/db/grafana",
username: 'root',
password: 'root',
grafanaDB: true
},
},
Note that grafana has "grafanaDB:true". Also note that here we use root user for simplicity, it is better to dedicate a special user with less rights.
Here is the kind of dashboard that you could obtain:
TODO.
TODO.