From 023297b52d2f7adf008af78cba7854544000aa41 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Thu, 18 Apr 2024 18:18:14 +0530 Subject: [PATCH] feat: socketio health check --- .../system_health_report.js | 18 +++++++--- .../system_health_report.json | 36 +++++++++++++++++-- .../system_health_report.py | 4 ++- realtime/handlers.js | 4 +++ 4 files changed, 54 insertions(+), 8 deletions(-) diff --git a/frappe/desk/doctype/system_health_report/system_health_report.js b/frappe/desk/doctype/system_health_report/system_health_report.js index 2c757a7c18..7e73e125b4 100644 --- a/frappe/desk/doctype/system_health_report/system_health_report.js +++ b/frappe/desk/doctype/system_health_report/system_health_report.js @@ -1,8 +1,16 @@ // Copyright (c) 2024, Frappe Technologies and contributors // For license information, please see license.txt -// frappe.ui.form.on("System Health Report", { -// refresh(frm) { - -// }, -// }); +frappe.ui.form.on("System Health Report", { + refresh(frm) { + frm.set_value("socketio_ping_check", "Fail"); + frappe.realtime.on("pong", () => { + frm.set_value("socketio_ping_check", "Pass"); + frm.set_value( + "socketio_transport_mode", + frappe.realtime.socket.io?.engine?.transport?.name + ); + }); + frappe.realtime.emit("ping"); + }, +}); diff --git a/frappe/desk/doctype/system_health_report/system_health_report.json b/frappe/desk/doctype/system_health_report/system_health_report.json index 9bdb65d4e6..47f60c1e71 100644 --- a/frappe/desk/doctype/system_health_report/system_health_report.json +++ b/frappe/desk/doctype/system_health_report/system_health_report.json @@ -4,6 +4,7 @@ "doctype": "DocType", "engine": "InnoDB", "field_order": [ + "background_jobs_tab", "background_jobs_section", "scheduler_status", "column_break_klex", @@ -11,7 +12,11 @@ "section_break_djoz", "queue_status", "column_break_wjoz", - "background_workers" + "background_workers", + "realtime_tab", + "socketio_ping_check", + "column_break_hgay", + "socketio_transport_mode" ], "fields": [ { @@ -52,6 +57,33 @@ { "fieldname": "column_break_wjoz", "fieldtype": "Column Break" + }, + { + "fieldname": "background_jobs_tab", + "fieldtype": "Tab Break", + "label": "Background Jobs" + }, + { + "fieldname": "realtime_tab", + "fieldtype": "Tab Break", + "label": "Realtime" + }, + { + "default": "Fail", + "fieldname": "socketio_ping_check", + "fieldtype": "Select", + "label": "SocketIO Ping Check", + "options": "Fail\nPass" + }, + { + "fieldname": "column_break_hgay", + "fieldtype": "Column Break" + }, + { + "fieldname": "socketio_transport_mode", + "fieldtype": "Select", + "label": "SocketIO Transport Mode", + "options": "Polling\nWebsocket" } ], "hide_toolbar": 1, @@ -59,7 +91,7 @@ "is_virtual": 1, "issingle": 1, "links": [], - "modified": "2024-04-18 17:44:06.856892", + "modified": "2024-04-18 18:11:05.830332", "modified_by": "Administrator", "module": "Desk", "name": "System Health Report", diff --git a/frappe/desk/doctype/system_health_report/system_health_report.py b/frappe/desk/doctype/system_health_report/system_health_report.py index 48eba3a401..51d8939caa 100644 --- a/frappe/desk/doctype/system_health_report/system_health_report.py +++ b/frappe/desk/doctype/system_health_report/system_health_report.py @@ -4,7 +4,7 @@ Basic system health check report to see how everything on site is functioning in one single page. Metrics: -- [ ] Background jobs, workers and scheduler summary, queue stats +- [x] Background jobs, workers and scheduler summary, queue stats - [ ] SocketIO works (using basic ping test) - [ ] Email queue flush and pull - [ ] Error logs status @@ -42,6 +42,8 @@ class SystemHealthReport(Document): background_workers: DF.Table[SystemHealthWorkers] queue_status: DF.Table[SystemHealthQueue] scheduler_status: DF.Data | None + socketio_ping_check: DF.Literal["Fail", "Pass"] + socketio_transport_mode: DF.Literal["Polling", "Websocket"] total_background_workers: DF.Int # end: auto-generated types diff --git a/realtime/handlers.js b/realtime/handlers.js index ca7163c751..1897ca8db6 100644 --- a/realtime/handlers.js +++ b/realtime/handlers.js @@ -26,6 +26,10 @@ function frappe_handlers(socket) { }); }; + socket.on("ping", () => { + socket.emit("pong"); + }); + socket.on("doctype_subscribe", function (doctype) { socket.has_permission(doctype).then(() => { socket.join(doctype_room(doctype));