OpenTelemetry integration for Gatling
Send load test metrics to OpenTelemetry.
Introduction
The OpenTelemetry integration allows Gatling Enterprise Edition to send load-test metrics - such as response times, throughput, and error rates - directly into OpenTelemetry. Once enabled, performance data from Gatling Enterprise Edition is sent to OpenTelemetry, where it can be correlated with infrastructure and application metrics already collected in OpenTelemetry.
With this integration in place, you can:
- Monitor Gatling scenarios alongside server-level KPIs (CPU, memory, network) in a single dashboard.
- Investigate performance issues more effectively by overlaying load-test metrics on traces, logs, and resource utilization charts.
Prerequisites
- A valid OpenTelemetry collector
- A Gatling Enterprise Edition account with private locations that can connect to the OpenTelemetry collector endpoints.
Install the OpenTelemetry integration
The OpenTelemetry integration requires installation steps on your private locations control plane.
In your control-plane configuration, in the section system-properties, add:
control-plane {
locations = [
{
system-properties {
"gatling.enterprise.opentelemetry.metrics.endpoint" = "<your endpoint for metrics>" # eg http://my-api-endpoint/v1/metrics
"gatling.enterprise.opentelemetry.logs.endpoint" = "<your endpoint for logs>" # optional (if undefined, run start and stop events won't be logged), eg http://my-api-endpoint/v1/log
"gatling.enterprise.opentelemetry.http.headers" = "<extra HTTP headers, eg Authorization>" # optional, eg api-key=key,other-config-value=value (values must be percent-encoded)
"gatling.enterprise.opentelemetry.metrics.deltaExponentialHistogramsSupported" = "true|false" # optional, default is false
}
}
]
}
Uninstall the OpenTelemetry integration
To remove the link between Gatling Enterprise Edition and OpenTelemetry, remove the lines containing gatling.enterprise.newrelic in your control-plane configuration.
Common parameters (both metrics and logs)
The “Instrumentation Scope Info” is io.gatling.enterprise.
All data use the same resource attributes:
run.id: the id of the test runservice.name: the “gatling.enterprise” stringteam.name: the name of the team the test belongs totest.name: the name of the test
Metrics
Gatling Enterprise Edition sends the following metrics in your OpenTelemetry account:
| Metrics | Type | Attributes |
|---|---|---|
| gatling_enterprise.user.start.count gatling_enterprise.user.end.count |
sum | load.generator scenario |
| gatling_enterprise.user.concurrent | gauge | load.generator scenario |
| gatling_enterprise.request.count | sum | load.generator scenario group request |
| gatling_enterprise.response.code.count | sum | load.generator scenario group request code |
| gatling_enterprise.response.count (*) |
sum | load.generator scenario group request status |
| gatling_enterprise.response.time.min gatling_enterprise.response.time.p95 gatling_enterprise.response.time.p99 gatling_enterprise.response.time.p999 gatling_enterprise.response.time.max (*) |
gauge | load.generator scenario group request status |
| gatling_enterprise.response.time (**) |
exponential histogram | load.generator scenario group request status |
| gatling_enterprise.bits.sent gatling_enterprise.bits.received |
sum | load.generator remote |
| gatling_enterprise.tcp.open.count gatling_enterprise.tcp.close.count |
sum | load.generator remote |
| gatling_enterprise.tcp.connect.count (*) |
sum | load.generator remote status |
| gatling_enterprise.tcp.connect.time.min gatling_enterprise.tcp.connect.time.p95 gatling_enterprise.tcp.connect.time.p99 gatling_enterprise.tcp.connect.time.p999 gatling_enterprise.tcp.connect.time.max (*) |
gauge | load.generator remote status |
| gatling_enterprise.tcp.connect.time (**) |
exponential histogram | load.generator remote status |
| gatling_enterprise.tls.handshake.count (*) |
sum | load.generator remote status |
| gatling_enterprise.tls.handshake.time.min gatling_enterprise.tls.handshake.time.p95 gatling_enterprise.tls.handshake.time.p99 gatling_enterprisetls.handshake.time.p999 gatling_enterprise.tls.handshake.time.max (*) |
gauge | load.generator remote status |
| gatling_enterprise.tls.handshake.time (**) |
exponential histogram | load.generator remote status |
(*) only when deltaExponentialHistogramsSupported is set to false (default)
(**) only when deltaExponentialHistogramsSupported is set to true
delta temporality for sums and histograms (when enabled).
Please check that your OpenTelemetry collector supports it.
For example, when using Prometheus, you must enable its experimental support.Logs
Gatling Enterprise Edition can log test start and end events.
- event name:
gatling.run.startorgatling.run.end - body:
startorend