feat: Add node load submission and display functionality

- Implemented node load status submission in UniProxyController with dynamic cache expiration based on server push interval.
- Added log filtering capability in the admin panel for better log management and analysis.
This commit is contained in:
xboard
2025-05-24 12:31:18 +08:00
parent 61300fbcc3
commit a3700ad685
13 changed files with 270 additions and 75 deletions
File diff suppressed because one or more lines are too long
+14 -14
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+35 -1
View File
@@ -866,6 +866,7 @@ window.XBOARD_TRANSLATIONS['en-US'] = {
"save": "Save",
"cancel": "Cancel",
"confirm": "Confirm",
"close": "Close",
"delete": {
"success": "Deleted successfully",
"failed": "Failed to delete"
@@ -1061,14 +1062,36 @@ window.XBOARD_TRANSLATIONS['en-US'] = {
"level": "Level",
"time": "Time",
"message": "Message",
"logTitle": "Title",
"method": "Method",
"action": "Action",
"context": "Context",
"search": "Search logs...",
"noLogs": "No logs available",
"noInfoLogs": "No info logs available",
"noWarningLogs": "No warning logs available",
"noErrorLogs": "No error logs available",
"noSearchResults": "No matching logs found",
"detailTitle": "Log Details",
"viewDetail": "View Details",
"totalLogs": "Total logs: {{count}}"
"host": "Host",
"ip": "IP Address",
"uri": "URI",
"requestData": "Request Data",
"exception": "Exception",
"totalLogs": "Total logs: {{count}}",
"tabs": {
"all": "All",
"info": "Info",
"warning": "Warning",
"error": "Error"
},
"filter": {
"searchAndLevel": "Filter results: {{count}} logs containing \\\"{{keyword}}\\\" with level \\\"{{level}}\\\"",
"searchOnly": "Search results: {{count}} logs containing \\\"{{keyword}}\\\"",
"levelOnly": "Filter results: {{count}} logs with level \\\"{{level}}\\\"",
"reset": "Reset Filters"
}
},
"common": {
"refresh": "Refresh",
@@ -1547,6 +1570,17 @@ window.XBOARD_TRANSLATIONS['en-US'] = {
"tooltip": "Groups that can subscribe to this node",
"empty": "--"
},
"loadStatus": {
"title": "Load Status",
"tooltip": "Server resource usage",
"noData": "No Data",
"details": "System Load Details",
"cpu": "CPU Usage",
"memory": "Memory Usage",
"swap": "Swap Usage",
"disk": "Disk Usage",
"lastUpdate": "Last Updated"
},
"type": "Type",
"actions": "Actions",
"copyAddress": "Copy Connection Address",
+55
View File
@@ -864,6 +864,7 @@ window.XBOARD_TRANSLATIONS['ko-KR'] = {
"save": "저장",
"cancel": "취소",
"confirm": "확인",
"close": "닫기",
"delete": {
"success": "삭제되었습니다",
"failed": "삭제에 실패했습니다"
@@ -1070,6 +1071,49 @@ window.XBOARD_TRANSLATIONS['ko-KR'] = {
"action": "작업"
}
},
"systemLog": {
"title": "시스템 로그",
"description": "시스템 운영 로그 조회",
"viewAll": "모두 보기",
"level": "레벨",
"time": "시간",
"message": "메시지",
"logTitle": "제목",
"method": "요청 방법",
"action": "작업",
"context": "컨텍스트",
"search": "로그 검색...",
"noLogs": "로그 없음",
"noInfoLogs": "정보 로그 없음",
"noWarningLogs": "경고 로그 없음",
"noErrorLogs": "오류 로그 없음",
"noSearchResults": "일치하는 로그가 없습니다",
"detailTitle": "로그 세부 정보",
"viewDetail": "세부 정보 보기",
"host": "호스트",
"ip": "IP 주소",
"uri": "URI",
"requestData": "요청 데이터",
"exception": "예외",
"totalLogs": "총 로그 수: {{count}}",
"tabs": {
"all": "전체",
"info": "정보",
"warning": "경고",
"error": "오류"
},
"filter": {
"searchAndLevel": "필터 결과: \\\"{{keyword}}\\\"를 포함하고 레벨이 \\\"{{level}}\\\"인 로그 {{count}}개",
"searchOnly": "검색 결과: \\\"{{keyword}}\\\"를 포함하는 로그 {{count}}개",
"levelOnly": "필터 결과: 레벨이 \\\"{{level}}\\\"인 로그 {{count}}개",
"reset": "필터 초기화"
}
},
"common": {
"refresh": "새로고침",
"close": "닫기",
"pagination": "{{current}}/{{total}} 페이지, 총 {{count}}개 항목"
},
"search": {
"placeholder": "메뉴 및 기능 검색...",
"title": "메뉴 네비게이션",
@@ -1542,6 +1586,17 @@ window.XBOARD_TRANSLATIONS['ko-KR'] = {
"tooltip": "이 노드를 구독할 수 있는 그룹",
"empty": "--"
},
"loadStatus": {
"title": "부하 상태",
"tooltip": "서버 리소스 사용량",
"noData": "데이터 없음",
"details": "시스템 부하 세부정보",
"cpu": "CPU 사용률",
"memory": "메모리 사용량",
"swap": "스왑 사용량",
"disk": "디스크 사용량",
"lastUpdate": "마지막 업데이트"
},
"type": "유형",
"actions": "작업",
"copyAddress": "연결 주소 복사",
+35 -1
View File
@@ -871,6 +871,7 @@ window.XBOARD_TRANSLATIONS['zh-CN'] = {
"save": "保存",
"cancel": "取消",
"confirm": "确认",
"close": "关闭",
"delete": {
"success": "删除成功",
"failed": "删除失败"
@@ -1059,14 +1060,36 @@ window.XBOARD_TRANSLATIONS['zh-CN'] = {
"level": "级别",
"time": "时间",
"message": "消息",
"logTitle": "标题",
"method": "请求方法",
"action": "操作",
"context": "上下文",
"search": "搜索日志内容...",
"noLogs": "暂无日志记录",
"noInfoLogs": "暂无信息日志记录",
"noWarningLogs": "暂无警告日志记录",
"noErrorLogs": "暂无错误日志记录",
"noSearchResults": "没有匹配的日志记录",
"detailTitle": "日志详情",
"viewDetail": "查看详情",
"totalLogs": "总日志数:{{count}}"
"host": "主机",
"ip": "IP地址",
"uri": "URI",
"requestData": "请求数据",
"exception": "异常信息",
"totalLogs": "总日志数:{{count}}",
"tabs": {
"all": "全部",
"info": "信息",
"warning": "警告",
"error": "错误"
},
"filter": {
"searchAndLevel": "筛选结果: 包含\"{{keyword}}\"且级别为\"{{level}}\"的日志共 {{count}} 条",
"searchOnly": "搜索结果: 包含\"{{keyword}}\"的日志共 {{count}} 条",
"levelOnly": "筛选结果: 级别为\"{{level}}\"的日志共 {{count}} 条",
"reset": "重置筛选"
}
},
"common": {
"refresh": "刷新",
@@ -1514,6 +1537,17 @@ window.XBOARD_TRANSLATIONS['zh-CN'] = {
"tooltip": "可订阅到该节点的权限组",
"empty": "--"
},
"loadStatus": {
"title": "负载状态",
"tooltip": "服务器资源使用情况",
"noData": "暂无数据",
"details": "系统负载详情",
"cpu": "CPU 使用率",
"memory": "内存使用",
"swap": "交换区",
"disk": "磁盘使用",
"lastUpdate": "最后更新"
},
"type": "类型",
"actions": "操作",
"copyAddress": "复制连接地址",