From c0ce8b9338b158f99320e6692004ab0406b86598 Mon Sep 17 00:00:00 2001 From: Raphix Date: Tue, 28 Nov 2023 20:03:02 +0100 Subject: [PATCH] Version 1.0.0 - Ajout de metrics --- config.json | 3 +++ main.js | 60 +++++++++++++++++++++++++++++++++++++++++++++++ package-lock.json | 24 +++++++++++++++++++ package.json | 15 ++++++++++++ 4 files changed, 102 insertions(+) create mode 100644 config.json create mode 100644 main.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/config.json b/config.json new file mode 100644 index 0000000..13e4ec5 --- /dev/null +++ b/config.json @@ -0,0 +1,3 @@ +{ + "AUTH_KEY": "0" +} \ No newline at end of file diff --git a/main.js b/main.js new file mode 100644 index 0000000..7734384 --- /dev/null +++ b/main.js @@ -0,0 +1,60 @@ +const http = require('http'); +const url = require('url'); +const fs = require('fs'); +const os = require('os'); +const osutils = require('os-utils'); +const {statfs} = require('fs'); + +const server = http.createServer(async (req, res) => { + const parsedUrl = url.parse(req.url, true); + const query = parsedUrl.query; + + if (parsedUrl.pathname === '/metrics' && query.key) { + const config = JSON.parse(fs.readFileSync('config.json')); + if (query.key === config.AUTH_KEY) { + var metrics = await getMetrics() + + res.setHeader('Content-Type', 'application/json'); + res.end(JSON.stringify(metrics)); + } else { + res.statusCode = 401; + res.end('Unauthorized'); + } + } else { + res.statusCode = 404; + res.end('Not Found'); + } +}); + +server.listen(4000, () => { + console.log('Server is running on port 4000'); +}); + + +function getMetrics() { + + return new Promise((resolve, reject) => { + const space = statfs("/", (err, stats) => { + if (err) { + throw err + } + + var resp = null + + osutils.cpuUsage(function(cpuUsage) { + resp = { + cpu: Math.round(cpuUsage * 1000), + usedram: osutils.totalmem() - osutils.freemem(), + totalram: osutils.totalmem(), + usedisk: stats.blocks - stats.bfree, + totaldisk: stats.blocks + } + + resolve(resp) + + + }) + + }) + }) +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2f36fdb --- /dev/null +++ b/package-lock.json @@ -0,0 +1,24 @@ +{ + "name": "neutral-link", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "neutral-link", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "os-utils": "^0.0.14" + } + }, + "node_modules/os-utils": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/os-utils/-/os-utils-0.0.14.tgz", + "integrity": "sha512-ajB8csaHLBvJOYsHJkp8YdO2FvlBbf/ZxaYQwXXRDyQ84UoE+uTuLXxqd0shekXMX6Qr/pt/DDyLMRAMsgfWzg==", + "engines": { + "node": "*" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..133d064 --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "neutral-link", + "version": "1.0.0", + "description": "Lien vers Neutral", + "main": "index.js", + "scripts": { + "start": "node main.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "os-utils": "^0.0.14" + } +}