菜单
开源 RSS

指标

指标衡量系统在测试条件下的表现。默认情况下,k6 会自动收集内置指标。除了内置指标,你还可以创建自定义指标。

指标分为四大类

  • 计数器 (Counters) 累加数值。
  • Gauges 跟踪最小值、最大值和最新值。
  • Rates 跟踪非零值发生的频率。
  • Trends 计算多个值的统计数据(如均值、众数或百分位数)。

要让测试在达到特定标准时失败,你可以基于指标标准编写一个阈值(具体表达式取决于指标类型)。要过滤指标,可以使用标签和组。你还可以将指标导出为各种汇总和详细格式,详见结果输出

本页内容…阅读以下内容…
内置指标每种支持协议的内置指标
创建自定义指标如何为每种指标类型构建自己的指标

应该关注哪些指标?

每个指标都提供了不同的性能视角。因此,最适合你分析的指标取决于你的目标。

但是,如果你不确定要关注哪些指标,可以从衡量请求、错误和持续时间的指标开始(这是RED 方法的标准)。

  • http_reqs,用于衡量请求
  • http_req_failed,用于衡量错误率
  • http_req_duration,用于衡量持续时间

注意

换句话说,这些指标衡量的是流量(请求数)、可用性(错误率)和延迟(请求持续时间)。SRE 可能会将这些指标视为四大黄金信号中的三个。

示例输出

运行测试时,所有内置和自定义指标的聚合摘要将输出到 stdout

JavaScript
import http from 'k6/http';

export default function () {
  http.get('https://quickpizza.grafana.com');
}

前面的脚本输出如下所示

bash
$ 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

在该输出中,所有以 httpiterationvu 开头的指标都是内置指标,它们会在测试结束时写入 stdout。有关所有指标的详细信息,请参阅指标参考

指标命名限制

指标名称必须符合 OpenTelemetry 和 Prometheus 限制。字符限制与 k6 在限制字符集之前的限制相同。

这意味着指标名称必须

  • 包含最多 128 个字符(ASCII 字母、数字或下划线)。
  • 以字母或下划线开头。