菜单
开源 RSS

Trend

Trend 是一个用于表示自定义指标的对象,可以计算添加值的不同统计数据(最小值、最大值、平均值或百分位数)。它是四种自定义指标之一。

参数类型描述
namestring自定义指标的名称。
isTimeboolean一个布尔值,指示添加到指标的值是时间值还是仅为无类型值。
方法描述
Trend.add(value, [tags])向趋势指标添加一个值。

阈值中的趋势用法

Trend阈值表达式中使用时,可以使用一系列变量。

  • avg 表示平均值
  • min 表示最小值
  • max 表示最大值
  • med 表示中位数
  • p(N) 表示特定百分位数。N 是介于 0.0100.0 之间的数字,表示要查看的百分位数,例如 p(99.99) 表示 99.99 百分位数。

这些变量和函数的单位都以毫秒为单位。

阈值表达式示例

  • p(95) < 400 // 95% 的请求必须在 400 毫秒内完成
  • p(99) < 1000 // 99% 的请求必须在 1 秒内完成。
  • p(50) < 200 // 一半的请求必须在 200 毫秒内完成。
  • max < 3000 // 最慢的请求必须在 3 秒内完成。

⚠️ 不要将 minmax 用于阈值

我们不建议使用 minmax 来指定阈值,因为这些值代表了异常值。请改用百分位数。

示例

JavaScript
import { Trend } from 'k6/metrics';

const myTrend = new Trend('my_trend');

export default function () {
  myTrend.add(1);
  myTrend.add(2, { tag1: 'value', tag2: 'value2' });
}
JavaScript
import { Trend } from 'k6/metrics';
import { sleep } from 'k6';
import http from 'k6/http';

const serverWaitingTimeOnLogin = new Trend('serverWaitingTimeOnLogin', true);

export const options = {
  vus: 1,
  duration: '1m',
  thresholds: {
    serverWaitingTimeOnLogin: ['p(95) < 200'],
  },
};

export default function () {
  const resp = http.post('https://quickpizza.grafana.com/api/users/token/login', {
    username: 'default',
    password: 'supersecure',
  });

  serverWaitingTimeOnLogin.add(resp.timings.waiting);
  sleep(1);
}