first version

This commit is contained in:
2021-03-23 13:51:35 +01:00
parent 0624ccbdcc
commit 6c6e97c9bf
7 changed files with 292 additions and 0 deletions

62
index.js Normal file
View File

@@ -0,0 +1,62 @@
var http = require('http');
var modifier = process.env.MODIFIER;
if (modifier){
modifier = require("./" + modifier );
modifier.init();
http.createServer(function(req,res){
res.writeHead(200,{"Content-Type": "text/plain"});
var data = modifier.data();
var body = "";
var globallabelstring = "";
if (data.__labels){
for (var label in data.__labels) {
if (data.__labels.hasOwnProperty(label)){
globallabelstring+=label + "=\"" + data.__labels[label] + "\",";
}
}
}
for (var prop in data) {
if (prop != "__labels" && data.hasOwnProperty(prop)) {
var labelstring = "";
if (data[prop].labels){
for (var label in data[prop].labels) {
if (data[prop].labels.hasOwnProperty(label)){
labelstring+=label + "=\"" + data[prop].labels[label] + "\",";
}
}
}
body+="# HELP " + prop + " " + data[prop].help + "\n";
if (data[prop].type == "counter"){
body+="# TYPE " + prop + " counter" + "\n";
body+=prop + "{" + globallabelstring + labelstring + "}" + " " + data[prop].value.toString() + "\n";
}else if (data[prop].type == "gauge"){
body+="# TYPE " + prop + " gauge" + "\n";
body+=prop + "{" + globallabelstring + labelstring + "}" + " " + data[prop].value.toString() + "\n";
}else if (data[prop].type == "histogram"){
body+="# TYPE " + prop + " histogram" + "\n";
for (var le in data[prop].bucket) {
if (data[prop].bucket.hasOwnProperty(le)){
body+=prop + "_bucket{le=\""+ le + "\"," + globallabelstring + labelstring + "} " + data[prop].bucket[le].toString() + "\n";
}
}
body+=prop + "_count{" + globallabelstring + labelstring + "} " + data[prop].count.toString()+ "\n";
body+=prop + "_sum{" + globallabelstring + labelstring + "} " + data[prop].sum.toString()+ "\n";
}else if (data[prop].type == "summary"){
body+="# TYPE " + prop + " summary" + "\n";
for (var q in data[prop].quantile) {
if (data[prop].quantile.hasOwnProperty(q)){
body+=prop + "{quantile=\""+ q + "\"," + globallabelstring + labelstring + "} " + data[prop].quantile[q].toString() + "\n";
}
}
body+=prop + "_count{" + globallabelstring + labelstring + "} " + data[prop].count.toString()+ "\n";
body+=prop + "_sum{" + globallabelstring + labelstring + "} " + data[prop].sum.toString()+ "\n";
}
}
}
res.end(body);
}).listen(80);
} else {
console.log("No modifier selected");
}