prometheus-act-exporter/server.js

54 lines
1.7 KiB
JavaScript

const http = require('http');
const port = 3000;
const pClient = require('prom-client');
const metrics = require('./index');
pClient.collectDefaultMetrics({ timeout: 60000 });
const requestHandler = async (req, res) => {
let date = new Date(Date.now()).toLocaleString();
console.log(`${date}: ${req.url}`);
switch (req.url) {
case '/metrics':
let m = await metrics.getUsage();
// TODO: Switch to the correct err, res pattern with promise
if (m !== null) {
let usedGauge = new pClient.Gauge({
name: 'act_fup_usage_gigabytes_total',
help: 'ACT current usage in GB',
});
usedGauge.set(m.used);
let totalGauge = new pClient.Gauge({
name: 'act_fup_max_gigabytes_total',
help: 'ACT FUP limit in GB',
});
totalGauge.set(m.total);
let register = pClient.register;
res.setHeader('Content-Type', register.contentType);
res.end(register.metrics());
} else {
res.sendStatus(500);
res.end('Scrape failed');
}
break;
default:
res.writeHead(302, {
Location:
'https://git.captnemo.in/nemo/prometheus-node-exporter',
});
res.end();
break;
}
};
const server = http.createServer(requestHandler);
server.listen(port, err => {
if (err) {
return console.log('something bad happened', err);
}
console.log(`server is listening on ${port}`);
});