An opinionated StatsD client for Shopify Node.js servers and other StatsD utilities.
yarn add @shopify/statsd
Create a StatsD client with the following:
import {StatsDClient} from '@shopify/statsd';
const statsdClient = new StatsDClient({
host: 'some-statsd-host.com',
port: '8125',
prefix: 'AppName',
suffix: 'AppSuffix',
globalTags: {hello: 'world'},
});
Tracks the statistical distribution of a set of values across your infrastructure.
statsdClient.distribution(
'navigationComplete',
100, // in milliseconds
['navigation', 'complete', 'performance'], // user-defined tags to go with the data
);
Represents the timing stat
statsdClient.timing(
'request_duration',
100, // in milliseconds
[], // user-defined tags to go with the data
);
Represents the gauge stat
statsdClient.gauge(
'my_gauge',
123.45, // value
[], // user-defined tags to go with the data
);
Increments a stat by 1.
statsdClient.increment(
'myCounter',
['navigation', 'complete', 'performance'], // user-defined tags to go with the data
);
Increment can also be supplied a value to increment the metric by.
statsdClient.increment(
'myCounter',
['navigation', 'complete', 'performance'], // user-defined tags to go with the data,
{}, // additional options
4, // value to increment by
);
Close statsd client. This will ensure all stats are sent and stop statsd from doing anything more.
statsdClient.close();
Create a child client and add more context to the client. The globalTags will be merged. The prefix and suffix will be concatenated like in this example.
statsdClient.childClient({
prefix: '.NewPrefix',
suffix: '.NewSuffix',
globalTags: {foo: 'bar'},
});
In this example the prefix will be AppName.NewPrefix
, the suffix will be AppSuffix.NewSuffix
and the globalTags will be {hello: 'world', foo: 'bar'}
.