From ef7f36f36c55060c4d3406c648d5138753009083 Mon Sep 17 00:00:00 2001 From: = Date: Mon, 30 Nov 2020 14:37:55 +0100 Subject: [PATCH] Prometheus data update --- src/db/MongoDB.js | 2 ++ src/routes/index.js | 3 +++ src/socket/prom.js | 45 +++++++++++++++++++++++++++++++++++++++++++- src/socket/socket.js | 11 ++++++++++- 4 files changed, 59 insertions(+), 2 deletions(-) diff --git a/src/db/MongoDB.js b/src/db/MongoDB.js index 806f2ef..2d3f3cd 100644 --- a/src/db/MongoDB.js +++ b/src/db/MongoDB.js @@ -3,6 +3,7 @@ var crypto = require('crypto'); const { nanoid } = require('nanoid'); const configs = require('../config/config'); const utils = require('../utils'); +const prom = require('../socket/prom') const baseCode = [ {uuid: utils.uuid(Math.random().toString(), 10), content: 'def main(text: str) -> None:'}, @@ -216,6 +217,7 @@ class MongoDB { case 'new-line': results = await this.newLine(documentLink, data.previous, data.id, data.content); if (!results) success = false; + prom.total_new_lines.inc(); break; case 'delete-line': results = await this.deleteLine(documentLink, data.id); diff --git a/src/routes/index.js b/src/routes/index.js index da1c297..379b310 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -32,6 +32,8 @@ const router = express.Router(); const hook = config.DISCORD_WEBHOOK ? new discordWebhook.Webhook(config.DISCORD_WEBHOOK) : null; +const prom = require('../socket/prom'); + /** * Route serving editorindex page * @name get/ @@ -55,6 +57,7 @@ router.post('/create_document', async (req, res, next) => { //const language = req.body.language let documentId = await db.createDocument('python'); if (documentId) { + prom.total_new_documents.inc(); res.redirect(`/editor/${documentId}`); } else { diff --git a/src/socket/prom.js b/src/socket/prom.js index 5bfa659..ecc0fa3 100644 --- a/src/socket/prom.js +++ b/src/socket/prom.js @@ -21,4 +21,47 @@ const total_packets = new client.Counter({ help: 'total_packets', }); -module.exports = { timestamp_uptime, connexions, connected, total_packets }; +const total_packets_size = new client.Counter({ + name: 'total_packets_size', + help: 'total_packets_size', +}); + +const total_new_documents = new client.Counter({ + name: 'total_new_documents', + help: 'total_new_documents', +}); + +const total_new_lines = new client.Counter({ + name: 'total_new_lines', + help: 'total_new_lines', +}); + +const active_rooms = new client.Gauge({ + name: 'active_rooms', + help: 'active_rooms', +}); + +const unique_connected = new client.Gauge({ + name: 'unique_connected', + help: 'unique_connected', +}); + +/* +const unique_connexions = new client.Counter({ + name: 'unique_connexions', + help: 'unique_connexions', +}); +*/ + +module.exports = { + timestamp_uptime, + connexions, + connected, + total_packets, + total_packets_size, + total_new_documents, + total_new_lines, + active_rooms, + unique_connected, + //unique_connexions, +}; diff --git a/src/socket/socket.js b/src/socket/socket.js index 8ae3ac0..8610fa0 100644 --- a/src/socket/socket.js +++ b/src/socket/socket.js @@ -55,7 +55,6 @@ module.exports = function (wss) { socket.on('message', async data => { - prom.total_packets.inc(); data = JSON.parse(data); if(!('uuid' in data)) data['uuid'] = 'None'; switch (data.event) { @@ -129,6 +128,8 @@ module.exports = function (wss) { } } + prom.total_packets.inc(); + prom.total_packets_size.inc(data.toString().length * 16); }); socket.on('pong', () => { @@ -161,6 +162,14 @@ module.exports = function (wss) { setInterval(() => { prom.connected.set(wss.clients.size); + const unique_list = []; + wss.clients.forEach(function(x){ + if(!unique_list.includes(x._socket.address().address)){ + unique_list.push(x._socket.address().address); + } + }); + prom.unique_connected.set(unique_list.length); + prom.active_rooms.set(Object.keys(rooms).length); }, 5000); // delete old documents