From 9a7e2179b6dca9dc1b8642ccc62625a90e00fcc3 Mon Sep 17 00:00:00 2001 From: Sithranduil Date: Sun, 25 Oct 2020 20:33:58 +0100 Subject: [PATCH] Handle when the server is off --- index.js | 17 +------------- modules/game.js | 59 +++++++++++++++++++++++++++++++----------------- modules/index.js | 16 ++++++------- 3 files changed, 47 insertions(+), 45 deletions(-) diff --git a/index.js b/index.js index 46836ee..a7246f4 100644 --- a/index.js +++ b/index.js @@ -46,22 +46,7 @@ app.get('/metrics', async (req, res) => { } else { console.error(e); } - // status.set((Number(0))); - // cpu.set((Number(0))); - // netin.set((Number(0))); - // netout.set((Number(0))); - // uptime.set((Number(0))); - // maps.set((Number(0))); - // fps.set((Number(0))); - // players.set((Number(0))); - // svms.set((Number(0))); - // varms.set((Number(0))); - // svMaxUpdateRate.set((Number(0))); - // metamodEnabledGauge.set((Number(-1))); - // sourcemodEnabledGauge.set((Number(-1))); - // sourcepythonEnabledGauge.set((Number(-1))); - // prepareData(ip, port, game, tags); - // sendData(game, res); + await module.send(config, null, res, true); } }); diff --git a/modules/game.js b/modules/game.js index 6b0f80e..09897e5 100644 --- a/modules/game.js +++ b/modules/game.js @@ -22,37 +22,54 @@ export default { return statusLine; }, setStatsMetrics(response, game) { + let status = 0; + let cpu = 0; + let netin = 0; + let netout = 0; + let uptime = 0; + let maps = 0; + let fps = 0; + let players = 0; + let svms = 0; + let varms = 0; + if (response) { + status = 1; + [cpu, netin, netout, uptime, maps, fps, players, svms, varms] = response; + } if (game === 'csgo') { - metrics.status.set((Number(1))); - metrics.cpu.set((Number(response[0]))); - metrics.netin.set((Number(response[1]))); - metrics.netout.set((Number(response[2]))); - metrics.uptime.set((Number(response[3]))); - metrics.maps.set((Number(response[4]))); - metrics.fps.set((Number(response[5]))); - metrics.players.set((Number(response[6]))); - metrics.svms.set((Number(response[7]))); - metrics.varms.set((Number(response[8]))); + metrics.status.set((Number(status))); + metrics.cpu.set((Number(cpu))); + metrics.netin.set((Number(netin))); + metrics.netout.set((Number(netout))); + metrics.uptime.set((Number(uptime))); + metrics.maps.set((Number(maps))); + metrics.fps.set((Number(fps))); + metrics.players.set((Number(players))); + metrics.svms.set((Number(svms))); + metrics.varms.set((Number(varms))); } else { - metrics.status.set((Number(1))); - metrics.cpu.set((Number(response[0]))); - metrics.netin.set((Number(response[1]))); - metrics.netout.set((Number(response[2]))); - metrics.uptime.set((Number(response[3]))); - metrics.maps.set((Number(response[4]))); - metrics.fps.set((Number(response[5]))); - metrics.players.set((Number(response[6]))); + metrics.status.set((Number(status))); + metrics.cpu.set((Number(cpu))); + metrics.netin.set((Number(netin))); + metrics.netout.set((Number(netout))); + metrics.uptime.set((Number(uptime))); + metrics.maps.set((Number(maps))); + metrics.fps.set((Number(fps))); + metrics.players.set((Number(players))); } }, - async requeseInfo(client, game) { + async requeseInfo(client) { const maxUpdateRate = await utils.rconCommand(client, 'sv_maxupdaterate'); return { sv_maxupdaterate: maxUpdateRate, }; }, setInfoMetrics(response) { - const maxUpdateRate = utils.parseCvar(response.sv_maxupdaterate); - metrics.svMaxUpdateRate.set((Number(maxUpdateRate.value))); + let maxUpdateRate = 0; + if (response) { + maxUpdateRate = utils.parseCvar(response.sv_maxupdaterate).value; + } + metrics.svMaxUpdateRate.set((Number(maxUpdateRate))); return true; }, }; diff --git a/modules/index.js b/modules/index.js index 1935648..476051a 100644 --- a/modules/index.js +++ b/modules/index.js @@ -31,20 +31,20 @@ export default { }, async send(config, response, res) { - metamod.setMetrics(response.metamod); - sourcemod.setMetrics(response.sourcemod); - sourcepython.setMetrics(response.sourcepython); - game.setStatsMetrics(response.stats, config.game); - game.setInfoMetrics(response.info); + metamod.setMetrics(response ? response.metamod : null); + sourcemod.setMetrics(response ? response.sourcemod : null); + sourcepython.setMetrics(response ? response.sourcepython : null); + game.setStatsMetrics(response ? response.stats : null, config.game); + game.setInfoMetrics(response ? response.info : null); registry.setDefaultLabels( config.ip, config.port, config.game, config.tags, - response.metamod, - response.sourcemod, - response.sourcepython, + response ? response.metamod : null, + response ? response.sourcemod : null, + response ? response.sourcepython : null, ); registry.sendMetrics(config.game, res);