From 55527bba093b10cfce3a7e3d08fb2b2dbf80e67b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Mon, 30 Aug 2021 09:47:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=81=A5=E5=BA=B7=E6=A3=80=E6=9F=A5=E5=A4=B1?= =?UTF-8?q?=E8=B4=A510=E5=88=86=E9=92=9F=E5=86=85=E4=B8=8D=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/tasks/health_check_cluster_task.go | 33 +++++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/internal/tasks/health_check_cluster_task.go b/internal/tasks/health_check_cluster_task.go index 3657f4a1..f820f0b9 100644 --- a/internal/tasks/health_check_cluster_task.go +++ b/internal/tasks/health_check_cluster_task.go @@ -14,14 +14,16 @@ import ( "time" ) -// 单个集群的健康检查任务 +// HealthCheckClusterTask 单个集群的健康检查任务 type HealthCheckClusterTask struct { clusterId int64 config *serverconfigs.HealthCheckConfig ticker *utils.Ticker + + notifiedTime time.Time } -// 创建新任务 +// NewHealthCheckClusterTask 创建新任务 func NewHealthCheckClusterTask(clusterId int64, config *serverconfigs.HealthCheckConfig) *HealthCheckClusterTask { return &HealthCheckClusterTask{ clusterId: clusterId, @@ -29,7 +31,7 @@ func NewHealthCheckClusterTask(clusterId int64, config *serverconfigs.HealthChec } } -// 重置配置 +// Reset 重置配置 func (this *HealthCheckClusterTask) Reset(config *serverconfigs.HealthCheckConfig) { // 检查是否有变化 oldJSON, err := json.Marshal(this.config) @@ -48,7 +50,7 @@ func (this *HealthCheckClusterTask) Reset(config *serverconfigs.HealthCheckConfi } } -// 执行 +// Run 执行 func (this *HealthCheckClusterTask) Run() { this.Stop() @@ -77,7 +79,7 @@ func (this *HealthCheckClusterTask) Run() { this.ticker = ticker } -// 停止 +// Stop 停止 func (this *HealthCheckClusterTask) Stop() { if this.ticker == nil { return @@ -128,14 +130,19 @@ func (this *HealthCheckClusterTask) loop(seconds int64) error { } if len(failedResults) > 0 { - failedResultsJSON, err := json.Marshal(failedResults) - if err != nil { - return err - } - message := "有" + numberutils.FormatInt(len(failedResults)) + "个节点在健康检查中出现问题" - err = models.NewMessageDAO().CreateClusterMessage(nil, nodeconfigs.NodeRoleNode, this.clusterId, models.MessageTypeHealthCheckFailed, models.MessageLevelError, message, message, failedResultsJSON) - if err != nil { - return err + // 10分钟内不重复提醒 + if time.Since(this.notifiedTime) > 10*time.Minute { + this.notifiedTime = time.Now() + + failedResultsJSON, err := json.Marshal(failedResults) + if err != nil { + return err + } + message := "有" + numberutils.FormatInt(len(failedResults)) + "个节点在健康检查中出现问题" + err = models.NewMessageDAO().CreateClusterMessage(nil, nodeconfigs.NodeRoleNode, this.clusterId, models.MessageTypeHealthCheckFailed, models.MessageLevelError, message, message, failedResultsJSON) + if err != nil { + return err + } } }