指标
指标衡量系统在测试条件下的表现。默认情况下,k6 会自动收集内置指标。除了内置指标,你还可以创建自定义指标。
指标分为四大类
- 计数器 (Counters) 累加数值。
- Gauges 跟踪最小值、最大值和最新值。
- Rates 跟踪非零值发生的频率。
- Trends 计算多个值的统计数据(如均值、众数或百分位数)。
要让测试在达到特定标准时失败,你可以基于指标标准编写一个阈值(具体表达式取决于指标类型)。要过滤指标,可以使用标签和组。你还可以将指标导出为各种汇总和详细格式,详见结果输出。
本页内容… | 阅读以下内容… |
---|---|
内置指标 | 每种支持协议的内置指标 |
创建自定义指标 | 如何为每种指标类型构建自己的指标 |
应该关注哪些指标?
每个指标都提供了不同的性能视角。因此,最适合你分析的指标取决于你的目标。
但是,如果你不确定要关注哪些指标,可以从衡量请求、错误和持续时间的指标开始(这是RED 方法的标准)。
http_reqs
,用于衡量请求http_req_failed
,用于衡量错误率http_req_duration
,用于衡量持续时间
注意
换句话说,这些指标衡量的是流量(请求数)、可用性(错误率)和延迟(请求持续时间)。SRE 可能会将这些指标视为四大黄金信号中的三个。
示例输出
运行测试时,所有内置和自定义指标的聚合摘要将输出到 stdout
import http from 'k6/http';
export default function () {
http.get('https://quickpizza.grafana.com');
}
前面的脚本输出如下所示
$ k6 run script.js
/\ Grafana /‾‾/
/\ / \ |\ __ / /
/ \/ \ | |/ / / ‾‾\
/ \ | ( | (‾) |
/ __________ \ |_|\_\ \_____/
execution: local
script: http_get.js
output: -
scenarios: (100.00%) 1 scenario, 1 max VUs, 10m30s max duration (incl. graceful stop):
* default: 1 iterations for each of 1 VUs (maxDuration: 10m0s, gracefulStop: 30s)
█ TOTAL RESULTS
HTTP
http_req_duration.......................................................: avg=117.55ms min=117.55ms med=117.55ms max=117.55ms p(90)=117.55ms p(95)=117.55ms
{ expected_response:true }............................................: avg=117.55ms min=117.55ms med=117.55ms max=117.55ms p(90)=117.55ms p(95)=117.55ms
http_req_failed.........................................................: 0.00% 0 out of 1
http_reqs...............................................................: 1 2.768749/s
EXECUTION
iteration_duration......................................................: avg=361.09ms min=361.09ms med=361.09ms max=361.09ms p(90)=361.09ms p(95)=361.09ms
iterations..............................................................: 1 2.768749/s
NETWORK
data_received...........................................................: 6.8 kB 19 kB/s
data_sent...............................................................: 541 B 1.5 kB/s
running (00m03.8s), 0/1 VUs, 1 complete and 0 interrupted iterations
default ✓ [======================================] 1 VUs 00m03.8s/10m0s 1/1 iters, 1 per VU
在该输出中,所有以 http
、iteration
和 vu
开头的指标都是内置指标,它们会在测试结束时写入 stdout。有关所有指标的详细信息,请参阅指标参考。
指标命名限制
指标名称必须符合 OpenTelemetry 和 Prometheus 限制。字符限制与 k6 在限制字符集之前的限制相同。
这意味着指标名称必须
- 包含最多 128 个字符(ASCII 字母、数字或下划线)。
- 以字母或下划线开头。