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 run
  • service.name: the “gatling.enterprise” string
  • team.name: the name of the team the test belongs to
  • test.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

Logs

Gatling Enterprise Edition can log test start and end events.

  • event name: gatling.run.start or gatling.run.end
  • body: start or end

Edit this page on GitHub