菜单
文档breadcrumb arrow Grafana k6breadcrumb arrow 使用 k6breadcrumb arrow 指标breadcrumb arrow 创建自定义指标
开源

创建自定义指标

除了内置指标之外,您还可以创建自定义指标。例如,您可以为您的业务逻辑计算一个指标,或者使用 Response.timings 对象为特定端点集创建指标。

每种指标类型都有一个构造函数来创建自定义指标。构造函数会创建一个声明类型的指标对象。每种类型都有一个 `add` 方法来采集指标测量值。

如果您在构建自定义指标时需要帮助,请阅读本文档的以下部分。它们详细介绍了该过程并提供了示例。如果您已经熟悉这些内容,您可能更愿意阅读每种指标构造函数的参考文档。每个主题都包含创建自定义指标并从中创建阈值的示例。

创建自定义指标

注意

自定义指标必须在init context 中创建。这限制了内存并确保 k6 可以验证所有阈值都在评估已定义的指标。

创建自定义指标的通用过程如下:

  1. 导入 k6/metrics 模块。您可以选择使用命名导入来指定要创建的指标类型。

    JavaScript
    import { Trend } from 'k6/metrics';
  2. 在 init context 中,构造一个新的自定义指标对象。

    例如,以下代码创建了一个自定义趋势。脚本中的对象名为 myTrend,其指标在结果输出中显示为 waiting_time

    JavaScript
    const myTrend = new Trend('waiting_time');
  3. 在 VU 迭代代码中,使用 add 方法进行测量。

示例:为等待时间创建一个趋势指标

此 VU 代码发出请求,然后将请求的时序值添加到 myTrend 对象。

JavaScript
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 会根据值的数量和它们的总和计算各种趋势。

bash
$ 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 包含定义每种自定义指标类型以及定义该指标阈值的示例。