Trend
Trend is an object for representing a custom metric that allows for calculating different statistics on the added values (min, max, average or percentiles). It’s one of the four metric types.
| Parameter | Type | Description |
|---|---|---|
name | string | The name of the custom metric. |
isTime | boolean | A boolean indicating whether the values added to the metric are time values or just untyped values. |
| Method | Description |
|---|---|
| Trend.add(value, [tags]) | Add a value to the trend metric. |
Trend usage in Thresholds
When Trend is used in a
threshold expression, there are a range of variables that can be used.
avgfor averageminfor minimummaxfor maximummedfor medianp(N)for specific percentile.Nis a number between0.0and100.0meaning the percentile value to look at, e.g.p(99.99)means the 99.99th percentile.
The unit of these variables and functions are all in milliseconds.
Example threshold expressions:
p(95) < 400// 95% of requests must finish below 400msp(99) < 1000// 99% of requests must finish within 1s.p(50) < 200// half of requests must finish within 200ms.max < 3000// the slowest request must finish within 3s.
⚠️ Don’t use
minandmaxin thresholdsWe don’t recommend using
minandmaxfor specifying thresholds because these values represent outliers. Use percentiles instead.
Examples
import { Trend } from 'k6/metrics';
const myTrend = new Trend('my_trend');
export default function () {
myTrend.add(1);
myTrend.add(2, { tag1: 'value', tag2: 'value2' });
}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);
}

