You can also make k6 output detailed statistics in JSON format by using the --out/-o option for k6 run, like this:
The JSON file will contain lines like these:
Each line will either contain information about a metric, or log a data point (sample) for a metric. Lines consist of three items:
- type - can have the values Metric or Point where Metric means the line is declaring a metric, and Point is an actual data point (sample) for a metric.
- data - is a dictionary that contains lots of stuff, varying depending on the "type" above.
- metric - the name of the metric.
This line contains information about the nature of a metric. Here, "data" will contain the following:
- "type" - the metric type ("gauge", "rate", "counter" or "trend")
- "contains" - information on the type of data collected (can e.g. be "time" for timing metrics)
- "tainted" - has this metric caused a threshold to fail?
- "threshold" - are there any thresholds attached to this metric?
- "submetrics" - any derived metrics created as a result of adding a threshold using tags.
This line contains actual data samples. Here, "data" will contain these fields:
- "time" - timestamp when the sample was collected
- "value" - the actual data sample; time values are in milliseconds
- "tags" - dictionary with tagname-tagvalue pairs that can be used when filtering results data
You can quickly create filters to return a particular metric of the JSON file:
And calculate an aggregated value of any metric:
For more advanced cases, check out the jq Manual
New in v0.26.0
The --summary-export option of the k6 run command can export the end-of-test summary report to a JSON file that includes data for all test metrics, checks and thresholds.
This is useful to get the aggregated test results in a machine-readable format, for integration with dashboards, external alerts, etc.
The format of the summary is like: