@vidaxl/status-gatherer
v2.0.2
Published
@vidaxl/status-gatherer
Keywords
Readme
Status Gatherer
Summary
This is an private npm module that gather's statuses of services that are dependencies of service, where it used.
Usage
- Install package
npm i -S @vidaxl/status-gatherer - Use it for status route
const { StatusGatherer, strategies, enums } = require('@vidaxl/status-gatherer');
const {
CouchbaseStrategy,
ElasticsearchStrategy,
HttpStrategy,
MongoStrategy,
MysqlStrategy,
RedisStrategy,
SolrStrategy,
} = strategies;
const deps = [
new HttpStrategy('some-service', {
url: 'http://0.0.0.0:3000/status',
}),
new ElasticsearchStrategy('elasticsearch', {
node: ['http://0.0.0.0:9200'],
}),
new CouchbaseStrategy('some-couchbase', {
host: '0.0.0.0',
port: 3000,
username: 'test',
password: 'test',
}),
new MongoStrategy('some-mongodb-1', {
url: 'mongodb://test:[email protected]:27017,0.0.0.1:27017/dbname',
}),
new MongoStrategy('some-mongodb-2', {
host: [
'0.0.0.0',
'0.0.0.1'
],
port: 27017,
username: 'test',
password: 'test',
dbName: 'dbname',
}),
new MysqlStrategy('some-mysql', {
host: '0.0.0.0',
port: 3306,
user: 'test',
password: 'test',
database: 'database',
}),
new RedisStrategy('some-redis', {
host : '0.0.0.0',
port : 6379
}),
new SolrStrategy('some-solr', {
host: '0.0.0.0',
port: 8983,
core: 'test',
})
];
async function statusRouteHandler(req, res, next) {
if (!req.query.hasOwnProperty('verbose')) {
res.json(200, {
status: enums.statuses.OK,
});
return next();
}
const gatherer = new StatusGatherer(deps, {
simpleMode: false, // true by default
});
const result = await gatherer.getStatus();
res.json(200, result);
return next();
}Status Gatherer API
- Class
StatusGathererconstructor(strategiesArray, options)- Create a instance of classStatusGatherer.strategiesArraytype: Array - An array of strategies.optionstype: Object - A configuration object forStatusGatherer. It has next options:simpleModetype: Boolean - Iffalsethen.getStatus()result will contain full responses for all strategies. By default this option istrue.
getStatus()-StatusGathererinstance method. Goes though all passed strategies and returns and result when all strategies checks is finished. WhensimpleMode: true- status objects will contain onlynameandstatusfields. Result object contains next fields:
{
name: 'some-name-service', // name key from package.json of service where this module is used
version: '1.0.0', // version key from package.json of service where this module is used
description: '', // description key from package.json of service where this module is used
dependencies: [{ // array with statuses for each passed strategy
type: 'HTTP', // type of connection to some-service
name: 'some-service',
elapsedTime: 100, // time spent connecting to the service
status: 'OK', // status of some-service, can be 'FAIL'
serviceResponse: {}, // full response from service
}],
status: 'OK', // status of some-name-service
timestamp: 1577098534797,
date: "2019-12-23T10:55:46.959Z",
}Status Strategies
This npm module provides few predefined strategies:
- CouchbaseStrategy - configuration object:
{ host, port, username, password } - ElasticsearchStrategy - configuration object:
{ node, maxRetries, pingTimeout } - HttpStrategy - configuration object:
{ url } - MongoStrategy - configuration object:
{ url }OR{ username, password, port, host } - MysqlStrategy - configuration object:
{ host, port, user, password, database } - RedisStrategy - configuration object:
{ host, port, password } - SolrStrategy - configuration object:
{ host, port, core, path, secure }
All of them extends from BaseStrategy, so you can create custom strategy based on your own requirements.
