@mvf/metrics v1.4.4
MVF Metrics
Usage
Provides a consistent way to log metrics in javascript applications.
To install the package
Run npm install @mvf/metrics
Configuration
Set the following environment variables in your project
DATADOG_HOSTorDATADOG_HOST_ENVVARif the datadog host is stored in another environment variable, for example, if datadog host is assigned toHOSTenv variable then you can setDATADOG_HOST_ENVVAR=HOSTwhich will then load datadog host fromHOSTenvironment variable.DATADOG_PORTor defaults to8125if not set.DATADOG_MOCKshould be set to true in development and testing environments. This will setup hot-shot Client in a mock mode.DATADOG_PROJECT_NAMEDATADOG_SERVICE_NAME
More on DATADOG_PROJECT_NAME
This is the system name of your project, e.g. abbey, mercury, leads, etc. DATADOG_PROJECT_NAME is used as the default prefix of your metric name, for example if DATADOG_PROJECT_NAME is set to
DATADOG_PROJECT_NAME=abbeyin your environment and you run
histogram('my.metric', 5);or any other metric function then the full metric name sent to datadog will be abbey.my.metric.
More on DATADOG_SERVICE_NAME
This is the type of service in your project, e.g. web, api, cron, consumer, worker, etc. DATADOG_SERVICE_NAME is attached to every metric as a tag and should be used to group metrics by the type of service, for example if DATADOG_SERVICE_NAME is set to
DATADOG_SERVICE_NAME=cronin your environment and you run
histogram('my.metric', 5);or any other metric function then that metric will have service:cron tag.
Decrement
To decrement index metric by 5 use the following
import { decrement } from '@mvf/metrics';
decrement('index', 5);Gauge
To gauge index metric to 50 use the following
import { gauge } from '@mvf/metrics';
gauge('index', 5);Histogram
To gauge index metric to 50 use the following
import { histogram } from '@mvf/metrics';
histogram('index', 5);Increment
To increment index metric by 5 use the following
import { increment } from '@mvf/metrics';
increment('index', 5);Time
This is used to time how long something took to run. There are 3 ways this function can be used.
Call with explicit value
To log 1000 milliseconds for calculateFavorites metric use the following
import { time } from '@mvf/metrics';
const milliseconds = 1000;
time('calculateFavorites', milliseconds);Call with callback
To count how long something takes to run and log that time use the callback approach
import { time } from '@mvf/metrics';
const calculateFavorites = () => {
// do something
};
time('calculateFavorites', calculateFavorites);Call with async callback
If your callback is asynchronous you can use async function and await
import { time } from '@mvf/metrics';
const calculateFavorites = async () => {
// do something
};
await time('calculateFavorites', calculateFavorites);Return value from callback
Any value returned from the callback will be return by the time function, e.g.
sync callback
const data = time('calculateFavorites', () => 'data');async callback
const data = await time('calculateFavorites', async () => 'data');Unique
To log 50 for currentIndex metric use the following
import { unique } from '@mvf/metrics';
unique('currentIndex', 50);Contributing
Setup
- Run
maketo build the container - Run
make shellto enter the container - Run
npm installto install dependencies
Refer to package.json for commands
After merging
After you have merged a PR to master, you need to rebuild and publish your changes.
- Checkout master
git checkout master && git pull - Use one of the following make publish commands to publish changes:
make publish kind=patch- Use this if your change is a bug fix and is backwards compatible.make publish kind=minor- Use this if your change adds new functionality and is backwards compatible.make publish kind=major- Use this if your change is not backwards compatible.