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"); }