Database Metrics Logger
❯ 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-logger
or by using yarn
yarn add database-metrics-logger
How 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 => {
});
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
const { CloudFoundryConnector, DatabaseMetricsLogger } = require('cf-service-metrics-logger');
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 => {
});
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
const { DatabaseMetricsLogger, DatadogTransport } = require('database-metrics-logger');
import { DatabaseMetricsLogger, DatadogTransport } from 'database-metrics-logger';
const datadogTransport = new DatadogTransport({
apiKey: 'datadog-api-key',
appKey: 'datadog-app-key',
});
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
Install yarn globally
yarn install yarn -g
Step 2: Install dependencies
Install all dependencies with yarn.
yarn install
Scripts 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 build
to generate commonJS and ES6 modules as well as declaration from the TypeScript source. - Builded sources are located in
dist
folder.
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 |