prometheus-act-exporter/server.js

53 lines
1.3 KiB
JavaScript
Raw Normal View History

2021-12-19 10:06:03 +00:00
const http = require("http");
2018-06-03 18:29:52 +00:00
const port = 3000;
2021-12-19 10:06:03 +00:00
const metrics = require("./index");
const promFormatter = require("./prom");
2018-06-04 10:27:52 +00:00
2022-06-24 07:21:36 +00:00
CACHE = null;
2021-07-03 17:34:24 +00:00
2018-06-04 05:36:02 +00:00
const requestHandler = async (req, res) => {
2021-12-19 10:06:03 +00:00
switch (req.url) {
case "/metrics":
res.setHeader("Content-Type", promFormatter.contentType);
2022-06-24 06:14:02 +00:00
promFormatter.format(CACHE).then((data) => {
res.end(data);
});
2021-12-19 10:06:03 +00:00
break;
default:
res.writeHead(302, {
Location: "https://github.com/captn3m0/prometheus-act-exporter",
});
res.end();
break;
}
2018-06-04 05:36:02 +00:00
};
2018-06-03 18:29:52 +00:00
2018-06-04 05:36:02 +00:00
const server = http.createServer(requestHandler);
2018-06-03 18:29:52 +00:00
2022-06-24 06:14:02 +00:00
metrics.onReady((browser) => {
let t;
(function refreshCache() {
metrics.getUsage().then((data) => {
let date = new Date(Date.now()).toLocaleString();
console.log(`${date}: Updated Cache`);
// Start server now if this is the first run
if (!CACHE) {
server.listen(port, (err) => {
if (err) {
return console.log("could not initialize web server", err);
}
console.log(`server is listening on ${port}`);
});
}
CACHE = data;
}).finally(()=>{
t = setTimeout(refreshCache, 15 * 60 * 1000);
});
})();
2018-06-03 18:29:52 +00:00
2022-06-24 06:14:02 +00:00
process.on("exit", function () {
browser.close();
clearTimeout(t)
});
2018-06-04 05:36:02 +00:00
});