Metrics publish working correctly
This commit is contained in:
parent
00432db256
commit
473d90b069
29
index.js
29
index.js
|
@ -1,35 +1,36 @@
|
|||
const puppeteer = require('puppeteer');
|
||||
|
||||
const MY_PACKAGE_SELECTOR_ID = 'table[style="margin-top:-10px;"] tr:first-child+tr';
|
||||
const DATA_SELECTOR='packagecol3';
|
||||
const MY_PACKAGE_SELECTOR_ID =
|
||||
'table[style="margin-top:-10px;"] tr:first-child+tr';
|
||||
const DATA_SELECTOR = 'packagecol3';
|
||||
|
||||
const REGEX = /\d+\.\d{0,2}/g
|
||||
const REGEX = /\d+\.\d{0,2}/g;
|
||||
|
||||
async function getUsage() {
|
||||
const browser = await puppeteer.launch({
|
||||
executablePath: "/usr/bin/chromium-snapshot-bin",
|
||||
args: ["--proxy-server=socks5://10.8.0.14:1080"],
|
||||
headless: false
|
||||
executablePath: '/usr/bin/chromium-snapshot-bin',
|
||||
args: ['--proxy-server=socks5://10.8.0.14:1080'],
|
||||
headless: true,
|
||||
});
|
||||
|
||||
const page = await browser.newPage();
|
||||
await page.goto('http://portal.actcorp.in/group/blr/myaccount');
|
||||
await page.click(MY_PACKAGE_SELECTOR_ID);
|
||||
await page.waitFor(3000),
|
||||
text = await page.evaluate((sel) => {
|
||||
return document.getElementsByClassName(sel)[3].innerText;
|
||||
}, DATA_SELECTOR);
|
||||
|
||||
[used,total] = text.match(REGEX).map((x) => parseFloat(x))
|
||||
|
||||
(text = await page.evaluate(sel => {
|
||||
return document.getElementsByClassName(sel)[3].innerText;
|
||||
}, DATA_SELECTOR));
|
||||
|
||||
browser.close();
|
||||
|
||||
[used, total] = text.match(REGEX).map(x => parseFloat(x));
|
||||
|
||||
return {
|
||||
used: used,
|
||||
total: total
|
||||
total: total,
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getUsage: getUsage
|
||||
getUsage: getUsage,
|
||||
};
|
56
server.js
56
server.js
|
@ -5,32 +5,38 @@ const metrics = require('./index');
|
|||
|
||||
const collectDefaultMetrics = pClient.collectDefaultMetrics;
|
||||
|
||||
const requestHandler = (req, res) => {
|
||||
switch(req.url) {
|
||||
case '/metrics':
|
||||
metrics.getUsage((metrics) => {
|
||||
let usedGauge = new pClient.Gauge({ name: 'act_fup_usage_gigabytes_total', help: 'ACT current usage in GB' });
|
||||
usedGauge.set(metrics.used);
|
||||
let totalGauge = new pClient.Gauge({ name: 'act_fup_max_gigabytes_total', help: 'ACT FUP limit in GB' });
|
||||
totalGauge.set(metrics.total)
|
||||
let register = pClient.register;
|
||||
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();
|
||||
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.set('Content-Type', register.contentType);
|
||||
res.end(register.metrics());
|
||||
});
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
res.setHeader('Content-Type', register.contentType);
|
||||
res.end(register.metrics());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
const server = http.createServer(requestHandler)
|
||||
const server = http.createServer(requestHandler);
|
||||
|
||||
server.listen(port, (err) => {
|
||||
if (err) {
|
||||
return console.log('something bad happened', err)
|
||||
}
|
||||
server.listen(port, err => {
|
||||
if (err) {
|
||||
return console.log('something bad happened', err);
|
||||
}
|
||||
|
||||
console.log(`server is listening on ${port}`)
|
||||
})
|
||||
console.log(`server is listening on ${port}`);
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue