mirror of
https://github.com/docker-training/node-bulletin-board.git
synced 2025-12-13 06:16:43 +08:00
Add metrics for P5
This commit is contained in:
@@ -13,7 +13,8 @@
|
||||
"vue": "^1.0.10",
|
||||
"vue-resource": "^0.1.17",
|
||||
"tedious": "^2.0.1",
|
||||
"sequelize": "^4.20.1"
|
||||
"sequelize": "^4.20.1",
|
||||
"prom-client": "^10.2.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"body-parser": "^1.14.1",
|
||||
|
||||
@@ -3,6 +3,7 @@ var express = require('express'),
|
||||
methodOverride = require('method-override'),
|
||||
errorHandler = require('errorhandler'),
|
||||
morgan = require('morgan'),
|
||||
prometheus = require('prom-client'),
|
||||
routes = require('./backend'),
|
||||
api = require('./backend/api');
|
||||
|
||||
@@ -29,10 +30,42 @@ if ('production' == app.get('env')) {
|
||||
app.use(errorHandler());
|
||||
}
|
||||
|
||||
// counter for Prometheus:
|
||||
const httpRequestDurationMicroseconds = new prometheus.Histogram({
|
||||
name: 'http_request_duration_ms',
|
||||
help: 'Duration of HTTP requests in ms',
|
||||
labelNames: ['method', 'route', 'code'],
|
||||
buckets: [0.10, 5, 15, 50, 100, 200, 300, 400, 500] // buckets for response time from 0.1ms to 500ms
|
||||
})
|
||||
|
||||
// record timestamp before request handler:
|
||||
app.use((req, res, next) => {
|
||||
res.locals.startEpoch = Date.now()
|
||||
next()
|
||||
})
|
||||
|
||||
app.get('/', routes.index);
|
||||
app.get('/api/events', api.events);
|
||||
app.post('/api/events', api.event);
|
||||
app.delete('/api/events/:eventId', api.event)
|
||||
app.delete('/api/events/:eventId', api.event);
|
||||
|
||||
app.get('/metrics', (req, res) => {
|
||||
res.set('Content-Type', prometheus.register.contentType)
|
||||
res.end(prometheus.register.metrics())
|
||||
})
|
||||
|
||||
// set response duration after handler:
|
||||
app.use((req, res, next) => {
|
||||
const responseTimeInMs = Date.now() - res.locals.startEpoch
|
||||
|
||||
httpRequestDurationMicroseconds
|
||||
.labels(req.method, req.path, res.statusCode)
|
||||
.observe(responseTimeInMs)
|
||||
|
||||
next()
|
||||
})
|
||||
|
||||
prometheus.collectDefaultMetrics();
|
||||
|
||||
app.listen(8080);
|
||||
console.log('Magic happens on port 8080...');
|
||||
Reference in New Issue
Block a user