diff --git a/internal/web/actions/default/clusters/cluster/node/node.go b/internal/web/actions/default/clusters/cluster/node/node.go index fb476e84..45ebdc61 100644 --- a/internal/web/actions/default/clusters/cluster/node/node.go +++ b/internal/web/actions/default/clusters/cluster/node/node.go @@ -142,13 +142,14 @@ func (this *NodeAction) RunGet(params struct { "isOn": node.IsOn, "status": maps.Map{ - "isActive": status.IsActive, - "updatedAt": status.UpdatedAt, - "hostname": status.Hostname, - "cpuUsage": status.CPUUsage, - "cpuUsageText": fmt.Sprintf("%.2f%%", status.CPUUsage*100), - "memUsage": status.MemoryUsage, - "memUsageText": fmt.Sprintf("%.2f%%", status.MemoryUsage*100), + "isActive": status.IsActive, + "updatedAt": status.UpdatedAt, + "hostname": status.Hostname, + "cpuUsage": status.CPUUsage, + "cpuUsageText": fmt.Sprintf("%.2f%%", status.CPUUsage*100), + "memUsage": status.MemoryUsage, + "memUsageText": fmt.Sprintf("%.2f%%", status.MemoryUsage*100), + "connectionCount": status.ConnectionCount, }, "group": groupMap, diff --git a/internal/web/actions/default/servers/components/index.go b/internal/web/actions/default/servers/components/index.go index ffcf9e45..92b00cfd 100644 --- a/internal/web/actions/default/servers/components/index.go +++ b/internal/web/actions/default/servers/components/index.go @@ -9,7 +9,7 @@ import ( ) const ( - SettingCodeGlobalConfig = "globalConfig" + SettingCodeServerGlobalConfig = "serverGlobalConfig" ) type IndexAction struct { @@ -22,7 +22,7 @@ func (this *IndexAction) Init() { } func (this *IndexAction) RunGet(params struct{}) { - valueJSONResp, err := this.RPC().SysSettingRPC().ReadSysSetting(this.AdminContext(), &pb.ReadSysSettingRequest{Code: SettingCodeGlobalConfig}) + valueJSONResp, err := this.RPC().SysSettingRPC().ReadSysSetting(this.AdminContext(), &pb.ReadSysSettingRequest{Code: SettingCodeServerGlobalConfig}) if err != nil { this.ErrorPage(err) return @@ -57,7 +57,7 @@ func (this *IndexAction) RunPost(params struct { // 修改配置 _, err = this.RPC().SysSettingRPC().UpdateSysSetting(this.AdminContext(), &pb.UpdateSysSettingRequest{ - Code: SettingCodeGlobalConfig, + Code: SettingCodeServerGlobalConfig, ValueJSON: params.GlobalConfigJSON, }) if err != nil { diff --git a/internal/web/actions/default/servers/server/log/history.go b/internal/web/actions/default/servers/server/log/history.go new file mode 100644 index 00000000..00f4f70b --- /dev/null +++ b/internal/web/actions/default/servers/server/log/history.go @@ -0,0 +1,87 @@ +package log + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + timeutil "github.com/iwind/TeaGo/utils/time" + "regexp" + "strings" +) + +type HistoryAction struct { + actionutils.ParentAction +} + +func (this *HistoryAction) Init() { + this.Nav("", "log", "") + this.SecondMenu("history") +} + +func (this *HistoryAction) RunGet(params struct { + ServerId int64 + Day string + + RequestId string + HasError int +}) { + if len(params.Day) == 0 { + params.Day = timeutil.Format("Y-m-d") + } + + this.Data["path"] = this.Request.URL.Path + this.Data["day"] = params.Day + this.Data["accessLogs"] = []interface{}{} + this.Data["hasError"] = params.HasError + + day := params.Day + if len(day) > 0 && regexp.MustCompile(`\d{4}-\d{2}-\d{2}`).MatchString(day) { + day = strings.ReplaceAll(day, "-", "") + size := int64(10) + + this.Data["hasError"] = params.HasError + + resp, err := this.RPC().HTTPAccessLogRPC().ListHTTPAccessLogs(this.AdminContext(), &pb.ListHTTPAccessLogsRequest{ + RequestId: params.RequestId, + ServerId: params.ServerId, + HasError: params.HasError > 0, + Day: day, + Size: size, + }) + if err != nil { + this.ErrorPage(err) + return + } + + if len(resp.AccessLogs) == 0 { + this.Data["accessLogs"] = []interface{}{} + } else { + this.Data["accessLogs"] = resp.AccessLogs + } + this.Data["hasMore"] = resp.HasMore + this.Data["nextRequestId"] = resp.RequestId + + // 上一个requestId + this.Data["hasPrev"] = false + this.Data["lastRequestId"] = "" + if len(params.RequestId) > 0 { + this.Data["hasPrev"] = true + prevResp, err := this.RPC().HTTPAccessLogRPC().ListHTTPAccessLogs(this.AdminContext(), &pb.ListHTTPAccessLogsRequest{ + RequestId: params.RequestId, + ServerId: params.ServerId, + HasError: params.HasError > 0, + Day: day, + Size: size, + Reverse: true, + }) + if err != nil { + this.ErrorPage(err) + return + } + if int64(len(prevResp.AccessLogs)) == size { + this.Data["lastRequestId"] = prevResp.RequestId + } + } + } + + this.Show() +} diff --git a/internal/web/actions/default/servers/server/log/init.go b/internal/web/actions/default/servers/server/log/init.go index 789c5258..cac0a9a4 100644 --- a/internal/web/actions/default/servers/server/log/init.go +++ b/internal/web/actions/default/servers/server/log/init.go @@ -13,6 +13,8 @@ func init() { Helper(serverutils.NewServerHelper()). Prefix("/servers/server/log"). GetPost("", new(IndexAction)). + GetPost("/today", new(TodayAction)). + GetPost("/history", new(HistoryAction)). EndAll() }) } diff --git a/internal/web/actions/default/servers/server/log/today.go b/internal/web/actions/default/servers/server/log/today.go new file mode 100644 index 00000000..0db19911 --- /dev/null +++ b/internal/web/actions/default/servers/server/log/today.go @@ -0,0 +1,71 @@ +package log + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + timeutil "github.com/iwind/TeaGo/utils/time" +) + +type TodayAction struct { + actionutils.ParentAction +} + +func (this *TodayAction) Init() { + this.Nav("", "log", "") + this.SecondMenu("today") +} + +func (this *TodayAction) RunGet(params struct { + RequestId string + ServerId int64 + HasError int +}) { + size := int64(10) + + this.Data["path"] = this.Request.URL.Path + this.Data["hasError"] = params.HasError + + resp, err := this.RPC().HTTPAccessLogRPC().ListHTTPAccessLogs(this.AdminContext(), &pb.ListHTTPAccessLogsRequest{ + RequestId: params.RequestId, + ServerId: params.ServerId, + HasError: params.HasError > 0, + Day: timeutil.Format("Ymd"), + Size: size, + }) + if err != nil { + this.ErrorPage(err) + return + } + + if len(resp.AccessLogs) == 0 { + this.Data["accessLogs"] = []interface{}{} + } else { + this.Data["accessLogs"] = resp.AccessLogs + } + this.Data["hasMore"] = resp.HasMore + this.Data["nextRequestId"] = resp.RequestId + + // 上一个requestId + this.Data["hasPrev"] = false + this.Data["lastRequestId"] = "" + if len(params.RequestId) > 0 { + this.Data["hasPrev"] = true + prevResp, err := this.RPC().HTTPAccessLogRPC().ListHTTPAccessLogs(this.AdminContext(), &pb.ListHTTPAccessLogsRequest{ + RequestId: params.RequestId, + ServerId: params.ServerId, + HasError: params.HasError > 0, + Day: timeutil.Format("Ymd"), + Size: size, + Reverse: true, + }) + if err != nil { + this.ErrorPage(err) + return + } + if int64(len(prevResp.AccessLogs)) == size { + this.Data["lastRequestId"] = prevResp.RequestId + } + } + + this.Show() +} diff --git a/internal/web/actions/default/servers/serverutils/server_helper.go b/internal/web/actions/default/servers/serverutils/server_helper.go index 4dbda08c..3d852db0 100644 --- a/internal/web/actions/default/servers/serverutils/server_helper.go +++ b/internal/web/actions/default/servers/serverutils/server_helper.go @@ -125,6 +125,16 @@ func (this *ServerHelper) createLogMenu(secondMenuItem string, serverIdString st "url": "/servers/server/log?serverId=" + serverIdString, "isActive": secondMenuItem == "index", }) + menuItems = append(menuItems, maps.Map{ + "name": "今天", + "url": "/servers/server/log/today?serverId=" + serverIdString, + "isActive": secondMenuItem == "today", + }) + menuItems = append(menuItems, maps.Map{ + "name": "历史", + "url": "/servers/server/log/history?serverId=" + serverIdString, + "isActive": secondMenuItem == "history", + }) return menuItems } diff --git a/web/public/js/components/server/http-access-log-box.js b/web/public/js/components/server/http-access-log-box.js index 3e81776d..793fda67 100644 --- a/web/public/js/components/server/http-access-log-box.js +++ b/web/public/js/components/server/http-access-log-box.js @@ -17,6 +17,6 @@ Vue.component("http-access-log-box", { } }, template: `
- {{accessLog.remoteAddr}} [{{accessLog.timeLocal}}] "{{accessLog.requestMethod}} {{accessLog.requestScheme}}://{{accessLog.host}}{{accessLog.requestURI}} {{accessLog.proto}}" {{accessLog.status}} [cached] [waf {{accessLog.attrs['waf_action']}}] - 耗时:{{formatCost(accessLog.requestTime)}} ms + {{accessLog.remoteAddr}} [{{accessLog.timeLocal}}] "{{accessLog.requestMethod}} {{accessLog.scheme}}://{{accessLog.host}}{{accessLog.requestURI}} {{accessLog.proto}}" {{accessLog.status}} [cached] [waf {{accessLog.attrs['waf_action']}}] - 耗时:{{formatCost(accessLog.requestTime)}} ms
` }) \ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/node.html b/web/views/@default/clusters/cluster/node/node.html index 277a917b..d657e9b4 100644 --- a/web/views/@default/clusters/cluster/node/node.html +++ b/web/views/@default/clusters/cluster/node/node.html @@ -104,15 +104,22 @@ - - CPU - {{node.status.cpuUsageText}} - - - 内存 - {{node.status.memUsageText}} - + + + CPU + {{node.status.cpuUsageText}} + + + 内存 + {{node.status.memUsageText}} + + + 连接数 + {{node.status.connectionCount}} + + +

每隔30秒钟更新一次运行状态。

安装信息

diff --git a/web/views/@default/servers/server/log/history.html b/web/views/@default/servers/server/log/history.html new file mode 100644 index 00000000..f4f70e14 --- /dev/null +++ b/web/views/@default/servers/server/log/history.html @@ -0,0 +1,49 @@ +{$layout} + +{$var "header"} + + + + + + +{$end} + +{$template "/left_menu"} + +
+ + 所有日志 + 错误日志 +
+
+ +
+
+ +
+
+ +
+
+
+
+
+ +

暂时还没有访问日志。

+ + + + + + +
+ +
+ 上一页 + 上一页 +   |   + 下一页 + 下一页 +
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/log/history.js b/web/views/@default/servers/server/log/history.js new file mode 100644 index 00000000..f2c07081 --- /dev/null +++ b/web/views/@default/servers/server/log/history.js @@ -0,0 +1,8 @@ +Tea.context(function () { + this.$delay(function () { + let that = this + teaweb.datepicker("day-input", function (day) { + that.day = day + }) + }) +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/log/index.css b/web/views/@default/servers/server/log/index.css deleted file mode 100644 index e69de29b..00000000 diff --git a/web/views/@default/servers/server/log/index.css.map b/web/views/@default/servers/server/log/index.css.map deleted file mode 100644 index 66dc9051..00000000 --- a/web/views/@default/servers/server/log/index.css.map +++ /dev/null @@ -1 +0,0 @@ -undefined \ No newline at end of file diff --git a/web/views/@default/servers/server/log/index.less b/web/views/@default/servers/server/log/index.less deleted file mode 100644 index e69de29b..00000000 diff --git a/web/views/@default/servers/server/log/today.html b/web/views/@default/servers/server/log/today.html new file mode 100644 index 00000000..afaa6f23 --- /dev/null +++ b/web/views/@default/servers/server/log/today.html @@ -0,0 +1,26 @@ +{$layout} + +{$template "/left_menu"} +
+ + 所有日志 + 错误日志 + + +

今天暂时还没有访问日志。

+ + + + + + +
+ +
+ 上一页 + 上一页 +   |   + 下一页 + 下一页 +
+
\ No newline at end of file