From 9a1bf6006ad07637ebece18703b5da10ef94f9ea Mon Sep 17 00:00:00 2001 From: Matthew Macdonald-Wallace Date: Thu, 22 Jul 2021 08:22:15 +0100 Subject: [PATCH] Add initial package import and config --- package.json | 3 +++ server/server.js | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/package.json b/package.json index d4fe68885..4d3c56b92 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "args-parser": "^1.3.0", "axios": "^0.21.1", "bcrypt": "^5.0.1", + "bcryptjs": "^2.4.3", "bootstrap": "^5.0.2", "command-exists": "^1.2.9", "dayjs": "^1.10.6", @@ -31,8 +32,10 @@ "form-data": "^4.0.0", "http-graceful-shutdown": "^3.1.2", "jsonwebtoken": "^8.5.1", + "node-gyp": "^3.8.0", "nodemailer": "^6.6.3", "password-hash": "^1.2.2", + "prom-client": "^13.1.0", "redbean-node": "0.0.20", "socket.io": "^4.1.3", "socket.io-client": "^4.1.3", diff --git a/server/server.js b/server/server.js index 3c4d00295..085e90701 100644 --- a/server/server.js +++ b/server/server.js @@ -15,6 +15,7 @@ const gracefulShutdown = require('http-graceful-shutdown'); const Database = require("./database"); const {sleep} = require("./util"); const args = require('args-parser')(process.argv); +const prom_client = require('prom-client') const version = require('../package.json').version; const hostname = args.host || "0.0.0.0" @@ -32,6 +33,11 @@ app.use(express.json()) * Total WebSocket client connected to server currently, no actual use * @type {number} */ +console.log("Setting up the Prometheus Client") + +const collectDefaultMetrics = prom_client.collectDefaultMetrics; +collectDefaultMetrics({ prefix: 'uptimekuma' }); + let totalClient = 0; /** @@ -58,6 +64,12 @@ let needSetup = false; console.log("Adding route") app.use('/', express.static("dist")); + console.log("Adding /metrics") + app.get('/metrics', function (req, res) { + res.set('Content-Type', prom_client.register.contentType); + res.end(prom_client.register.metrics()); + }); + app.get('*', function(request, response, next) { response.sendFile(process.cwd() + '/dist/index.html'); });