Skip to content

This is a k6 extension for publishing test-run metrics to Prometheus via Pushgateway.

License

Notifications You must be signed in to change notification settings

martymarron/xk6-output-prometheus-pushgateway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xk6-output-prometheus-pushgateway

This is a k6 extension for publishing test-run metrics to Prometheus via Pushgateway.
This extension is fully inspired by xk6-output-prometheus-remote.
There might be a circumstance not to enable the "Remote Write" feature on your Prometheus instance. In that case, the Pushgateway and this extension are possibly be an alternative solution.

Usage

% xk6 build --with github.com/martymarron/xk6-output-prometheus-pushgateway@latest
% K6_PUSHGATEWAY_URL=http://localhost:9091 \
K6_JOB_NAME=k6_load_testing \
./k6 run \
./script.js \
-o output-prometheus-pushgateway

Prometheus Labels

It is possible to add Prometheus labels with external JSON dictionary in js script

export const options = {
  ext: {
    "pushgateway": {
      app: "myapp",
      env: "myenv",
    }
  }
};

or with environment variables

K6_LABEL_APP=myapp K6_LABEL_ENV=myenv k6 run ...

It is possible to check Prometheus labels with debug output. It looks like

DEBU[0000] Pushgateway labels from JSON options.ext.pushgateway dictionary map[app:MYAPP env:MYENV url:MYURL]
DEBU[0000] Pushgateway labels map[app:MYAPP env:MYENV url:MYURL]

The 1st line is Prometheus labels from options.ext.pushgateway dictionary.

The 2nd line is the final set of labels after merging options.ext.pushgateway dictionary and environment variables.

Metrics prefix

It is possible to configure this output to expose the time series with a prefix.

Configure it with the following environment variable:

K6_PUSHGATEWAY_NAMESPACE=k6 k6 run ...