@vidaxl/status-gatherer
v2.0.2
Published
@vidaxl/status-gatherer
Downloads
11
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
StatusGatherer
constructor(strategiesArray, options)
- Create a instance of classStatusGatherer
.strategiesArray
type: Array - An array of strategies.options
type: Object - A configuration object forStatusGatherer
. It has next options:simpleMode
type: Boolean - Iffalse
then.getStatus()
result will contain full responses for all strategies. By default this option istrue
.
getStatus()
-StatusGatherer
instance method. Goes though all passed strategies and returns and result when all strategies checks is finished. WhensimpleMode: true
- status objects will contain onlyname
andstatus
fields. 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.