2.0.2 • Published 4 years ago

@vidaxl/status-gatherer v2.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

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:test@0.0.0.0: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 class StatusGatherer.
      • strategiesArray type: Array - An array of strategies.
      • options type: Object - A configuration object for StatusGatherer. It has next options:
        • simpleMode type: Boolean - If false then .getStatus() result will contain full responses for all strategies. By default this option is true.
    • getStatus() - StatusGatherer instance method. Goes though all passed strategies and returns and result when all strategies checks is finished. When simpleMode: true - status objects will contain only name and status 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.

2.0.2

4 years ago

2.0.1

4 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.0

4 years ago