k6 REST API
k6 启动时会启动一个 HTTP 服务器,其中包含一个 REST API,可用于控制测试执行的一些参数。默认情况下,该服务器侦听 localhost:6565
,但这可以通过 --address
CLI 标志进行修改。
通过此 API,您可以查看和控制不同的执行方面,例如 VU 数量、最大 VU 数、暂停或恢复测试、列出组、设置和获取 setup 数据等等。
您还可以在这篇博客文章中找到实际的使用示例。
获取状态
GET https://:6565/v1/status
curl -X GET \
https://:6565/v1/status \
-H 'Content-Type: application/json'
{
"data": {
"attributes": {
"paused": false,
"running": true,
"tainted": false,
"vus": 1
},
"id": "default",
"type": "status"
}
}
更新状态
PATCH https://:6565/v1/status
curl -X PATCH \
https://:6565/v1/status \
-H 'Content-Type: application/json' \
-d '{
"data": {
"attributes": {
"paused": true,
"vus": 1,
},
"id": "default",
"type": "status"
}
}'
{
"data": {
"type": "status",
"id": "default",
"attributes": {
"paused": true,
"vus": 1,
"running": true,
"tainted": false
}
}
}
此端点允许您暂停/恢复正在运行的测试并在测试期间设置 vus
和 vus-max
的数量。
列出指标
GET https://:6565/v1/metrics
curl -X GET \
https://:6565/v1/metrics \
-H 'Content-Type: application/json'
{
"data": [
{
"type": "metrics",
"id": "http_req_duration",
"attributes": {
"type": "trend",
"contains": "time",
"tainted": null,
"sample": {
"avg": 122.529465,
"max": 179.098624,
"med": 115.83006,
"min": 107.743524,
"p(90)": 136.9331272,
"p(95)": 158.01587559999996
}
}
},
{
"type": "metrics",
"id": "http_req_connecting",
"attributes": {
"type": "trend",
"contains": "time",
"tainted": null,
"sample": {
"avg": 11.2357072,
"max": 112.357072,
"med": 0,
"min": 0,
"p(90)": 11.235707199999961,
"p(95)": 61.796389599999884
}
}
},
{
"type": "metrics",
"id": "http_req_sending",
"attributes": {
"type": "trend",
"contains": "time",
"tainted": null,
"sample": {
"avg": 0.027994200000000004,
"max": 0.106594,
"med": 0.0192965,
"min": 0.017486,
"p(90)": 0.03165189999999997,
"p(95)": 0.0691229499999999
}
}
},
{
"type": "metrics",
"id": "http_req_waiting",
"attributes": {
"type": "trend",
"contains": "time",
"tainted": null,
"sample": {
"avg": 122.33937080000001,
"max": 179.021285,
"med": 115.74006299999999,
"min": 107.650352,
"p(90)": 136.8561833,
"p(95)": 157.93873414999996
}
}
},
{
"type": "metrics",
"id": "data_received",
"attributes": {
"type": "counter",
"contains": "data",
"tainted": null,
"sample": {
"count": 13830,
"rate": 1119.9222882571698
}
}
},
{
"type": "metrics",
"id": "http_req_blocked",
"attributes": {
"type": "trend",
"contains": "time",
"tainted": null,
"sample": {
"avg": 11.364957999999998,
"max": 113.611988,
"med": 0.004173,
"min": 0.003867,
"p(90)": 11.365557499999959,
"p(95)": 62.48877274999988
}
}
},
{
"type": "metrics",
"id": "http_req_receiving",
"attributes": {
"type": "trend",
"contains": "time",
"tainted": null,
"sample": {
"avg": 0.16209999999999997,
"max": 0.757392,
"med": 0.078622,
"min": 0.057306,
"p(90)": 0.2315264999999998,
"p(95)": 0.4944592499999994
}
}
},
{
"type": "metrics",
"id": "http_reqs",
"attributes": {
"type": "counter",
"contains": "default",
"tainted": null,
"sample": {
"count": 10,
"rate": 0.8097775041628127
}
}
},
{
"type": "metrics",
"id": "http_req_tls_handshaking",
"attributes": {
"type": "trend",
"contains": "time",
"tainted": null,
"sample": {
"avg": 0,
"max": 0,
"med": 0,
"min": 0,
"p(90)": 0,
"p(95)": 0
}
}
},
{
"type": "metrics",
"id": "data_sent",
"attributes": {
"type": "counter",
"contains": "data",
"tainted": null,
"sample": {
"count": 860,
"rate": 69.64086535800189
}
}
},
{
"type": "metrics",
"id": "iteration_duration",
"attributes": {
"type": "trend",
"contains": "time",
"tainted": null,
"sample": {
"avg": 1134.89821,
"max": 1238.377413,
"med": 1118.223518,
"min": 1108.405498,
"p(90)": 1185.348477,
"p(95)": 1211.8629449999999
}
}
},
{
"type": "metrics",
"id": "iterations",
"attributes": {
"type": "counter",
"contains": "default",
"tainted": null,
"sample": {
"count": 10,
"rate": 0.8097775041628127
}
}
},
{
"type": "metrics",
"id": "vus",
"attributes": {
"type": "gauge",
"contains": "default",
"tainted": null,
"sample": {
"value": 1
}
}
}
]
}
此端点将为您提供当前时间的所有指标。您可以在指标中查看所有可用指标的更多详细信息以及如何创建新指标。
获取指标
GET https://:6565/v1/metrics/id
curl -X GET \
https://:6565/v1/metrics/http_req_receiving \
-H 'Content-Type: application/json'
{
"data": {
"attributes": {
"contains": "time",
"sample": {
"avg": 0.12641856097560983,
"max": 1.1397,
"med": 0.074412,
"min": 0.057858,
"p(90)": 0.208553,
"p(95)": 0.218015
},
"tainted": null,
"type": "trend"
},
"id": "http_req_receiving",
"type": "metrics"
}
}
此端点将为您提供当前时间给定指标的详细信息。
您可以在指标中查看所有可用指标的更多详细信息以及如何创建新指标。
列出组
GET https://:6565/v1/groups
curl -X GET \
https://:6565/v1/groups \
-H 'Content-Type: application/json'
{
"data": [
{
"type": "groups",
"id": "d41d8cd98f00b204e9800998ecf8427e",
"attributes": {
"path": "",
"name": "",
"checks": null
},
"relationships": {
"groups": {
"data": [
{
"type": "groups",
"id": "b0470a9324a4ae563b04e9ac49fbc9cf"
}
]
},
"parent": {
"data": null
}
}
},
{
"type": "groups",
"id": "b0470a9324a4ae563b04e9ac49fbc9cf",
"attributes": {
"path": "::visit homepage",
"name": "visit homepage",
"checks": null
},
"relationships": {
"groups": {
"data": []
},
"parent": {
"data": {
"type": "groups",
"id": "d41d8cd98f00b204e9800998ecf8427e"
}
}
}
}
]
}
此端点返回测试中所有可用的组。
有关如何创建组的更多详细信息,请访问标签和组。
获取组
GET https://:6565/v1/groups/id
curl -X GET \
https://:6565/v1/groups/b0470a9324a4ae563b04e9ac49fbc9cf \
-H 'Content-Type: application/json'
{
"data": {
"type": "groups",
"id": "b0470a9324a4ae563b04e9ac49fbc9cf",
"attributes": {
"path": "::visit homepage",
"name": "visit homepage",
"checks": null
},
"relationships": {
"groups": {
"data": []
},
"parent": {
"data": {
"type": "groups",
"id": "d41d8cd98f00b204e9800998ecf8427e"
}
}
}
}
}
此端点返回具有给定 ID 的组。
有关如何创建组的更多详细信息,请访问标签和组。
获取 Setup 数据
GET https://:6565/v1/setup
curl -X GET \
https://:6565/v1/setup \
-H 'Content-Type: application/json'
{
"data": {
"type": "setupData",
"id": "default",
"attributes": {
"data": {
"a": 1
}
}
}
}
此端点返回当前 JSON 编码的 setup 数据。
有关 setup 阶段的更多详细信息,请访问测试生命周期。
运行 Setup
PUT https://:6565/v1/setup
curl -X POST \
https://:6565/v1/setup \
-H 'Content-Type: application/json'
{
"data": {
"type": "setupData",
"id": "default",
"attributes": {
"data": {
"a": 1
}
}
}
}
此端点执行 Setup 阶段并返回结果。
有关 setup 阶段的更多详细信息,请访问测试生命周期。
更新 Setup
PUT https://:6565/v1/setup
curl -X PUT \
https://:6565/v1/setup \
-H 'Content-Type: application/json' \
-d '{
"data": {
"attributes": {
"data": {
"a": 1,
"b": 2
}
},
"id": "default",
"type": "setupData"
}
}'
{
"data": {
"type": "setupData",
"id": "default",
"attributes": {
"data": {
"a": 1,
"b": 2
}
}
}
}
此端点解析 JSON 请求体并将结果设置为 Setup 数据。
有关 setup 阶段的更多详细信息,请访问测试生命周期。
停止测试
PATCH https://:6565/v1/status
curl -X PATCH \
https://:6565/v1/status \
-H 'Content-Type: application/json' \
-d '{
"data": {
"type": "status",
"id": "default",
"attributes": {
"stopped": true
}
}
}'
{
"data": {
"type": "status",
"id": "default",
"attributes": {
"stopped": true
}
}
}
此调用解析 JSON 请求体以更新状态并停止正在运行的测试。