prometheus-act-exporter/server.js

51 lines
1.2 KiB
JavaScript

const http = require("http");
const port = 3000;
const metrics = require("./index");
const promFormatter = require("./prom");
CACHE = {};
const requestHandler = async (req, res) => {
let date = new Date(Date.now()).toLocaleString();
console.log(`${date}: ${req.url}`);
switch (req.url) {
case "/metrics":
res.setHeader("Content-Type", promFormatter.contentType);
metrics.getUsage().then(
(data) => {
console.log(data);
console.log("Setting cache");
CACHE = data;
promFormatter.format(data).then((data) => {
res.end(data);
});
},
(err) => {
console.log(err);
console.log("Got error, using cache");
console.log(CACHE);
promFormatter.format(CACHE).then((data) => {
res.end(data);
});
}
);
break;
default:
res.writeHead(302, {
Location: "https://github.com/captn3m0/prometheus-act-exporter",
});
res.end();
break;
}
};
const server = http.createServer(requestHandler);
server.listen(port, (err) => {
if (err) {
return console.log("could not initialize web server", err);
}
console.log(`server is listening on ${port}`);
});