From ee24baf7d6855a00658c62303ec60cb8dd9a5348 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Wed, 23 Mar 2022 17:31:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E4=BF=AE=E5=A4=8D=E5=8D=95?= =?UTF-8?q?=E9=A1=B5=E6=88=96=E8=80=85=E5=85=A8=E9=83=A8=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fixLog.go => clusters/logs/fix.go} | 15 ++++- .../actions/default/clusters/logs/fixAll.go | 25 +++++++ .../actions/default/clusters/logs/index.go | 46 +++++++++++-- .../web/actions/default/clusters/logs/init.go | 2 + internal/web/actions/default/servers/index.go | 65 ++----------------- internal/web/actions/default/servers/init.go | 1 - web/views/@default/clusters/logs/@menu.html | 1 + web/views/@default/clusters/logs/index.html | 18 ++++- web/views/@default/clusters/logs/index.js | 50 +++++++++++--- web/views/@default/servers/index.html | 22 ++----- web/views/@default/servers/index.js | 37 ----------- 11 files changed, 144 insertions(+), 138 deletions(-) rename internal/web/actions/default/{servers/fixLog.go => clusters/logs/fix.go} (55%) create mode 100644 internal/web/actions/default/clusters/logs/fixAll.go diff --git a/internal/web/actions/default/servers/fixLog.go b/internal/web/actions/default/clusters/logs/fix.go similarity index 55% rename from internal/web/actions/default/servers/fixLog.go rename to internal/web/actions/default/clusters/logs/fix.go index 09d40379..22dca5f4 100644 --- a/internal/web/actions/default/servers/fixLog.go +++ b/internal/web/actions/default/clusters/logs/fix.go @@ -1,19 +1,28 @@ // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. -package servers +package logs import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/types" + "strings" ) -type FixLogAction struct { +type FixAction struct { actionutils.ParentAction } -func (this *FixLogAction) RunPost(params struct { +func (this *FixAction) RunPost(params struct { LogIds []int64 }) { + var logIdStrings = []string{} + for _, logId := range params.LogIds { + logIdStrings = append(logIdStrings, types.String(logId)) + } + + defer this.CreateLogInfo("设置日志 %s 为已修复", strings.Join(logIdStrings, ", ")) + _, err := this.RPC().NodeLogRPC().FixNodeLogs(this.AdminContext(), &pb.FixNodeLogsRequest{NodeLogIds: params.LogIds}) if err != nil { this.ErrorPage(err) diff --git a/internal/web/actions/default/clusters/logs/fixAll.go b/internal/web/actions/default/clusters/logs/fixAll.go new file mode 100644 index 00000000..8ffb541c --- /dev/null +++ b/internal/web/actions/default/clusters/logs/fixAll.go @@ -0,0 +1,25 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package logs + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" +) + +type FixAllAction struct { + actionutils.ParentAction +} + +func (this *FixAllAction) RunPost(params struct { +}) { + defer this.CreateLogInfo("设置所有日志为已修复") + + _, err := this.RPC().NodeLogRPC().FixAllNodeLogs(this.AdminContext(), &pb.FixAllNodeLogsRequest{}) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/clusters/logs/index.go b/internal/web/actions/default/clusters/logs/index.go index febe6d9f..7d6801de 100644 --- a/internal/web/actions/default/clusters/logs/index.go +++ b/internal/web/actions/default/clusters/logs/index.go @@ -3,8 +3,10 @@ package logs import ( "github.com/TeaOSLab/EdgeAdmin/internal/utils/nodelogutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/configutils" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/lists" "github.com/iwind/TeaGo/maps" timeutil "github.com/iwind/TeaGo/utils/time" ) @@ -14,8 +16,11 @@ type IndexAction struct { } func (this *IndexAction) Init() { - if this.ParamString("type") == "unread" { + var paramType = this.ParamString("type") + if paramType == "unread" { this.FirstMenu("unread") + } else if paramType == "needFix" { + this.FirstMenu("needFix") } else { this.FirstMenu("index") } @@ -26,7 +31,7 @@ func (this *IndexAction) RunGet(params struct { DayTo string Keyword string Level string - Type string + Type string // unread, needFix Tag string ClusterId int64 NodeId int64 @@ -40,6 +45,13 @@ func (this *IndexAction) RunGet(params struct { this.Data["clusterId"] = params.ClusterId this.Data["nodeId"] = params.NodeId + var fixedState configutils.BoolState = 0 + var allServers = false + if params.Type == "needFix" { + fixedState = configutils.BoolStateNo + allServers = true + } + // 常见标签 this.Data["tags"] = nodelogutils.FindNodeCommonTags() @@ -54,6 +66,18 @@ func (this *IndexAction) RunGet(params struct { } this.Data["countUnreadLogs"] = countUnreadResp.Count + // 需要修复数量 + countNeedFixResp, err := this.RPC().NodeLogRPC().CountNodeLogs(this.AdminContext(), &pb.CountNodeLogsRequest{ + Role: nodeconfigs.NodeRoleNode, + AllServers: true, + FixedState: int32(configutils.BoolStateNo), + }) + if err != nil { + this.ErrorPage(err) + return + } + this.Data["countNeedFixLogs"] = countNeedFixResp.Count + // 日志数量 countResp, err := this.RPC().NodeLogRPC().CountNodeLogs(this.AdminContext(), &pb.CountNodeLogsRequest{ NodeClusterId: params.ClusterId, @@ -65,13 +89,15 @@ func (this *IndexAction) RunGet(params struct { Level: params.Level, IsUnread: params.Type == "unread", Tag: params.Tag, + FixedState: int32(fixedState), + AllServers: allServers, }) if err != nil { this.ErrorPage(err) return } - count := countResp.Count - page := this.NewPage(count) + var count = countResp.Count + var page = this.NewPage(count) this.Data["page"] = page.AsHTML() logsResp, err := this.RPC().NodeLogRPC().ListNodeLogs(this.AdminContext(), &pb.ListNodeLogsRequest{ @@ -84,6 +110,8 @@ func (this *IndexAction) RunGet(params struct { Level: params.Level, IsUnread: params.Type == "unread", Tag: params.Tag, + FixedState: int32(fixedState), + AllServers: allServers, Offset: page.Offset, Size: page.Size, }) @@ -92,14 +120,14 @@ func (this *IndexAction) RunGet(params struct { return } - logs := []maps.Map{} + var logs = []maps.Map{} for _, log := range logsResp.NodeLogs { // 节点信息 nodeResp, err := this.RPC().NodeRPC().FindEnabledNode(this.AdminContext(), &pb.FindEnabledNodeRequest{NodeId: log.NodeId}) if err != nil { continue } - node := nodeResp.Node + var node = nodeResp.Node if node == nil || node.NodeCluster == nil { continue } @@ -118,6 +146,11 @@ func (this *IndexAction) RunGet(params struct { } } + var isFixed = true + if !log.IsFixed && log.ServerId > 0 && lists.ContainsString([]string{"success", "warning", "error"}, log.Level) { + isFixed = false + } + logs = append(logs, maps.Map{ "id": log.Id, "tag": log.Tag, @@ -127,6 +160,7 @@ func (this *IndexAction) RunGet(params struct { "isToday": timeutil.FormatTime("Y-m-d", log.CreatedAt) == timeutil.Format("Y-m-d"), "count": log.Count, "isRead": log.IsRead, + "isFixed": isFixed, "node": maps.Map{ "id": node.Id, "cluster": maps.Map{ diff --git a/internal/web/actions/default/clusters/logs/init.go b/internal/web/actions/default/clusters/logs/init.go index eb5a6c06..19cc5e54 100644 --- a/internal/web/actions/default/clusters/logs/init.go +++ b/internal/web/actions/default/clusters/logs/init.go @@ -16,6 +16,8 @@ func init() { Get("", new(IndexAction)). Post("/readLogs", new(ReadLogsAction)). Post("/readAllLogs", new(ReadAllLogsAction)). + Post("/fix", new(FixAction)). + Post("/fixAll", new(FixAllAction)). EndAll() }) } diff --git a/internal/web/actions/default/servers/index.go b/internal/web/actions/default/servers/index.go index c34bb6b0..f18c5d1c 100644 --- a/internal/web/actions/default/servers/index.go +++ b/internal/web/actions/default/servers/index.go @@ -5,7 +5,6 @@ import ( "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/configutils" - "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/iwind/TeaGo/maps" @@ -260,72 +259,16 @@ func (this *IndexAction) RunGet(params struct { // 是否有用户管理权限 this.Data["canVisitUser"] = configloaders.AllowModule(this.AdminId(), configloaders.AdminModuleCodeUser) - // 显示服务相关的日志 - errorLogsResp, err := this.RPC().NodeLogRPC().ListNodeLogs(this.AdminContext(), &pb.ListNodeLogsRequest{ - NodeId: 0, - Role: nodeconfigs.NodeRoleNode, - Offset: 0, - Size: 20, - Level: "error,success,warning", - FixedState: int32(configutils.BoolStateNo), + // 显示服务需要修复的日志数量 + countNeedFixLogsResp, err := this.RPC().NodeLogRPC().CountNodeLogs(this.AdminContext(), &pb.CountNodeLogsRequest{ AllServers: true, + FixedState: int32(configutils.BoolStateNo), }) if err != nil { this.ErrorPage(err) return } - errorLogMaps := []maps.Map{} - for _, errorLog := range errorLogsResp.NodeLogs { - serverResp, err := this.RPC().ServerRPC().FindEnabledUserServerBasic(this.AdminContext(), &pb.FindEnabledUserServerBasicRequest{ServerId: errorLog.ServerId}) - if err != nil { - this.ErrorPage(err) - return - } - - // 服务 - var server = serverResp.Server - if server == nil { - // 设置为已修复 - _, err = this.RPC().NodeLogRPC().FixNodeLogs(this.AdminContext(), &pb.FixNodeLogsRequest{NodeLogIds: []int64{errorLog.Id}}) - if err != nil { - this.ErrorPage(err) - return - } - - continue - } - - // 节点 - nodeResp, err := this.RPC().NodeRPC().FindEnabledNode(this.AdminContext(), &pb.FindEnabledNodeRequest{NodeId: errorLog.NodeId}) - if err != nil { - this.ErrorPage(err) - return - } - var node = nodeResp.Node - if node == nil || node.NodeCluster == nil { - // 设置为已修复 - _, err = this.RPC().NodeLogRPC().FixNodeLogs(this.AdminContext(), &pb.FixNodeLogsRequest{NodeLogIds: []int64{errorLog.Id}}) - if err != nil { - this.ErrorPage(err) - return - } - - continue - } - - errorLogMaps = append(errorLogMaps, maps.Map{ - "id": errorLog.Id, - "description": errorLog.Description, - "createdTime": timeutil.FormatTime("Y-m-d H:i:s", errorLog.CreatedAt), - "serverId": errorLog.ServerId, - "level": errorLog.Level, - "serverName": server.Name, - "nodeId": node.Id, - "nodeName": node.Name, - "clusterId": node.NodeCluster.Id, - }) - } - this.Data["errorLogs"] = errorLogMaps + this.Data["countNeedFixLogs"] = countNeedFixLogsResp.Count this.Show() } diff --git a/internal/web/actions/default/servers/init.go b/internal/web/actions/default/servers/init.go index 0425486e..622bd2cc 100644 --- a/internal/web/actions/default/servers/init.go +++ b/internal/web/actions/default/servers/init.go @@ -17,7 +17,6 @@ func init() { Get("", new(IndexAction)). GetPost("/create", new(CreateAction)). GetPost("/update", new(UpdateAction)). - Post("/fixLog", new(FixLogAction)). Post("/nearby", new(NearbyAction)). // diff --git a/web/views/@default/clusters/logs/@menu.html b/web/views/@default/clusters/logs/@menu.html index 356f5ded..c6d1050e 100644 --- a/web/views/@default/clusters/logs/@menu.html +++ b/web/views/@default/clusters/logs/@menu.html @@ -1,4 +1,5 @@ 所有 未读({{countUnreadLogs}}) + 需修复({{countNeedFixLogs}}) \ No newline at end of file diff --git a/web/views/@default/clusters/logs/index.html b/web/views/@default/clusters/logs/index.html index 80964695..5e2738e2 100644 --- a/web/views/@default/clusters/logs/index.html +++ b/web/views/@default/clusters/logs/index.html @@ -46,6 +46,7 @@ +
@@ -54,7 +55,17 @@
-

暂时还没有日志。

+ +
+
+ + [本页已修复] + [全部已修复] + +

已合并重复内容,当前显示数据和总数量可能不一致。

+
+ +

暂时还没有未读需修复日志。

@@ -62,7 +73,7 @@ - + @@ -72,7 +83,8 @@
集群 节点 信息操作操作
- 已读 + 已修复 + 已读
diff --git a/web/views/@default/clusters/logs/index.js b/web/views/@default/clusters/logs/index.js index a8e6be5b..a2a6de48 100644 --- a/web/views/@default/clusters/logs/index.js +++ b/web/views/@default/clusters/logs/index.js @@ -18,8 +18,43 @@ Tea.context(function () { let logIds = this.logs.map(function (v) { return v.id }) - teaweb.confirm("确定要设置本页日志为已读吗?", function () { - this.$post(".readLogs") + this.$post(".readLogs") + .params({ + logIds: logIds + }) + .success(function () { + teaweb.reload() + }) + } + + this.updateAllRead = function () { + this.$post(".readAllLogs") + .params({}) + .success(function () { + teaweb.reload() + }) + } + + this.changeCluster = function (clusterId) { + this.clusterId = clusterId + } + + this.fixLog = function (logId) { + this.$post(".fixLogs") + .params({ + logIds: [logId] + }) + .success(function () { + teaweb.reload() + }) + } + + this.fixPageLogs = function () { + let logIds = this.logs.map(function (v) { + return v.id + }) + teaweb.confirm("确定已修复并消除当前页的问题?", function () { + this.$post(".fix") .params({ logIds: logIds }) @@ -29,17 +64,12 @@ Tea.context(function () { }) } - this.updateAllRead = function () { - teaweb.confirm("确定要设置所有日志为已读吗?", function () { - this.$post(".readAllLogs") - .params({}) + this.fixAllLogs = function () { + teaweb.confirm("确定已修复并消除所有的问题?", function () { + this.$post(".fixAll") .success(function () { teaweb.reload() }) }) } - - this.changeCluster = function (clusterId) { - this.clusterId = clusterId - } }) \ No newline at end of file diff --git a/web/views/@default/servers/index.html b/web/views/@default/servers/index.html index 077715bf..b7daf70d 100644 --- a/web/views/@default/servers/index.html +++ b/web/views/@default/servers/index.html @@ -2,24 +2,12 @@ {$template "menu"} -
+
- -
-
- -
- [{{log.createdTime}}] - [节点:{{log.nodeName}}] - [服务:{{log.serverName}}][服务] - [错误] - [成功] - {{log.description}} -
- -
+ +
diff --git a/web/views/@default/servers/index.js b/web/views/@default/servers/index.js index 8810bb84..9d455b2c 100644 --- a/web/views/@default/servers/index.js +++ b/web/views/@default/servers/index.js @@ -46,41 +46,4 @@ Tea.context(function () { this.showLatest = function () { this.latestVisible = !this.latestVisible } - - /** - * 错误日志相关 - */ - this.fixLog = function (logId) { - let that = this - teaweb.confirm("确定要关闭此错误提示吗?", function () { - that.$post(".fixLog") - .params({ - logIds: logId - }) - .success(function () { - teaweb.reload() - }) - }) - } - - this.fixPageLogs = function () { - let logIds = this.errorLogs.map(function (v) { - return v.id - }) - if (logIds.length == 0) { - teaweb.reload() - return - } - - let that = this - teaweb.confirm("确定要关闭此页错误提示吗?", function () { - that.$post(".fixLog") - .params({ - logIds: logIds - }) - .success(function () { - teaweb.reload() - }) - }) - } }) \ No newline at end of file