45 lines
1.2 KiB
JavaScript
45 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
|
|
res.end(promFormatter.format(data));
|
|
}, err =>{
|
|
console.log(err)
|
|
console.log("Got error, using cache")
|
|
console.log(CACHE)
|
|
res.end(promFormatter.format(CACHE))
|
|
})
|
|
break;
|
|
default:
|
|
res.writeHead(302, {
|
|
Location:
|
|
'https://git.captnemo.in/nemo/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}`);
|
|
});
|