database-metrics-logger v0.8.4
This project is no longer supported, please consider using node-service-metrics-logger instead.
The project node-service-metrics-logger does also support other services like RabbitMQ.


❯ Why
You want to log service metrics from your application on Cloud Foundry? - Yes? - Here you are 🙌 !!

❯ Table of Contents

❯ Supported Services
| Service | Version |
|---|---|
| MongoDB | >=3.6.6 |
| Redis | >=2.3.9 |

❯ Quick Start
Installation
Install library by using npm
npm install database-metrics-loggeror by using yarn
yarn add database-metrics-loggerHow to use
Step 1: Import DatabaseMetricsLogger
Using CommonJS module loader:
const DatabaseMetricsLogger = require('database-metrics-logger');Using ES6 module loader:
import { DatabaseMetricsLogger } from 'database-metrics-logger';Step 2: Create new instance of CfServiceMetricsLogger
Create new instance of DatabaseMetricsLogger and provide options:
const databaseCredentials = [
{
databaseType: 'mongodb',
host: 'your-mongodb-host',
username: 'user',
password: 'this-is-secret',
port: 27017
database: 'your-database-name',
},
{
databaseType: 'redis',
host: 'your-redis-host',
port: 6379,
password: 'this-is-secret',
}
];
const databaseMetricsLogger = new DatabaseMetricsLogger({databaseCredentials});Step 3: Subscribe to receive service metrics and general logs
Subscribe metrics to receive service metrics data:
databaseMetricsLogger.subscribe('metrics', data => {
// do some fancy stuff with your metrics
});Subscribe logs to receive general application logs:
databaseMetricsLogger.subscribe('logs', {message, level} => {
console[level](message));
});Step 3: Start and stop service metrics logging
Start database metrics logging:
databaseMetricsLogger.start();Stop service metrics logging:
databaseMetricsLogger.stop();
❯ API
Credentials Options
| Option | Description | Default Value |
|---|---|---|
databaseType | Type of database. Currently only mongodb redis are available | |
name | Name of credential to identify your specific database in a mass of logs | your host |
host | Host of database | |
port (optional) | Port of database | |
uri (optional) | Instead of port and host, you can provide an URI | |
username (optional) | Username | |
password (optional) | Password | |
interval (optional) | Database metrics polling interval in ms | 10000 |
Methods
| 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 |
Subscription event id's
| Id | Description |
|---|---|
metrics | Service metrics |
logs | General application logs for levels debug, info, warn and error |

❯ Cloud Connectors
You can use a cloud connector to log metrics from your cloud instance databases.
Cloud Foundry
Options
| 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 | '' |
Methods
| Method | Description |
|---|---|
getCredentials() | Get Cloud Foundry service credentials |
Example
// import using `CommonJS` module loader:
const { CloudFoundryConnector, DatabaseMetricsLogger } = require('cf-service-metrics-logger');
// or import using `ES6` module loader:
import { CloudFoundryConnector, DatabaseMetricsLogger } from 'cf-service-metrics-logger';
const options = {
vcapFile: 'your-vcap-file-path/vcap.json'
};
const cloudFoundryConnector = new CloudFoundryConnector(options);
const databaseCredentials = cloudFoundryConnector.getCredentials();
const databaseMetricsLogger = new DatabaseMetricsLogger({databaseCredentials});
databaseMetricsLogger.subscribe('metrics', data => {
// do some fancy stuff with your metrics
});
databaseMetricsLogger.start();
setTimeout(() => {
databaseMetricsLogger.stop();
}, 30000);
❯ Transports
With transports you can log metrics to metrics services like Datadog. Datadog is currently the one and only implemented transport.
Datadog
Example
// import using `CommonJS` module loader:
const { DatabaseMetricsLogger, DatadogTransport } = require('database-metrics-logger');
// or import using `ES6` module loader:
import { DatabaseMetricsLogger, DatadogTransport } from 'database-metrics-logger';
const datadogTransport = new DatadogTransport({
apiKey: 'datadog-api-key',
appKey: 'datadog-app-key',
host: 'app.datadoghq.com',
tags: ['env:development']
});
const databaseCredentials = [
{
databaseType: 'mongodb',
host: 'your-mongodb-host',
username: 'user',
password: 'this-is-secret',
port: 27017,
database: 'your-database-name',
}
];
const databaseMetricsLogger = new DatabaseMetricsLogger({
databaseCredentials,
transports: [datadogTransport],
});
databaseMetricsLogger.start();❯ Development
Getting Started
Step 1: Set up the Development Environment
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 -gStep 2: Install dependencies
Install all dependencies with yarn.
yarn installScripts and Tasks
Install
- Install all dependencies with
yarn install
Linting
- Run code quality analysis using
yarn run lint. This runs tslint.
Tests
- Run unit test using
yarn run test.
Building the project
- Run
yarn run buildto generate commonJS and ES6 modules as well as declaration from the TypeScript source. - Builded sources are located in
distfolder.
Debugger
VS Code
Just set a breakpoint in source or unit test and hit F5 in your Visual Studio Code to execute and debug all unit tests.

❯ Project Structure
| 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 |
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago