菜单
开源

JSON

您可以使用 JSON 格式输出详细的数据点。为此,请使用带有 --out 标志的 k6 run 命令,并将 JSON 文件的路径作为标志参数传递。

bash
k6 run --out json=test_results.json script.js
docker
docker run -it --rm \
    -v <scriptdir>:/scripts \
    -v <outputdir>:/jsonoutput \
    grafana/k6 run --out json=/jsonoutput/my_test_result.json /scripts/script.js

# Note that the docker user must have permission to write to <outputdir>!

或者如果您想获取 gzip 压缩结果,像这样

bash
k6 run --out json=test_results.gz script.js
docker
docker run -it --rm \
    -v <scriptdir>:/scripts \
    -v <outputdir>:/jsonoutput \
    grafana/k6 run --out json=/jsonoutput/my_test_result.gz /scripts/script.js

# Note that the docker user must have permission to write to <outputdir>!

要实时检查输出,您可以在保存的文件上使用 tail -f 等命令

bash
tail -f test_results.json

JSON 格式

JSON 输出按行格式如下

json
{"type":"Metric","data":{"type":"gauge","contains":"default","tainted":null,"thresholds":[],"submetrics":null},"metric":"vus"}
{"type":"Point","data":{"time":"2017-05-09T14:34:45.625742514+02:00","value":5,"tags":null},"metric":"vus"}
{"type":"Metric","data":{"type":"trend","contains":"time","tainted":null,"thresholds":["avg<1000"],"submetrics":null},"metric":"http_req_duration"}
{"type":"Point","data":{"time":"2017-05-09T14:34:45.239531499+02:00","value":459.865729,"tags":{"group":"::my group::json","method":"GET","status":"200","url":"https://quickpizza.grafana.com/api/tools"}},"metric":"http_req_duration"}

每行包含一个指标的信息,或记录该指标的数据点(样本)。每行由三项组成

  • type - 可以有 MetricPoint 值,其中 Metric 表示该行声明一个指标,而 Point 是一个指标的实际数据点(样本)。
  • data - 是一个字典,包含许多内容,具体取决于上面的 "type"
  • metric - 指标名称。

Metric

该行包含指标的元数据。在这里,"data" 包含以下内容

  • "type" - 指标类型(“gauge”、“rate”、“counter”或“trend”)
  • "contains" - 收集的数据类型信息(例如,计时指标可以为“time”)
  • "tainted" - 此指标是否导致阈值失败?
  • "threshold" - 此指标是否附加了任何阈值?
  • "submetrics" - 通过使用标签添加阈值而产生的任何派生指标。

Point

该行包含实际数据样本。在这里,"data" 包含以下字段

  • "time" - 收集样本时的时间戳
  • "value" - 实际数据样本;时间值以毫秒为单位
  • "tags" - 带有标签名-标签值对的字典,可用于过滤结果数据

处理 JSON 输出

您可以使用 jq 来处理 k6 JSON 输出。

您可以快速创建 过滤器 来返回 JSON 文件中的特定指标

bash
jq '. | select(.type=="Point" and .metric == "http_req_duration" and .data.tags.status >= "200")' myscript-output.json

并计算任何指标的聚合值

bash
jq '. | select(.type=="Point" and .metric == "http_req_duration" and .data.tags.status >= "200") | .data.value' myscript-output.json | jq -s 'add/length'
bash
jq '. | select(.type=="Point" and .metric == "http_req_duration" and .data.tags.status >= "200") | .data.value' myscript-output.json | jq -s min
bash
jq '. | select(.type=="Point" and .metric == "http_req_duration" and .data.tags.status >= "200") | .data.value' myscript-output.json | jq -s max

对于更高级的用例,请查阅 jq 手册

摘要导出

如果您只想查看聚合数据,可以将测试结束摘要导出到 JSON 文件。有关更多详细信息,请参阅[`handleSummary()`](/docs/k6/latest/results-output/end-of-test/) 测试结束摘要文档中的主题。

了解更多