This is an automated email from the ASF dual-hosted git repository.

zhongxjian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-kubernetes.git


The following commit(s) were added to refs/heads/master by this push:
     new 953f0d11 [horus] Self-healing operational repair (#350)
953f0d11 is described below

commit 953f0d1155a31e373a844a14e2a828fd276b40ca
Author: mfordjody <[email protected]>
AuthorDate: Tue Sep 17 17:27:38 2024 +0800

    [horus] Self-healing operational repair (#350)
---
 app/horus/core/alert/dingtalk.go   |  2 +-
 app/horus/core/horuser/modular.go  |  4 ++--
 app/horus/core/horuser/recovery.go | 18 +++++++++++-------
 deploy/horus/horus.yaml            | 14 +++++++-------
 4 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/app/horus/core/alert/dingtalk.go b/app/horus/core/alert/dingtalk.go
index e67e194e..94c6e4a8 100644
--- a/app/horus/core/alert/dingtalk.go
+++ b/app/horus/core/alert/dingtalk.go
@@ -55,7 +55,7 @@ type Message struct {
 func DingTalkSend(dk *config.DingTalkConfiguration, msg string) {
        dtm := Message{MsgType: "text"}
        dtm.Text.Content = fmt.Sprintf("%s\n"+
-               "【日志:%s】", DingTalkTitle, msg)
+               "日志:%s】", DingTalkTitle, msg)
        dtm.At.AtMobiles = dk.AtMobiles
        bs, err := json.Marshal(dtm)
        if err != nil {
diff --git a/app/horus/core/horuser/modular.go 
b/app/horus/core/horuser/modular.go
index 3a34d7e1..bd3445d4 100644
--- a/app/horus/core/horuser/modular.go
+++ b/app/horus/core/horuser/modular.go
@@ -111,13 +111,13 @@ func (h *Horuser) CustomizeModularNodes(clusterName, 
moduleName, nodeName, ip st
                return
        }
        err = h.Cordon(nodeName, clusterName)
-       res := "success"
+       res := "Success"
        if err != nil {
                res = fmt.Sprintf("failed:%v", err)
                klog.Errorf("Cordon failed:%v", res)
        }
 
-       msg := fmt.Sprintf("【集群:%v】\n 【%s 插件 Cordon 节点:%v】\n 【结果: %v】\n 
【今日操作次数:%v】",
+       msg := fmt.Sprintf("【集群:%v】\n 【%s 插件 Cordon 节点:%v】\n 【结果: %v】\n 
【今日操作次数:%v",
                clusterName, moduleName, nodeName, res, len(data)+1)
 
        klog.Infof("Attempting to send DingTalk message: %s", msg)
diff --git a/app/horus/core/horuser/recovery.go 
b/app/horus/core/horuser/recovery.go
index 51d33fe3..5f7fd47d 100644
--- a/app/horus/core/horuser/recovery.go
+++ b/app/horus/core/horuser/recovery.go
@@ -60,25 +60,29 @@ func (h *Horuser) recoveryNodes(n *db.NodeDataInfo) {
                klog.Infof("clusterName:%v nodeName:%v", n.ClusterName, 
n.NodeName)
                return
        }
-       ql := fmt.Sprintf(n.RecoveryQL, n.NodeName)
-       vecs, err := h.InstantQuery(addr, ql, n.ClusterName, 
h.cc.NodeRecovery.PromQueryTimeSecond)
+
+       vecs, err := h.InstantQuery(addr, n.RecoveryQL, n.ClusterName, 
h.cc.NodeRecovery.PromQueryTimeSecond)
        if err != nil {
-               klog.Errorf("recoveryNodes instantQuery err:%v ql:%v", err, ql)
+               klog.Errorf("recoveryNodes InstantQuery err:%v ql:%v", err, 
n.RecoveryQL)
+               return
+       }
+       if len(vecs) != 1 {
+               klog.Infof("Expected 1 result, but got: %d", len(vecs))
                return
        }
-       if len(vecs) != 2 {
-               klog.Errorf("%v", vecs)
+       if err != nil {
+               klog.Errorf("recoveryNodes instantQuery err:%v ql:%v", err, 
n.RecoveryQL)
                return
        }
        klog.Infof("recoveryNodes check success.")
 
        err = h.UnCordon(n.NodeName, n.ClusterName)
-       res := "success"
+       res := "Success"
        if err != nil {
                res = fmt.Sprintf("failed:%v", err)
        }
        msg := fmt.Sprintf("【自愈检查 %v: 恢复节点调度】【集群: %v】\n【节点: %v】【日期: %v】\n"+
-               "【自愈检查 QL: %v】", res, n.ClusterName, n.NodeName, n.CreateTime, 
ql)
+               "【自愈检查 QL: %v", res, n.ClusterName, n.NodeName, n.CreateTime, 
n.RecoveryQL)
        alert.DingTalkSend(h.cc.NodeRecovery.DingTalk, msg)
 
        pass, err := n.RecoveryMarker()
diff --git a/deploy/horus/horus.yaml b/deploy/horus/horus.yaml
index 80e02f1d..dd042b01 100644
--- a/deploy/horus/horus.yaml
+++ b/deploy/horus/horus.yaml
@@ -36,10 +36,10 @@ kubeMultiple:
   cluster: config.1
 
 promMultiple:
-  cluster: http://192.168.15.128:32608
+  cluster: http://192.168.15.128:30201
 
 nodeRecovery:
-  enabled: false
+  enabled: true
   dayNumber: 1
   checkIntervalSecond: 5
   promQueryTimeSecond: 10
@@ -50,20 +50,20 @@ nodeRecovery:
       - 15000000
 
 customModular:
-  enabled: true
+  enabled: false
   cordonDailyLimit:
     filesystem_readonly: 5
     arp_entries: 5
   checkQL:
     filesystem_readonly: |-
-      node_filesystem_readonly{mountpoint="/",node="%s"} == 1
+      node_filesystem_readonly{mountpoint="/"} == 1
     arp_entries: |-
-      node_arp_entries{device="ens160",node="master"} > 2
+      node_arp_entries{device="ens160"} > 2
   recoveryQL:
     filesystem_readonly: |-
-      node_filesystem_readonly{mountpoint="/",node="%s"} == 0
+      node_filesystem_readonly{mountpoint="/"} == 0
     arp_entries: |-
-      node_arp_entries{device="ens160",node="%s"} < 2
+      node_arp_entries{device="ens160"} > 2
   checkIntervalSecond: 5
   promQueryTimeSecond: 10
   kubeMultiple:

Reply via email to