diff --git a/server/model/monitor.js b/server/model/monitor.js index 5b7e5871a..5cafe9a07 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -382,7 +382,8 @@ class Monitor extends BeanModel { if (children.length > 0) { bean.status = UP; - bean.msg = "All children up and running"; + bean.msg = ""; + let errorChildNames = []; for (const child of children) { if (!child.active) { // Ignore inactive childs @@ -399,11 +400,24 @@ class Monitor extends BeanModel { } else if (bean.status === PENDING && lastBeat.status === DOWN) { 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) { - bean.msg = "Child inaccessible"; - } + if (bean.status === UP) { + 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 { // Set status pending if group is empty bean.status = PENDING; @@ -1604,6 +1618,20 @@ class Monitor extends BeanModel { }; } + /** + * Gets Monitor with specific ID + * @param {number} monitorID ID of monitor to get + * @returns {Promise>} Children + */ + static async getMonitor(monitorID) { + return await R.getRow(` + SELECT * FROM monitor + WHERE id = ? + `, [ + monitorID, + ]); + } + /** * Gets Parent of the monitor * @param {number} monitorID ID of monitor to get