Open source


With the Dynatrace k6 extension, you can send visualize and correlate performance testing metrics with the other metrics that you monitor in Dynatrace.

Build the k6 version

To build a k6 binary with the extension, first, make sure you have Go and Git installed on your machine.

Then, open your terminal and run the following commands:

# Install xk6
go install

# Build the k6 binary
xk6 build --with

... [INFO] Build environment ready
... [INFO] Building k6
... [INFO] Build complete: ./k6

xk6 will create the new k6 binary in the local folder.


To learn more about how to build custom k6 versions, check out xk6.

Run the test

Create a Dynatrace API token to send the data.


The Dynatrace API Token must have the scope name “metrics.ingest” (scope type API v2).

You can use the Dynatrace UI:

Dynatrace API token

Or a curl command (replace <environment-id> and the Api-Token):

curl -X POST "https://<environment-id>" -H "accept: application/json; charset=utf-8" -H "Content-Type: application/json; charset=utf-8" -d "{\"name\":\"\",\"scopes\":[\"metrics.ingest\"]}" -H "Authorization: Api-Token XXXXXXXX"

Use the previously built k6 binary and run the test passing the Dynatrace URL and API token as follows:

# export dynatrace variables
export K6_DYNATRACE_URL=https://<environmentid>
export K6_DYNATRACE_APITOKEN=<Dynatrace API token>

# run the test
./k6 run script.js -o output-dynatrace

Check the metrics in your Dynatrace environment, filtering for k6:

Dynatrace Test result

Dynatrace Test result


When streaming the k6 results to Dynatrace, you can configure the following Dynatrace options:

K6_DYNATRACE_APITOKENDynatrace API token to write the metrics. The token must have the scope metrics.ingest API v2.
K6_DYNATRACE_FLUSH_PERIODDefine how often metrics are sent to Dynatrace. The default value is 1 second.
K6_DYNATRACE_URLDynatrace URL. The default value is
K6_DYNATRACE_INSECURE_SKIP_TLS_VERIFYIf true, the HTTP client skips TLS verification on the endpoint. The default value is true.
K6_DYNATRACE_HEADER_<here-the-header-key>Additional headers to include in the HTTP requests. K6_DYNATRACE_HEADER_COOL_HEADER="cool value of the header"