Browse Source

final

master
lefteris 3 years ago
parent
commit
753c90ec16
  1. 558
      swarmlab-app/src/run/app.js

558
swarmlab-app/src/run/app.js

@ -98,9 +98,7 @@ const corsOptions = {
// Lefos - get length of logs // Lefos - get length of logs
app.get("/length", cors(corsOptions), (req, res) => { app.get("/length", cors(corsOptions), (req, res) => {
console.error("getting length of logs"); console.error("getting length of logs");
var url = "mongodb://mongo:27017/"; var url = "mongodb://mongo:27017/";
MongoClient.connect( MongoClient.connect(
url, url,
{ useNewUrlParser: true, useUnifiedTopology: true }, { useNewUrlParser: true, useUnifiedTopology: true },
@ -114,59 +112,97 @@ app.get("/length", cors(corsOptions), (req, res) => {
if (err) throw err; if (err) throw err;
// EPIDI EXW NESTED JSON PREPEI NA TO KANW PARSE DUO FORES // EPIDI EXW NESTED JSON PREPEI NA TO KANW PARSE DUO FORES
var obj = JSON.parse(JSON.stringify(result)); var obj = JSON.parse(JSON.stringify(result));
var appout = 0; let containers = [];
var apperror = 0; var type;
var mongol = 0; var found = 0;
var mongolerror = 0;
var redis = 0;
var dumout = 0;
var dumerr = 0;
obj.forEach((value) => { obj.forEach((value) => {
if (value.container_name == "/mongo") { //new code
if (containers.length == 0) {
type = checkService();
if (type == "out") {
containers.push({
name: value.container_name,
lengtho: 1,
lengthe: 0,
});
} else if (type == "err") {
containers.push({
name: value.container_name,
lengtho: 0,
lengthe: 1,
});
}
} else {
containers.forEach((val) => {
if (val.name == value.container_name) {
found = 1;
type = checkService();
if (type == "out") {
val.lengtho++;
} else if (type == "err") {
val.lengthe++;
}
}
});
if (found == 0) {
type = checkService();
if (type == "out") {
containers.push({
name: value.container_name,
lengtho: 1,
lengthe: 0,
});
} else if ("error") {
containers.push({
name: value.container_name,
lengtho: 0,
lengthe: 1,
});
}
}
found = 0;
}
// new code end
function checkService() {
if (value.tag.includes("mongodb")) {
var tmp = JSON.parse(value.log); var tmp = JSON.parse(value.log);
if (tmp.s == "I") mongol++; if (tmp.s == "I") return "out";
// count every informative log as an output log // count every informative log as an output log
else if (tmp.s == "W" || tmp.s == "E") mongolerror++; //count every warning and error log else if (tmp.s == "W" || tmp.s == "E") return "err"; //count every warning and error log
} else if ( } else if (value.tag.includes("node")) {
value.container_name == "/readmongo_service" && if (IsJsonString(value.log)) var test = JSON.parse(value.log);
value.log.includes("app_name") else return "none";
) {
var test = JSON.parse(value.log);
var type = test.type;
if (type == "err") apperror++;
else appout++;
} else if (value.container_name == "/redisserver") {
redis++;
} else if (
value.container_name == "/dummy_service" &&
value.log.includes("app_name")
) {
var test = JSON.parse(value.log);
var type = test.type; var type = test.type;
if (type == "err") dumerr++; if (type == "out") return "out";
else dumout++; else return "err";
} else if (value.tag.includes("redis")) {
return "out";
}
} }
}); });
var RES = new Object(); var RES = new Object();
var data = { RES.data = containers;
mongolength: mongol,
mongolerror: mongolerror,
appout: appout,
apperror: apperror,
redis: redis,
dumout: dumout,
dumerr: dumerr,
};
RES.data = data;
// console.log("Sending Data: " + jsonfinal); // console.log("Sending Data: " + jsonfinal);
res.json(RES.data); res.json(containers);
db.close(); db.close();
}); });
} }
); );
}); });
function IsJsonString(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
app.get("/services", cors(corsOptions), (req, res) => { app.get("/services", cors(corsOptions), (req, res) => {
console.error("getting length of logs"); console.error("getting length of logs");
@ -278,6 +314,39 @@ app.get("/test", cors(corsOptions), (req, res) => {
); );
}); });
app.get("/raw", cors(corsOptions), (req, res) => {
console.log("reading from db....");
var url = "mongodb://mongo:27017/";
MongoClient.connect(
url,
{ useNewUrlParser: true, useUnifiedTopology: true },
function (err, db) {
if (err) throw err;
var dbo = db.db("fluentdb");
dbo
.collection("test")
.find({})
.toArray(function (err, result) {
if (err) throw err;
// EPIDI EXW NESTED JSON PREPEI NA TO KANW PARSE DUO FORES
var obj = JSON.parse(JSON.stringify(result));
var jsonfinal = [];
obj.forEach((value) => {
jsonfinal.push(value);
});
var RES = new Object();
RES.data = {
all: jsonfinal,
};
res.json(RES.data);
db.close();
});
}
);
});
app.get("/test2", cors(corsOptions), (req, res) => { app.get("/test2", cors(corsOptions), (req, res) => {
var RES = new Object(); var RES = new Object();
const page = req.query["page"]; const page = req.query["page"];
@ -314,31 +383,39 @@ app.get("/test2", cors(corsOptions), (req, res) => {
var obj = JSON.parse(JSON.stringify(result)); var obj = JSON.parse(JSON.stringify(result));
obj.forEach((value) => { obj.forEach((value) => {
if (value.log.includes("app_name")) { if (value.tag.includes("node") && IsJsonString(value.log)) {
var tmp = JSON.parse(value.log); var tmp = JSON.parse(value.log);
var container_name = value.container_name; var container_name = value.container_name;
var tmptype;
tmp.app_name = container_name;
if (tmp.type == "out") { if (tmp.type == "out") {
tmp.type = '<div class="outtype" >' + tmp.type + "</div>"; tmptype = '<div class="outtype" >' + tmp.type + "</div>";
} else if (tmp.type == "err") { } else if (tmp.type == "err") {
tmp.type = '<div class="errtype" >' + tmp.type + "</div>"; tmptype = '<div class="errtype" >' + tmp.type + "</div>";
} }
var tmp2 = {
message: tmp.message,
timestamp: value.time,
type: tmptype,
process_id: "-",
app_name: value.container_name,
};
// filtrarisma gia to text poy exei dwsei o xrhsths // filtrarisma gia to text poy exei dwsei o xrhsths
if ( if (
logtext != "" && logtext != "" &&
tmp.message.includes(logtext) && tmp.message.includes(logtext) &&
(container_name == selected || selected == "All") (container_name == selected || selected == "All")
) { ) {
jsonfinal.push(tmp); jsonfinal.push(tmp2);
} else if (logtext != "" && !tmp.message.includes(logtext)) { } else if (logtext != "" && !tmp.message.includes(logtext)) {
} else if ( } else if (
logtext == "" && logtext == "" &&
(container_name == selected || selected == "All") (container_name == selected || selected == "All")
) { ) {
jsonfinal.push(tmp); jsonfinal.push(tmp2);
} }
} else if ( } else if (
value.container_name == "/redisserver" && value.tag.includes("redis") &&
(value.container_name == selected || selected == "All") (value.container_name == selected || selected == "All")
) { ) {
var tmplog = value; var tmplog = value;
@ -349,12 +426,12 @@ app.get("/test2", cors(corsOptions), (req, res) => {
timestamp: time, timestamp: time,
type: "<div class= 'outtype'>out</div>", type: "<div class= 'outtype'>out</div>",
process_id: "-", process_id: "-",
app_name: "redis", app_name: value.container_name,
}; };
if (logtext == "" || tmp.message.includes(logtext)) if (logtext == "" || tmp.message.includes(logtext))
jsonfinal.push(tmp); jsonfinal.push(tmp);
} else if ( } else if (
value.container_name == "/mongo" && value.tag.includes("mongodb") &&
(value.container_name == selected || selected == "All") (value.container_name == selected || selected == "All")
) { ) {
var tmplog = JSON.parse(value.log); var tmplog = JSON.parse(value.log);
@ -367,10 +444,18 @@ app.get("/test2", cors(corsOptions), (req, res) => {
timestamp: time, timestamp: time,
type: "<div class= 'outtype'>out</div>", type: "<div class= 'outtype'>out</div>",
process_id: "-", process_id: "-",
app_name: "Mongo", app_name: value.container_name,
}; };
if (logtext == "" || tmp.message.includes(logtext)) if (logtext == "" || tmp.message.includes(logtext))
jsonfinal.push(tmp); jsonfinal.push(tmp);
} else {
var tmp = {
message: value.log,
timestamp: value.time,
type: "<div class= 'outtype'>" + value.source + "</div>",
process_id: "-",
app_name: value.container_name,
};
} }
}); });
//console.log("Sending Data: " + jsonfinal); //console.log("Sending Data: " + jsonfinal);
@ -554,6 +639,7 @@ io.on("connection", (s) => {
usersession.SOCKET.user = isvalid.user; usersession.SOCKET.user = isvalid.user;
usersession.SOCKET.scope = isvalid.scope; // space delimeter usersession.SOCKET.scope = isvalid.scope; // space delimeter
usersession.SOCKET.token = isvalid.token; usersession.SOCKET.token = isvalid.token;
usersession.SOCKET.id = s.id;
//console.log("Reply: " + rep); //console.log("Reply: " + rep);
// ----- // -----
@ -873,351 +959,6 @@ async function checkstream(data) {
); );
} }
} }
// ***************************************************
// rest get
// ***************************************************
// app.get(
// "/get_log",
// [check("token").isLength({ min: 40 })],
// cors(corsOptions),
// (req, res, next) => {
// (async () => {
// var RES = new Object();
// RES.token = req.query["token"];
// RES.start = req.query["start"];
// RES.end = req.query["end"];
// RES.swarmlabname = req.query["swarmlabname"];
// RES.ok = "ok";
// /*
// *
// * validate
// *
// */
// var isvalid = await checkToken(RES.token);
// if (isvalid.action == "ok") {
// console.log("Authserver ok " + RES.token);
// RES.error = "ok";
// } else {
// console.log("Authserver no " + RES.token);
// RES.error = "no";
// }
// if (RES.error == "ok") {
// var resdata = await getuserpipelines(
// RES.token,
// isvalid.user,
// RES.swarmlabname
// );
// var mongourl =
// "mongodb://" +
// CONFIG.mongo.user +
// ":" +
// CONFIG.mongo.password +
// "@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/swarmlabplaygroundstats?replicaSet=rs1&authSource=swarmlabplaygroundstats";
// const OPTS = {
// useNewUrlParser: true,
// useUnifiedTopology: true,
// };
// MongoClient.connect(mongourl, OPTS, function (err, client) {
// if (err) {
// console.log(err);
// } else {
// const db = client.db("swarmlabplaygroundstats");
// //usersession.SOCKET.user = isvalid.user
// console.log(JSON.stringify("mongo ----------------connected"));
// console.log("-----test------- " + JSON.stringify(RES));
// if (
// typeof RES.start !== "undefined" &&
// typeof RES.end !== "undefined"
// ) {
// if (DateTime.fromISO(RES.start).isValid) {
// var datestart = DateTime.fromISO(RES.start);
// var dateend = DateTime.fromISO(RES.end);
// var search_term = {
// $and: [
// {
// time: {
// $gte: datestart,
// },
// },
// {
// time: {
// $lt: dateend,
// },
// },
// ],
// };
// } else {
// RES.ok = "no";
// }
// } else if (typeof RES.end !== "undefined") {
// var dateend = DateTime.fromISO(RES.end);
// if (DateTime.fromISO(RES.end).isValid) {
// var search_term = {
// $and: [
// {
// time: {
// $lt: dateend,
// },
// },
// ],
// };
// } else {
// RES.ok = "no";
// }
// } else if (typeof RES.start !== "undefined") {
// var datestart = DateTime.fromISO(RES.start);
// if (DateTime.fromISO(RES.start).isValid) {
// var search_term = {
// $and: [
// {
// time: {
// $gte: datestart,
// },
// },
// ],
// };
// } else {
// RES.ok = "no";
// }
// }
// if (RES.ok == "ok") {
// //var search_term = '{"$gte": new Date("2020-12-01T00:00:00.000Z") , "$lt": new Date("2020-12-11T16:17:36.470Z") }'
// //var search_term = {"time" : {$lte : datenow}}
// var resdataarray = [];
// var resraw = {};
// var reslab = "";
// var datestart1 = DateTime.fromISO(RES.start);
// console.log("-----now1------- " + JSON.stringify(search_term));
// console.log("-----now2------- " + JSON.stringify(datestart1));
// console.log("-----now3------- " + JSON.stringify(datestart));
// db.collection("logs")
// .find(search_term)
// .toArray()
// //db.collection('logs').find({"time" : {$gt : datestart}}).toArray()
// .then((item) => {
// console.log("item " + JSON.stringify(item));
// for (let i in item) {
// reslab = item[i].tailed_path;
// var segment_array = reslab.split("/");
// var last_segment = segment_array.pop();
// var fieldstmp = last_segment.split("-");
// var nameofswarmlab = fieldstmp[0];
// var regexlog = new RegExp(nameofswarmlab);
// for (let ii in resdata.data) {
// if (regexlog.test(resdata.data[ii].res25swarmlabname)) {
// resdataarray.push(item[i]);
// RES.found = item[i];
// }
// }
// }
// RES.error_msg = "ok";
// RES.data = resdataarray;
// //RES.dataserver = resdataarray
// //RES.dataservertmp = resdata
// res.json(RES);
// })
// .catch((err) => {
// console.error(err);
// RES.error_msg = err;
// res.json(RES);
// });
// } else {
// // RES.ok
// RES.error_msg = "no date";
// res.json(RES);
// }
// } // error mongo connect
// }); // mongo connect
// } else {
// // token error
// RES.data = "no";
// RES.error_msg = "token err";
// res.json(RES);
// }
// })();
// }
// );
// app.get(
// "/run",
// [
// //check('access_token').isLength({ min: 40 }),
// //check('llo').isBase64()
// ],
// cors(corsOptions),
// (req, res, next) => {
// (async () => {
// var mongourl =
// "mongodb://" +
// CONFIG.mongo.user +
// ":" +
// CONFIG.mongo.password +
// "@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/swarmlabplaygroundstats?replicaSet=rs1&authSource=swarmlabplaygroundstats";
// const OPTS = {
// useNewUrlParser: true,
// useUnifiedTopology: true,
// };
// MongoClient.connect(mongourl, OPTS, function (err, client) {
// if (err) {
// console.log(err);
// } else {
// const db = client.db("swarmlabplaygroundstats");
// //db.collection('log', onCollection);
// console.log(JSON.stringify("mongo connected"));
// var stream = db
// .collection("logs")
// .find(
// {},
// {
// tailable: true,
// awaitdata: true,
// /* other options */
// }
// )
// .stream();
// stream.on("data", function (doc) {
// console.log(JSON.stringify(doc));
// //socket.write(JSON.stringify({'action': 'log','param': doc.log}));
// });
// }
// });
// var RES = new Object();
// RES.code = req.query["filter"];
// RES.token = req.query["filter"];
// var isvalid = await checkToken(RES.token);
// if (isvalid.action == "ok") {
// console.log("Authserver ok " + RES.token);
// } else {
// console.log("Authserver no " + RES.token);
// }
// RES.error = false;
// RES.error_msg = "ok";
// res.json(RES);
// })();
// }
// );
// // ***************************************************
// // rest post
// // ***************************************************
// app.post(
// "/run",
// [
// //check('access_token').isLength({ min: 40 }),
// //check('llo').isBase64()
// ],
// cors(corsOptions),
// (req, res, next) => {
// (async () => {
// //console.log(JSON.stringify(req.headers));
// //console.log(JSON.stringify(req.body));
// //console.log("mongo "+JSON.stringify(req.body));
// //console.log("LOG "+JSON.stringify(req.body[0].message));
// //console.log("PATH "+JSON.stringify(req.body[0].tailed_path));
// for (var i = 0; i < req.body.length; i++) {
// //var getpath = await onlogfile(req.body[i].tailed_path)
// var path = req.body[i].tailed_path;
// console.log("File", path, "has been added");
// var pathfileval = pathmodule.basename(path);
// var arrfile = pathfileval.toString().split("-");
// var pathfile = arrfile[0];
// var indexfind1 = global.pipelines.findIndex(
// (x) => x.pathlogfile == pathfileval
// );
// console.log(
// "file11111111111111111111111111111111 " + JSON.stringify(pathfileval)
// );
// if (indexfind1 === -1) {
// (async () => {
// console.log(
// "file2222222222222222222222222222222222222 " +
// JSON.stringify(pathfileval)
// );
// var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto
// var resdata = await getpipelines(token, pathfile);
// //resdata.data.pathlogfile = 'test'
// var resob = {};
// resob.pathlogfile = pathfileval;
// var resobarray = [];
// for (let i in resdata.data) {
// var resob1 = {};
// resob1.data = resdata.data[i].res25swarmlabname;
// resob1.user25user = resdata.data[i].res25user;
// resob1.res25creator = resdata.data[i].res25creator;
// resob1.res25fileforce = resdata.data[i].res25fileforce;
// resobarray.push(resob1);
// }
// resob.data = resobarray;
// //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data[0].res25swarmlabname);
// var indexfind = global.pipelines.findIndex(
// (x) => x.pathlogfile == pathfileval
// );
// //indexfind === -1 ? global.pipelines.push({resob}) : console.log("object already exists")
// indexfind === -1
// ? global.pipelines.push(resob)
// : console.log("object already exists " + pathfileval);
// //console.log('info', JSON.stringify(resdata));
// //console.log('info------------- ', JSON.stringify(global.pipelines));
// })();
// }
// //
// var obj = req.body[i];
// //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data.res25swarmlabname);
// //indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists")
// var now = new Date();
// var reslog = new Object();
// reslog.log = obj;
// reslog.date = convertDateToUTC(now);
// console.log(reslog);
// var pathfileval = pathmodule.basename(reslog.log.tailed_path);
// var indexfind = global.pipelines.findIndex(
// (x) => x.pathlogfile == pathfileval
// );
// //indexfind === -1 ? sendlog(reslog,pathfileval) : console.log("object already exists")
// indexfind === -1
// ? console.log("object not found")
// : sendlog(reslog, pathfileval);
// console.log("IOT " + JSON.stringify(reslog.log.tailed_path));
// console.log("IOTindexfind " + JSON.stringify(indexfind));
// console.log("IOTuser " + JSON.stringify(global.pipelines));
// // io.in("iot").emit("message", reslog);
// // io.emit("logdata", reslog);
// }
// })();
// //io.in("iot").emit("message", RES);
// console.error("socket POST from client");
// var RES = new Object();
// RES.error = false;
// RES.error_msg = "ok";
// RES.msg = req.body[0].messsage;
// res.json(RES);
// }
// );
// ***************************************************
// socket
// ***************************************************
//function getSHA256ofJSON(input){
// return require("crypto").createHash("sha256").update(JSON.stringify(input)).digest("hex");
//}
function sleep(ms) { function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms)); return new Promise((resolve) => setTimeout(resolve, ms));
@ -1403,32 +1144,5 @@ function onCollection(err, collection) {
}, 8000); }, 8000);
} }
/// ARXIKO MONGO CONNECTION ///
// var mongourl =
// "mongodb://" +
// CONFIG.mongo.user +
// ":" +
// CONFIG.mongo.password +
// "@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/swarmlabplaygroundstats?replicaSet=rs1&authSource=swarmlabplaygroundstats";
// const OPTS = {
// useNewUrlParser: true,
// useUnifiedTopology: true,
// };
// var mongooptions = {
// autoReconnect: true,
// keepAlive: 1,
// connectTimeoutMS: 30000,
// socketTimeoutMS: 0,
// };
// MongoClient.connect(mongourl, OPTS, function (err, client) {
// if (err) {
// console.log(err);
// } else {
// const db = client.db("swarmlabplaygroundstats");
// db.collection("logs", onCollection);
// }
// });
http.listen(3000, () => console.error("listening on http://localhost:3000/")); http.listen(3000, () => console.error("listening on http://localhost:3000/"));
console.error("socket.io example"); console.error("socket.io example");

Loading…
Cancel
Save