You can use Grafana for visualization of your k6 metrics.
The first step is to upload your test result metrics to a storage backend. And next, configure Grafana to fetch the data from your backend to visualize the test results.
Full installation instructions are available in the InfluxDB docs.
k6 has built-in support for outputting results data directly to an InfluxDB database using the --out (-o) switch:
The above command line makes k6 connect to a local influxdb instance, and send the results from the test to a database named myk6db. If this database does not exist, k6 will create it automatically.
Once you have k6 results in your InfluxDB database, you can then use Grafana to create results visualizations.
Full installation instructions are available in the Grafana docs.
After the installation, you should have an InfluxDB server running on localhost, listening on port 8086, and a Grafana server on http://localhost:3000. Now, we show two different ways to visualize your k6 metrics:
- Open http://localhost:3000 (or wherever your Grafana installation is located) in your browser.
- Create a data source:
- Now create a dashboard. Here is the newly created dashboard:
- Click Graph to create a new graph panel:
- Click the Panel title and then Edit to set up the graph panel:
- Set the panel data source to your myk6db database and click the SELECT mean(value)... statement to edit the metric:
You can find a list of Grafana dashboard configurations contributed by users, specifically for use with k6, at grafana.com.
To enable a contributed Grafana dashboard is simple: you just choose to "import" a dashboard in the Grafana UI and then specify the ID number of the dashboard you want, see http://docs.grafana.org/reference/export_import for more details.
To make all the above even simpler, we have created a docker-compose setup that will:
- Start a Docker container with InfluxDB
- Start a Docker container with Grafana
- Make available a k6 container that you can use to run load tests
Make sure you have at least docker-compose version v1.12.0 installed. You just need to do the following:
Now you should be able to connect to localhost on port 3000 with your browser and access the Grafana installation in the Docker container.
When uploading the k6 results to InfluxDB (k6 run --out influxdb=), you can configure other InfluxDB options passing these environment variables:
|K6_INFLUXDB_USERNAME||InfluxDB username, optional|
|K6_INFLUXDB_PASSWORD||InfluxDB user password|
|K6_INFLUXDB_INSECURE||If true, it will skip https certificate verification||false|
|K6_INFLUXDB_TAGS_AS_FIELDS||A comma-separated string to set k6 metrics as non-indexable fields (instead of tags). An optional type can be specified using :type as in vu:int will make the field integer. The possible field types are int, bool, float and string, which is the default. Example: vu:int,iter:int,url:string,event_time:int|
|K6_INFLUXDB_PUSH_INTERVAL||The flush's frequency of the k6 metrics.||1s|
|K6_INFLUXDB_CONCURRENT_WRITES||Number of concurrent requests for flushing data. It is useful to not block the process when a request takes more than the expected time (more than push interval).||4|