From 37caaf9cbc9c30382c6ffeba13155a591c8972ec Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Fri, 3 Nov 2023 09:54:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=82=E7=82=B9=E5=81=A5=E5=BA=B7=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=A4=B1=E8=B4=A5=E6=97=B6=E5=A2=9E=E5=8A=A0=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E5=90=8D=E7=A7=B0=E5=92=8C=E8=8A=82=E7=82=B9IP?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/message_dao.go | 7 +++-- internal/db/models/message_dao_test.go | 2 +- internal/db/models/message_task_dao_test.go | 14 ---------- internal/tasks/health_check_cluster_task.go | 30 +++++++++++++++++++-- 4 files changed, 34 insertions(+), 19 deletions(-) diff --git a/internal/db/models/message_dao.go b/internal/db/models/message_dao.go index 405c84dd..1e5a7bb3 100644 --- a/internal/db/models/message_dao.go +++ b/internal/db/models/message_dao.go @@ -111,8 +111,11 @@ func (this *MessageDAO) FindEnabledMessage(tx *dbs.Tx, id int64) (*Message, erro } // CreateClusterMessage 创建集群消息 -func (this *MessageDAO) CreateClusterMessage(tx *dbs.Tx, role string, clusterId int64, messageType MessageType, level string, subject string, body string, paramsJSON []byte) error { - _, err := this.createMessage(tx, role, clusterId, 0, messageType, level, subject, body, paramsJSON) +func (this *MessageDAO) CreateClusterMessage(tx *dbs.Tx, role string, clusterId int64, messageType MessageType, level string, subject string, shortBody string, body string, paramsJSON []byte) error { + if len(shortBody) == 0 { + shortBody = body + } + _, err := this.createMessage(tx, role, clusterId, 0, messageType, level, subject, shortBody, paramsJSON) if err != nil { return err } diff --git a/internal/db/models/message_dao_test.go b/internal/db/models/message_dao_test.go index ead42881..ceb19a67 100644 --- a/internal/db/models/message_dao_test.go +++ b/internal/db/models/message_dao_test.go @@ -12,7 +12,7 @@ func TestMessageDAO_CreateClusterMessage(t *testing.T) { var tx *dbs.Tx dao := NewMessageDAO() - err := dao.CreateClusterMessage(tx, nodeconfigs.NodeRoleNode, 1, "test", "error", "123", "123", []byte("456")) + err := dao.CreateClusterMessage(tx, nodeconfigs.NodeRoleNode, 1, "test", "error", "123", "123", "123", []byte("456")) if err != nil { t.Fatal(err) } diff --git a/internal/db/models/message_task_dao_test.go b/internal/db/models/message_task_dao_test.go index dd614842..db9c37f6 100644 --- a/internal/db/models/message_task_dao_test.go +++ b/internal/db/models/message_task_dao_test.go @@ -8,20 +8,6 @@ import ( "testing" ) -func TestMessageTaskDAO_FindSendingMessageTasks(t *testing.T) { - dbs.NotifyReady() - - var tx *dbs.Tx - tasks, err := models.NewMessageTaskDAO().FindSendingMessageTasks(tx, 100) - if err != nil { - t.Fatal(err) - } - t.Log(len(tasks), "tasks") - for _, task := range tasks { - t.Log("task:", task.Id, "recipient:", task.RecipientId) - } -} - func TestMessageTaskDAO_CleanExpiredMessageTasks(t *testing.T) { var dao = models.NewMessageTaskDAO() var tx *dbs.Tx diff --git a/internal/tasks/health_check_cluster_task.go b/internal/tasks/health_check_cluster_task.go index f3deefd1..1264699e 100644 --- a/internal/tasks/health_check_cluster_task.go +++ b/internal/tasks/health_check_cluster_task.go @@ -10,6 +10,8 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/iwind/TeaGo/maps" + "github.com/iwind/TeaGo/types" + "strings" "time" ) @@ -127,8 +129,32 @@ func (this *HealthCheckClusterTask) Loop() error { if err != nil { return err } - var message = "有" + numberutils.FormatInt(len(failedResults)) + "个节点IP在健康检查中出现问题" - err = models.NewMessageDAO().CreateClusterMessage(nil, nodeconfigs.NodeRoleNode, this.clusterId, models.MessageTypeHealthCheckFailed, models.MessageLevelError, message, message, failedResultsJSON) + var subject = "有" + numberutils.FormatInt(len(failedResults)) + "个节点IP在健康检查中出现问题" + var message = "有" + numberutils.FormatInt(len(failedResults)) + "个节点IP在健康检查中出现问题:" + var failedDescriptions = []string{} + var failedIndex int + for _, result := range results { + if result.IsOk || result.Node == nil { + continue + } + failedIndex++ + failedDescriptions = append(failedDescriptions, "节点"+types.String(failedIndex)+":"+result.Node.Name+",IP:"+result.NodeAddr) + } + + const maxNodeDescriptions = 10 + var isOverMax = false + if len(failedDescriptions) > maxNodeDescriptions { + failedDescriptions = failedDescriptions[:maxNodeDescriptions] + isOverMax = true + } + message += strings.Join(failedDescriptions, ";") + if isOverMax { + message += " ..." + } else { + message += "。" + } + + err = models.NewMessageDAO().CreateClusterMessage(nil, nodeconfigs.NodeRoleNode, this.clusterId, models.MessageTypeHealthCheckFailed, models.MessageLevelError, subject, subject, message, failedResultsJSON) if err != nil { return err }