Fix session flood issue after prometheus metrics are implemented.

Root cause:
- prometheus metrics '/metrics/codimd' exported by 3ca0341 are still in 'routes need sessions' section.
- prometheus scrapes metrics repeatedly.
- new session created every time while prometheus scrapes metrics '/metrics/codimd'.

Solution:
- move /metrics/codimd from lib/routes.js to lib/metrics.js.
- move /metrics/codimd from section 'routes need sessions' of app.js to 'routes without sessions'.

Signed-off-by: tarlety <tarlety@gmail.com>
This commit is contained in:
tarlety 2020-05-04 19:38:59 +08:00
parent 6c4fd144f5
commit ac31e51d67
No known key found for this signature in database
GPG Key ID: A5C0B56BA29AE637
3 changed files with 16 additions and 2 deletions

1
app.js
View File

@ -138,6 +138,7 @@ app.use('/', express.static(path.join(__dirname, '/public'), { maxAge: config.st
app.use('/docs', express.static(path.resolve(__dirname, config.docsPath), { maxAge: config.staticCacheTime }))
app.use('/uploads', express.static(path.resolve(__dirname, config.uploadsPath), { maxAge: config.staticCacheTime }))
app.use('/default.md', express.static(path.resolve(__dirname, config.defaultNotePath), { maxAge: config.staticCacheTime }))
app.use(require('./lib/metrics').router)
// session
app.use(session({

15
lib/metrics.js Normal file
View File

@ -0,0 +1,15 @@
'use strict'
const { Router } = require('express')
const { wrap } = require('./utils')
// load controller
const statusController = require('./status')
const appRouter = Router()
// register route
appRouter.get('/status', wrap(statusController.getStatus))
appRouter.get('/metrics/codimd', wrap(statusController.getMetrics))
exports.router = appRouter

View File

@ -27,8 +27,6 @@ appRouter.get('/404', errorPageController.errorNotFound)
// get 500 internal error
appRouter.get('/500', errorPageController.errorInternalError)
appRouter.get('/status', wrap(statusController.getStatus))
appRouter.get('/metrics/codimd', wrap(statusController.getMetrics))
appRouter.get('/config', statusController.getConfig)
// register auth module