feat: show child status on group error

This commit is contained in:
Peace 2024-10-12 23:24:56 +02:00
parent dda40610c7
commit 50d6ea36a4
No known key found for this signature in database
GPG key ID: 0EF6B46E172B739F

View file

@ -382,7 +382,8 @@ class Monitor extends BeanModel {
if (children.length > 0) { if (children.length > 0) {
bean.status = UP; bean.status = UP;
bean.msg = "All children up and running"; bean.msg = "";
let errorChildNames = [];
for (const child of children) { for (const child of children) {
if (!child.active) { if (!child.active) {
// Ignore inactive childs // Ignore inactive childs
@ -399,10 +400,23 @@ class Monitor extends BeanModel {
} else if (bean.status === PENDING && lastBeat.status === DOWN) { } else if (bean.status === PENDING && lastBeat.status === DOWN) {
bean.status = lastBeat.status; bean.status = lastBeat.status;
} }
if(lastBeat && (lastBeat.status === PENDING || lastBeat.status === DOWN)) {
console.log(lastBeat.monitor_id);
const childMonitor = await Monitor.getMonitor(lastBeat.monitor_id);
console.log(childMonitor)
if(errorChildNames.length > 0)
bean.msg += "\r\n";
bean.msg += "- " + childMonitor.name + ":\r\n" + lastBeat.msg.trim().replace(/^/gm, " ");
errorChildNames.push(childMonitor.name);
}
} }
if (bean.status !== UP) { if (bean.status === UP) {
bean.msg = "Child inaccessible"; bean.msg = "All children up and running";
} else if(bean.status === PENDING || bean.status === DOWN) {
bean.msg = "Some Children are having problems (" + errorChildNames.join(', ') + ")\r\n" + bean.msg;
} }
} else { } else {
// Set status pending if group is empty // Set status pending if group is empty
@ -1604,6 +1618,20 @@ class Monitor extends BeanModel {
}; };
} }
/**
* Gets Monitor with specific ID
* @param {number} monitorID ID of monitor to get
* @returns {Promise<LooseObject<any>>} Children
*/
static async getMonitor(monitorID) {
return await R.getRow(`
SELECT * FROM monitor
WHERE id = ?
`, [
monitorID,
]);
}
/** /**
* Gets Parent of the monitor * Gets Parent of the monitor
* @param {number} monitorID ID of monitor to get * @param {number} monitorID ID of monitor to get