Adds prom client
This commit is contained in:
parent
788568ecdf
commit
00432db256
21
index.js
21
index.js
|
@ -5,11 +5,11 @@ const DATA_SELECTOR='packagecol3';
|
||||||
|
|
||||||
const REGEX = /\d+\.\d{0,2}/g
|
const REGEX = /\d+\.\d{0,2}/g
|
||||||
|
|
||||||
async function run() {
|
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: false
|
||||||
});
|
});
|
||||||
|
|
||||||
const page = await browser.newPage();
|
const page = await browser.newPage();
|
||||||
|
@ -17,12 +17,19 @@ async function run() {
|
||||||
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))
|
[used,total] = text.match(REGEX).map((x) => parseFloat(x))
|
||||||
|
|
||||||
browser.close();
|
browser.close();
|
||||||
|
|
||||||
|
return {
|
||||||
|
used: used,
|
||||||
|
total: total
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
run()
|
module.exports = {
|
||||||
|
getUsage: getUsage
|
||||||
|
};
|
|
@ -22,6 +22,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||||
},
|
},
|
||||||
|
"bintrees": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-DmVcm5wkNeqraL9AJyJtK1WjRSQ="
|
||||||
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
|
@ -212,6 +217,14 @@
|
||||||
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
|
||||||
"integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8="
|
"integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8="
|
||||||
},
|
},
|
||||||
|
"prom-client": {
|
||||||
|
"version": "11.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/prom-client/-/prom-client-11.0.0.tgz",
|
||||||
|
"integrity": "sha512-UM4uYDwmA7x9yTq+AZcL4lU/XF11RkbQWbIouFaVMLxdV4qBB5CEmEosQlR1lGvduBuS1IWonHFh1WBtFSoZ3A==",
|
||||||
|
"requires": {
|
||||||
|
"tdigest": "^0.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"proxy-from-env": {
|
"proxy-from-env": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
|
||||||
|
@ -267,6 +280,14 @@
|
||||||
"safe-buffer": "~5.1.0"
|
"safe-buffer": "~5.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"tdigest": {
|
||||||
|
"version": "0.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.1.tgz",
|
||||||
|
"integrity": "sha1-Ljyyw56kSeVdHmzZEReszKRYgCE=",
|
||||||
|
"requires": {
|
||||||
|
"bintrees": "1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"typedarray": {
|
"typedarray": {
|
||||||
"version": "0.0.6",
|
"version": "0.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
"author": "Nemo <npm@captnemo.in>",
|
"author": "Nemo <npm@captnemo.in>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"prom-client": "^11.0.0",
|
||||||
"puppeteer": "^1.4.0"
|
"puppeteer": "^1.4.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
const http = require('http');
|
||||||
|
const port = 3000;
|
||||||
|
const pClient = require('prom-client');
|
||||||
|
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;
|
||||||
|
|
||||||
|
res.set('Content-Type', register.contentType);
|
||||||
|
res.end(register.metrics());
|
||||||
|
});
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const server = http.createServer(requestHandler)
|
||||||
|
|
||||||
|
server.listen(port, (err) => {
|
||||||
|
if (err) {
|
||||||
|
return console.log('something bad happened', err)
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`server is listening on ${port}`)
|
||||||
|
})
|
Loading…
Reference in New Issue