You want to log service metrics from your application and push it to a metrics provided? - Yes? - Here you are 🙌 !!
Currently there's only support for Datadog as metrics provider.
| Service | Version |
|---|---|
| MongoDB | >=3.6.6 |
| Redis | >=2.3.9 |
| RabbitMQ | >=3.7.15 |
Install library by using npm
npm install node-service-metrics-loggeror by using yarn
yarn add node-service-metrics-loggerUsing CommonJS module loader:
const NodeServiceMetricsLogger = require('node-service-metrics-logger);Using ES6 module loader:
import { NodeServiceMetricsLogger } from 'node-service-metrics-logger;Create new instance of NodeServiceMetricsLogger and provide options:
const serviceCredentials = [
{
serviceType: 'mongodb',
host: 'your-mongodb-host',
username: 'user',
password: 'this-is-secret',
port: 27017
database: 'your-database-name',
},
{
serviceType: 'redis',
host: 'your-redis-host',
port: 6379,
password: 'this-is-secret',
}
];
const nodeServiceMetricsLogger = new NodeServiceMetricsLogger({serviceCredentials});Subscribe metrics to receive service metrics data:
nodeServiceMetricsLogger.subscribe('metrics', data => {
// do some fancy stuff with your metrics
});Subscribe logs to receive general application logs:
nodeServiceMetricsLogger.subscribe('logs', {message, level} => {
console[level](message));
});Start service metrics logging:
nodeServiceMetricsLogger.start();Stop service metrics logging:
nodeServiceMetricsLogger.stop();| Option | Description | Default Value |
|---|---|---|
serviceType |
Type of service. Currently only mongodb, redis and rabbitmq are available |
|
name |
Name of credential to identify your specific service in a mass of logs | your host |
host |
Host of service | |
port (optional) |
Port of service | |
uri (optional) |
Instead of port and host, you can provide an URI | |
username (optional) |
Username | |
password (optional) |
Password | |
interval (optional) |
Service metrics polling interval in ms | 10000 |
| Method | Description |
|---|---|
start() |
Start service metrics |
stop() |
Stop service metrics |
subscribe(eventId, callback) |
Subscribe an event |
unsubscribe(eventId, callback) |
Unsubscribe an event |
unsubscribeAll() |
Unsubscribe all events |
| Id | Description |
|---|---|
metrics |
Service metrics |
logs |
General application logs for levels debug, info, warn and error |
You can use a cloud connector to log metrics from your cloud instance services.
| Option | Description | Default Value |
|---|---|---|
vcap (optional) |
Provide local VCAP_SERVICES and/or VCAP_APPLICATION values |
{} |
vcapFile (optional) |
Provide local VCAP_SERVICES and/or VCAP_APPLICATION file |
'' |
| Method | Description |
|---|---|
getCredentials() |
Get Cloud Foundry service credentials |
// import using `CommonJS` module loader:
const { CloudFoundryConnector, NodeServiceMetricsLogger } = require('node-service-metrics-logger');
// or import using `ES6` module loader:
import { CloudFoundryConnector, NodeServiceMetricsLogger } from 'node-service-metrics-logger';
const options = {
vcapFile: 'your-vcap-file-path/vcap.json'
};
const cloudFoundryConnector = new CloudFoundryConnector(options);
const serviceCredentials = cloudFoundryConnector.getCredentials();
const nodeServiceMetricsLogger = new NodeServiceMetricsLogger({serviceCredentials});
nodeServiceMetricsLogger.subscribe('metrics', data => {
// do some fancy stuff with your metrics
});
nodeServiceMetricsLogger.start();
setTimeout(() => {
nodeServiceMetricsLogger.stop();
}, 30000);With transports you can log metrics to metrics services like Datadog. Datadog is currently the one and only implemented transport.
// import using `CommonJS` module loader:
const { NodeServiceMetricsLogger, DatadogTransport } = require('node-service-metrics-logger');
// or import using `ES6` module loader:
import { NodeServiceMetricsLogger, DatadogTransport } from 'node-service-metrics-logger';
const datadogTransport = new DatadogTransport({
apiKey: 'datadog-api-key',
appKey: 'datadog-app-key',
host: 'app.datadoghq.com',
tags: ['env:development']
});
const serviceCredentials = [
{
serviceType: 'mongodb',
host: 'your-mongodb-host',
username: 'user',
password: 'this-is-secret',
port: 27017,
database: 'your-database-name',
}
];
const nodeServiceMetricsLogger = new NodeServiceMetricsLogger({
serviceCredentials,
transports: [datadogTransport],
});
nodeServiceMetricsLogger.start();You need to set up your development environment before you can do anything.
Install Node.js and NPM
- on OSX use homebrew
brew install node - on Windows use chocolatey
choco install nodejs
Install yarn globally
yarn install yarn -gInstall all dependencies with yarn.
yarn install- Install all dependencies with
yarn install
- Run code quality analysis using
yarn run lint. This runs tslint.
- Run unit test using
yarn run test.
- Run
yarn run buildto generate commonJS and ES6 modules as well as declaration from the TypeScript source. - Builded sources are located in
distfolder.
Just set a breakpoint in source or unit test and hit F5 in your Visual Studio Code to execute and debug all unit tests.
| Name | Description |
|---|---|
| .vscode/ | VSCode tasks, launch configuration and some other settings |
| dist/ | Compiled and bundled source files will be placed here |
| src/ | Source files |
| src/types/ *.d.ts | Custom type definitions and files that aren't on DefinitelyTyped |
| test/ | Tests |
| test/unit/ *.test.ts | Unit tests |
| rollup.config.js | Config for Rollup module bundler |