mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-22 19:07:54 +01:00
Server Metrics: add response time and status codes
This commit is contained in:
parent
84e0810d64
commit
8e6bcafa24
@ -5,12 +5,15 @@ const favicon = require('serve-favicon');
|
||||
const bodyParser = require('body-parser');
|
||||
const cookieParser = require('cookie-parser');
|
||||
const validator = require('express-validator');
|
||||
const responseTime = require('response-time');
|
||||
const log4js = require('log4js');
|
||||
const logger = require('./logger');
|
||||
const routes = require('./routes');
|
||||
const path = require('path');
|
||||
const errorHandler = require('errorhandler');
|
||||
|
||||
const {REQUEST_TIME, REQUEST_STATUS} = require('./events');
|
||||
|
||||
module.exports = function (config) {
|
||||
const app = express();
|
||||
|
||||
@ -26,7 +29,13 @@ module.exports = function (config) {
|
||||
app.use(favicon(path.join(publicFolder, 'favicon.ico')));
|
||||
}
|
||||
|
||||
app.use(responseTime((req, res, time) => {
|
||||
config.eventBus.emit(REQUEST_TIME, req.path, req.method, time);
|
||||
config.eventBus.emit(REQUEST_STATUS, req.path, req.method, res.statusCode);
|
||||
}));
|
||||
|
||||
app.use(validator([]));
|
||||
|
||||
if (publicFolder) {
|
||||
app.use(baseUriPath, express.static(publicFolder));
|
||||
}
|
||||
|
@ -3,4 +3,6 @@ module.exports = {
|
||||
TOGGLES_CREATE: 'toggles:create',
|
||||
CLIENT_REGISTER: 'client:register',
|
||||
CLIENT_METRICS: 'toggles:metrics',
|
||||
REQUEST_TIME: 'request_time',
|
||||
REQUEST_STATUS: 'request_status'
|
||||
}
|
@ -7,6 +7,12 @@ exports.startMonitoring = (enable, eventBus) => {
|
||||
|
||||
const client = require('prom-client');
|
||||
const toggleFetch = new client.Counter('toggles_fetch_counter', 'Number of fetch toggles request');
|
||||
|
||||
const requestDuration = new client.Summary('http_request_duration_milliseconds', 'App response time', ['uri', 'method'], {
|
||||
percentiles: [0.1, 0.5, 0.9, 0.99],
|
||||
});
|
||||
const requestCount = new client.Counter('http_requests_total', 'HTTP request duration', ['uri', 'method', 'status']);
|
||||
|
||||
const clientRegister = new client.Counter('client_register_counter', 'Number client register requests');
|
||||
const clientMetrics = new client.Counter('client_metrics_counter', 'Number client metrics requests');
|
||||
|
||||
@ -21,4 +27,12 @@ exports.startMonitoring = (enable, eventBus) => {
|
||||
eventBus.on(events.CLIENT_METRICS, () => {
|
||||
clientMetrics.inc();
|
||||
});
|
||||
|
||||
eventBus.on(events.REQUEST_TIME, (uri, method, time) => {
|
||||
requestDuration.labels(uri, method).observe(time);
|
||||
});
|
||||
|
||||
eventBus.on(events.REQUEST_STATUS, (uri, method, status) => {
|
||||
requestCount.labels(uri, method, status).inc();
|
||||
});
|
||||
};
|
@ -3,6 +3,7 @@
|
||||
const prometheusRegister = require('prom-client/lib/register');
|
||||
|
||||
module.exports = function (app, config) {
|
||||
console.log({config});
|
||||
if(config.serverMetrics) {
|
||||
app.get('/internal-backstage/prometheus', (req, res) => {
|
||||
res.writeHead(200, { 'Content-Type': 'text/plain' });
|
||||
|
@ -17,8 +17,8 @@ function createApp (options) {
|
||||
const eventBus = new EventEmitter();
|
||||
|
||||
const config = {
|
||||
prometheusPath: options.prometheusPath,
|
||||
baseUriPath: options.baseUriPath,
|
||||
serverMetrics: options.serverMetrics,
|
||||
port: options.port,
|
||||
publicFolder: options.publicFolder,
|
||||
stores,
|
||||
|
@ -72,6 +72,7 @@
|
||||
"parse-database-url": "^0.3.0",
|
||||
"pg": "^6.1.0",
|
||||
"prom-client": "^6.1.2",
|
||||
"response-time": "^2.3.2",
|
||||
"serve-favicon": "^2.3.0",
|
||||
"unleash-frontend": "github:unleash/unleash-frontend",
|
||||
"yallist": "^2.0.0"
|
||||
|
Loading…
Reference in New Issue
Block a user