63 lines
2.4 KiB
JavaScript
63 lines
2.4 KiB
JavaScript
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");
|
|
}
|
|
|