JMeter

Supported OS Linux Mac OS Windows

Overview

Datadog Backend Listener for Apache JMeter is an open source JMeter plugin used to send test results to the Datadog platform. It provides real-time reporting of test metrics like latency, the number of bytes sent and received, and more. You can also send to Datadog complete test results as log entries.

Setup

Installation

The Datadog Backend Listener plugin needs to be installed manually. See the latest release and more up-to-date installation instructions on its GitHub repository.

Manual installation

  1. Download the Datadog plugin JAR file from the release page
  2. Place the JAR in the lib/ext directory within your JMeter installation.
  3. Launch JMeter (or quit and re-open the application).

JMeter plugins Manager

  1. If not already configured, download the JMeter Plugins Manager JAR.
  2. Once you’ve completed the download, place the .jar in the lib/ext directory within your JMeter installation.
  3. Launch JMeter (or quit and re-open the application).
  4. Go to Options > Plugins Manager > Available Plugins.
  5. Search for “Datadog Backend Listener”.
  6. Click the checbox next to the Datadog Backend Listener plugin.
  7. Click “Apply Changes and Restart JMeter”.

Configuration

To start reporting metrics to Datadog:

  1. Right click on the thread group or the test plan for which you want to send metrics to Datadog.
  2. Go to Add > Listener > Backend Listener.
  3. Modify the Backend Listener Implementation and select org.datadog.jmeter.plugins.DatadogBackendClient from the drop-down.
  4. Set the apiKey variable to your Datadog API key.
  5. Run your test and validate that metrics have appeared in Datadog.

The plugin has the following configuration options:

NameRequiredDefault valuedescription
apiKeytrueNAYour Datadog API key.
datadogUrlfalsehttps://api.datadoghq.com/api/You can configure a different endpoint, for instance https://api.datadoghq.eu/api/ if your datadog instance is in the EU
logIntakeUrlfalsehttps://http-intake.logs.datadoghq.com/v1/input/You can configure a different endpoint, for instance https://http-intake.logs.datadoghq.eu/v1/input/ if your datadog instance is in the EU.
metricsMaxBatchSizefalse200Metrics are submitted every 10 seconds in batches of size metricsMaxBatchSize.
logsBatchSizefalse500Logs are submitted in batches of size logsBatchSize as soon as this size is reached.
sendResultsAsLogsfalsefalseBy default only metrics are reported to Datadog. To report individual test results as log events, set this field to true.
includeSubresultsfalsefalseA subresult is for instance when an individual HTTP request has to follow redirects. By default subresults are ignored.
excludeLogsResponseCodeRegexfalse""Setting sendResultsAsLogs will submit all results as logs to Datadog by default. This option lets you exclude results whose response code matches a given regex. For example, you may set this option to [123][0-5][0-9] to only submit errors.
samplersRegexfalse.*An optional regex to filter the samplers to monitor.
customTagsfalse""Comma-separated list of tags to add to every metric

Data Collected

Metrics

jmeter.responses_count
(count)
Count of the number of responses received by sampler and by status.
Shown as response
jmeter.latency.max
(gauge)
Maximum value of the latency.
Shown as second
jmeter.latency.min
(gauge)
Mininimum value of the latency.
Shown as second
jmeter.latency.p99
(gauge)
P99 value of the latency.
Shown as second
jmeter.latency.p95
(gauge)
P95 value of the latency.
Shown as second
jmeter.latency.p90
(gauge)
P90 value of the latency.
Shown as second
jmeter.latency.avg
(gauge)
Average value of the latency.
Shown as second
jmeter.latency.count
(gauge)
Number of samples used to compute the latency distribution.
Shown as request
jmeter.response_time.max
(gauge)
Maximum value of the response time.
Shown as second
jmeter.response_time.min
(gauge)
Minimum value of the response time.
Shown as second
jmeter.response_time.p99
(gauge)
P99 value of the response time.
Shown as second
jmeter.response_time.p95
(gauge)
P95 value of the response time.
Shown as second
jmeter.response_time.p90
(gauge)
P90 value of the response time.
Shown as second
jmeter.response_time.avg
(gauge)
Average value of the response time.
Shown as second
jmeter.response_time.count
(gauge)
Number of samples used to compute the response time distribution.
Shown as request
jmeter.byte_received.max
(gauge)
Maximum value of the number of bytes received.
Shown as byte
jmeter.byte_received.min
(gauge)
Minimum value of the number of bytes received.
Shown as byte
jmeter.byte_received.p99
(gauge)
P99 value of the number of bytes received.
Shown as byte
jmeter.byte_received.p95
(gauge)
P95 value of the number of bytes received.
Shown as byte
jmeter.byte_received.p90
(gauge)
P90 value of the number of bytes received.
Shown as byte
jmeter.byte_received.avg
(gauge)
Average value of the number of bytes received.
Shown as byte
jmeter.byte_received.count
(gauge)
Number of samples used to compute the bytes received distribution.
Shown as request
jmeter.byte_sent.max
(gauge)
Maximum value of the number of bytes sent.
Shown as byte
jmeter.byte_sent.min
(gauge)
Minimum value of the number of bytes sent.
Shown as byte
jmeter.byte_sent.p99
(gauge)
P99 value of the number of bytes sent.
Shown as byte
jmeter.byte_sent.p95
(gauge)
P95 value of the number of bytes sent.
Shown as byte
jmeter.byte_sent.p90
(gauge)
P90 value of the number of bytes sent.
Shown as byte
jmeter.byte_sent.avg
(gauge)
Average value of the number of bytes sent.
Shown as byte
jmeter.byte_sent.count
(gauge)
Number of samples used to compute the bytes sent distribution.
Shown as request

Service Checks

JMeter does not include any service checks.

Events

JMeter does not include any events.

Troubleshooting

Need help? Contact Datadog support.

Further Reading

Additional helpful documentation, links, and articles: