创建自定义指标
除了内置指标之外,您还可以创建自定义指标。例如,您可以为您的业务逻辑计算一个指标,或者使用 Response.timings 对象为特定端点集创建指标。
每种指标类型都有一个构造函数来创建自定义指标。构造函数会创建一个声明类型的指标对象。每种类型都有一个 `add` 方法来采集指标测量值。
如果您在构建自定义指标时需要帮助,请阅读本文档的以下部分。它们详细介绍了该过程并提供了示例。如果您已经熟悉这些内容,您可能更愿意阅读每种指标构造函数的参考文档。每个主题都包含创建自定义指标并从中创建阈值的示例。
创建自定义指标
注意
自定义指标必须在init context 中创建。这限制了内存并确保 k6 可以验证所有阈值都在评估已定义的指标。
创建自定义指标的通用过程如下:
导入
k6/metrics
模块。您可以选择使用命名导入来指定要创建的指标类型。import { Trend } from 'k6/metrics';
在 init context 中,构造一个新的自定义指标对象。
例如,以下代码创建了一个自定义趋势。脚本中的对象名为
myTrend
,其指标在结果输出中显示为waiting_time
。const myTrend = new Trend('waiting_time');
在 VU 迭代代码中,使用
add
方法进行测量。
示例:为等待时间创建一个趋势指标
此 VU 代码发出请求,然后将请求的时序值添加到 myTrend
对象。
import http from 'k6/http';
import { Trend } from 'k6/metrics';
const myTrend = new Trend('waiting_time');
export default function () {
const r = http.get('https://quickpizza.grafana.com/');
myTrend.add(r.timings.waiting);
console.log(myTrend.name); // waiting_time
}
查看自定义指标结果
自定义指标会出现在结果输出中,包括测试结束摘要和详细数据点。每种指标类型都有特定的聚合方法。您还可以选择为自定义指标的任何值添加标签。您可以使用这些标签来过滤测试结果。
以下是上述脚本在测试结束摘要中的输出示例。由于指标是趋势,k6 会根据值的数量和它们的总和计算各种趋势。
$ k6 run script.js
...
INFO[0001] waiting_time source=console
...
iteration_duration.............: avg=1.15s min=1.15s med=1.15s max=1.15s p(90)=1.15s p(95)=1.15s
iterations.....................: 1 0.864973/s
waiting_time...................: avg=265.245396 min=265.245396 med=265.245396 max=265.245396 p(90)=265.245396 p(95)=265.245396
注意
自定义指标仅在 VU 迭代结束时从 VU 线程收集。对于长时间运行的脚本,自定义指标可能仅在测试运行一段时间后才出现。
了解更多
k6/metrics
包含定义每种自定义指标类型以及定义该指标阈值的示例。