Metrics publish working correctly

This commit is contained in:
Nemo 2018-06-04 11:06:02 +05:30
parent 00432db256
commit 473d90b069
2 changed files with 46 additions and 39 deletions

View File

@ -1,35 +1,36 @@
const puppeteer = require('puppeteer'); const puppeteer = require('puppeteer');
const MY_PACKAGE_SELECTOR_ID = 'table[style="margin-top:-10px;"] tr:first-child+tr'; const MY_PACKAGE_SELECTOR_ID =
const DATA_SELECTOR='packagecol3'; '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() { async function getUsage() {
const browser = await puppeteer.launch({ const browser = await puppeteer.launch({
executablePath: "/usr/bin/chromium-snapshot-bin", executablePath: '/usr/bin/chromium-snapshot-bin',
args: ["--proxy-server=socks5://10.8.0.14:1080"], args: ['--proxy-server=socks5://10.8.0.14:1080'],
headless: false headless: true,
}); });
const page = await browser.newPage(); const page = await browser.newPage();
await page.goto('http://portal.actcorp.in/group/blr/myaccount'); await page.goto('http://portal.actcorp.in/group/blr/myaccount');
await page.click(MY_PACKAGE_SELECTOR_ID); await page.click(MY_PACKAGE_SELECTOR_ID);
await page.waitFor(3000), await page.waitFor(3000),
text = await page.evaluate((sel) => { (text = await page.evaluate(sel => {
return document.getElementsByClassName(sel)[3].innerText; return document.getElementsByClassName(sel)[3].innerText;
}, DATA_SELECTOR); }, DATA_SELECTOR));
[used,total] = text.match(REGEX).map((x) => parseFloat(x))
browser.close(); browser.close();
[used, total] = text.match(REGEX).map(x => parseFloat(x));
return { return {
used: used, used: used,
total: total total: total,
}; };
} }
module.exports = { module.exports = {
getUsage: getUsage getUsage: getUsage,
}; };

View File

@ -5,32 +5,38 @@ const metrics = require('./index');
const collectDefaultMetrics = pClient.collectDefaultMetrics; const collectDefaultMetrics = pClient.collectDefaultMetrics;
const requestHandler = (req, res) => { const requestHandler = async (req, res) => {
switch(req.url) { let date = new Date(Date.now()).toLocaleString();
case '/metrics': console.log(`${date}: ${req.url}`);
metrics.getUsage((metrics) => { switch (req.url) {
let usedGauge = new pClient.Gauge({ name: 'act_fup_usage_gigabytes_total', help: 'ACT current usage in GB' }); case '/metrics':
usedGauge.set(metrics.used); let m = await metrics.getUsage();
let totalGauge = new pClient.Gauge({ name: 'act_fup_max_gigabytes_total', help: 'ACT FUP limit in GB' }); let usedGauge = new pClient.Gauge({
totalGauge.set(metrics.total) name: 'act_fup_usage_gigabytes_total',
let register = pClient.register; 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.setHeader('Content-Type', register.contentType);
res.end(register.metrics()); res.end(register.metrics());
}); break;
default:
break; break;
default: }
break; };
}
}
const server = http.createServer(requestHandler) const server = http.createServer(requestHandler);
server.listen(port, (err) => { server.listen(port, err => {
if (err) { if (err) {
return console.log('something bad happened', err) return console.log('something bad happened', err);
} }
console.log(`server is listening on ${port}`) console.log(`server is listening on ${port}`);
}) });