1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-10-18 20:09:08 +02:00
unleash.unleash/packages/unleash-api/lib/routes/metrics.js

55 lines
1.6 KiB
JavaScript
Raw Normal View History

'use strict';
const logger = require('../logger');
const ClientMetrics = require('../client-metrics');
2016-10-27 16:55:38 +02:00
const ClientMetricsService = require('../client-metrics-service');
2016-10-27 16:55:38 +02:00
module.exports = function (app, config) {
2016-11-04 09:03:13 +01:00
const { clientMetricsDb, clientStrategiesDb } = config;
const metrics = new ClientMetrics();
2016-11-04 09:03:13 +01:00
const service = new ClientMetricsService(clientMetricsDb);
2016-11-02 23:17:28 +01:00
// Just som dummo demo data
clientStrategiesDb.insertOrUpdate('demo-app', ['default', 'test']).then(() => console.log('inserted client_strategies'));
2016-11-02 12:49:25 +01:00
service.on('metrics', (entries) => {
entries.forEach((m) => metrics.addPayload(m.metrics));
});
app.get('/service-metrics', (req, res) => {
2016-10-27 16:55:38 +02:00
res.json(service.getMetrics());
2016-11-02 12:49:25 +01:00
});
2016-10-27 16:55:38 +02:00
2016-11-02 12:49:25 +01:00
app.get('/metrics', (req, res) => {
res.json(metrics.getState());
});
2016-11-02 12:49:25 +01:00
app.post('/client/metrics', (req, res) => {
try {
2016-11-02 12:49:25 +01:00
const data = typeof req.body === 'string' ? JSON.parse(req.body) : req.body;
metrics.addPayload(data);
service.insert(data);
} catch (e) {
2016-11-02 12:49:25 +01:00
logger.error('Error receiving metrics', e);
}
res.end();
});
2016-10-27 16:55:38 +02:00
2016-11-02 12:49:25 +01:00
app.post('/client/register', (req, res) => {
try {
const data = typeof req.body === 'string' ? JSON.parse(req.body) : req.body;
metrics.registerClient(data);
} catch (e) {
logger.error('Error registering client', e);
}
res.end();
2016-10-27 16:55:38 +02:00
});
2016-11-02 23:17:28 +01:00
app.get('/client/strategies', (req, res) => {
clientStrategiesDb.getAll().then(data => res.json(data));
});
};