JSON
您可以使用 JSON 格式输出详细的数据点。为此,请使用带有 --out 标志的 k6 run 命令,并将 JSON 文件的路径作为标志参数传递。
k6 run --out json=test_results.json script.jsdocker 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 压缩结果,像这样
k6 run --out json=test_results.gz script.jsdocker 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 等命令
tail -f test_results.jsonJSON 格式
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- 可以有 Metric 或 Point 值,其中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 文件中的特定指标
jq '. | select(.type=="Point" and .metric == "http_req_duration" and .data.tags.status >= "200")' myscript-output.json并计算任何指标的聚合值
jq '. | select(.type=="Point" and .metric == "http_req_duration" and .data.tags.status >= "200") | .data.value' myscript-output.json | jq -s 'add/length'jq '. | select(.type=="Point" and .metric == "http_req_duration" and .data.tags.status >= "200") | .data.value' myscript-output.json | jq -s minjq '. | 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/) 测试结束摘要文档中的主题。


