Menu
Choose a product
Viewing: v1.7.x (latest)
Find another version
Scroll for more
Open source
Counter
Counter is an object for representing a custom cumulative counter metric. It’s one of the four metric types.
| Parameter | Type | Description |
|---|---|---|
name | string | The name of the custom metric. |
| Method | Description |
|---|---|
| Counter.add(value, [tags]) | Add a value to the counter metric. |
Counter usage in Thresholds
When Counter is used in a threshold expression, the variable must be called count or rate (lower case).
For example:
count >= 200// value of the counter must be larger or equal to 200count < 10// less than 10.
Examples
JavaScript
JavaScript
import { Counter } from 'k6/metrics';
const myCounter = new Counter('my_counter');
export default function () {
myCounter.add(1);
myCounter.add(2, { tag1: 'myValue', tag2: 'myValue2' });
}JavaScript
JavaScript
import http from 'k6/http';
import { Counter } from 'k6/metrics';
const CounterErrors = new Counter('Errors');
export const options = { thresholds: { Errors: ['count<100'] } };
export default function () {
const res = http.get('https://quickpizza.grafana.com/api/json?name=Bert');
const contentOK = res.json('name') === 'Bert';
CounterErrors.add(!contentOK);
}JavaScript
JavaScript
import { Counter } from 'k6/metrics';
import { sleep } from 'k6';
import http from 'k6/http';
const allErrors = new Counter('error_counter');
export const options = {
vus: 1,
duration: '1m',
thresholds: {
'error_counter': [
'count < 10', // 10 or fewer total errors are tolerated
],
'error_counter{errorType:authError}': [
// Threshold on a sub-metric (tagged values)
'count <= 2', // max 2 authentication errors are tolerated
],
},
};
export default function () {
const auth_resp = http.post('https://quickpizza.grafana.com/api/users/token/login', {
username: 'default',
password: 'supersecure',
});
if (auth_resp.status >= 400) {
allErrors.add(1, { errorType: 'authError' }); // tagged value creates submetric (useful for making thresholds specific)
}
const other_resp = http.get('https://quickpizza.grafana.com/api/json');
if (other_resp.status >= 400) {
allErrors.add(1); // untagged value
}
sleep(1);
}Was this page helpful?
Related resources from Grafana Labs
Additional helpful documentation, links, and articles:
Video

Performance testing and observability in Grafana Cloud
Optimize user experiences with Grafana Cloud. Learn real-time insights, performance testing with k6, and continuous validation with Synthetic Monitoring.
Events

User-centered observability: load testing, real user monitoring, and synthetics
Learn how to use load testing, synthetic monitoring, and real user monitoring (RUM) to understand end users' experience of your apps. Watch on demand.