You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by zh...@apache.org on 2024/10/05 05:24:09 UTC

(dubbo-kubernetes) branch master updated: Additional node indicators (#430)

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 5fef316f Additional node indicators (#430)
5fef316f is described below

commit 5fef316f1291ae8d175bbd574f5be6254c3d2e7a
Author: mfordjody <11...@qq.com>
AuthorDate: Sat Oct 5 13:24:04 2024 +0800

    Additional node indicators (#430)
---
 app/horus/base/db/db.go           | 58 +++++++++++++++++++--------------------
 app/horus/config.1                | 19 +++++++++++++
 app/horus/core/horuser/metrics.go | 53 +++++++++++++++++++++++++++++++++++
 3 files changed, 101 insertions(+), 29 deletions(-)

diff --git a/app/horus/base/db/db.go b/app/horus/base/db/db.go
index e7844c38..013edcff 100644
--- a/app/horus/base/db/db.go
+++ b/app/horus/base/db/db.go
@@ -25,38 +25,38 @@ import (
 )
 
 type NodeDataInfo struct {
-	Id              int64  `json:"id"`
-	NodeName        string `json:"node_name" xorm:"node_name"`
-	NodeIP          string `json:"node_ip" xorm:"node_ip"`
-	Sn              string `json:"sn"`
-	ClusterName     string `json:"cluster_name" xorm:"cluster_name"`
-	ModuleName      string `json:"module_name" xorm:"module_name"`
-	Reason          string `json:"reason"`
-	Restart         uint32 `json:"restart"`
-	Repair          uint32 `json:"repair"`
-	RepairTicketUrl string `json:"repair_ticket_url" xorm:"repair_ticket_url"`
-	FirstDate       string `json:"first_date" xorm:"first_date"`
-	CreateTime      string `json:"create_time" xorm:"create_time created"`
-	UpdateTime      string `json:"update_time" xorm:"update_time updated"`
-	RecoveryMark    int64  `json:"recovery_mark" xorm:"recovery_mark"`
-	RecoveryQL      string `json:"recovery_ql" xorm:"recovery_ql"`
+	Id              int64     `json:"id"`
+	NodeName        string    `json:"node_name" xorm:"node_name"`
+	NodeIP          string    `json:"node_ip" xorm:"node_ip"`
+	Sn              string    `json:"sn"`
+	ClusterName     string    `json:"cluster_name" xorm:"cluster_name"`
+	ModuleName      string    `json:"module_name" xorm:"module_name"`
+	Reason          string    `json:"reason"`
+	Restart         int       `json:"restart"`
+	Repair          int       `json:"repair"`
+	RepairTicketUrl string    `json:"repair_ticket_url" xorm:"repair_ticket_url"`
+	FirstDate       string    `json:"first_date" xorm:"first_date"`
+	CreateTime      time.Time `json:"create_time" xorm:"create_time created"`
+	UpdateTime      time.Time `json:"update_time" xorm:"update_time updated"`
+	RecoveryMark    int64     `json:"recovery_mark" xorm:"recovery_mark"`
+	RecoveryQL      string    `json:"recovery_ql" xorm:"recovery_ql"`
 }
 
 type PodDataInfo struct {
-	Id              int64  `json:"id"`
-	PodName         string `json:"pod_name" xorm:"pod_name"`
-	PodIP           string `json:"pod_ip" xorm:"pod_ip"`
-	Sn              string `json:"sn"`
-	NodeName        string `json:"node_name" xorm:"node_name"`
-	ClusterName     string `json:"cluster_name" xorm:"cluster_name"`
-	ModuleName      string `json:"module_name" xorm:"module_name"`
-	Reason          string `json:"reason"`
-	Restart         int32  `json:"restart"`
-	Repair          int32  `json:"repair"`
-	RepairTicketUrl string `json:"repair_ticket_url" xorm:"repair_ticket_url"`
-	FirstDate       string `json:"first_date" xorm:"first_date"`
-	CreateTime      string `json:"create_time" xorm:"create_time created"`
-	UpdateTime      string `json:"update_time" xorm:"update_time updated"`
+	Id              int64     `json:"id"`
+	PodName         string    `json:"pod_name" xorm:"pod_name"`
+	PodIP           string    `json:"pod_ip" xorm:"pod_ip"`
+	Sn              string    `json:"sn"`
+	NodeName        string    `json:"node_name" xorm:"node_name"`
+	ClusterName     string    `json:"cluster_name" xorm:"cluster_name"`
+	ModuleName      string    `json:"module_name" xorm:"module_name"`
+	Reason          string    `json:"reason"`
+	Restart         int       `json:"restart"`
+	Repair          int       `json:"repair"`
+	RepairTicketUrl string    `json:"repair_ticket_url" xorm:"repair_ticket_url"`
+	FirstDate       string    `json:"first_date" xorm:"first_date"`
+	CreateTime      time.Time `json:"create_time" xorm:"create_time created"`
+	UpdateTime      time.Time `json:"update_time" xorm:"update_time updated"`
 }
 
 var (
diff --git a/app/horus/config.1 b/app/horus/config.1
new file mode 100644
index 00000000..3f9124e3
--- /dev/null
+++ b/app/horus/config.1
@@ -0,0 +1,19 @@
+apiVersion: v1
+clusters:
+- cluster:
+    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJWkw1eUxQOHlJeVl3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRFd01ESXdNek13TXpGYUZ3MHpOREE1TXpBd016TTFNekZhTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUUN5VXM2M3kzSVUvaHQrSEFOTVNmK0I0Nll3R1dXQzVvRS9wcHE1QzV2QTNiTXhxR3BVU2FPU3hQZXkKNEpiTVppQmtMSDVRV3RGVDUyc3p0a0pBamJUcnBMSEtMRmxMS1MxWjhMMmxiakdGQW56RUFvUmdm [...]
+    server: https://192.168.15.128:6443
+  name: kubernetes
+contexts:
+- context:
+    cluster: kubernetes
+    user: kubernetes-admin
+  name: kubernetes-admin@kubernetes
+current-context: kubernetes-admin@kubernetes
+kind: Config
+preferences: {}
+users:
+- name: kubernetes-admin
+  user:
+    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLVENDQWhHZ0F3SUJBZ0lJZHBoVmNpWGRyd013RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRFd01ESXdNek13TXpGYUZ3MHlOVEV3TURJd016TTFNekZhTUR3eApIekFkQmdOVkJBb1RGbXQxWW1WaFpHMDZZMngxYzNSbGNpMWhaRzFwYm5NeEdUQVhCZ05WQkFNVEVHdDFZbVZ5CmJtVjBaWE10WVdSdGFXNHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDbFFpWEsKSUVZNDhWZlFUUjhBZmo4SnNpOE95ZjNDRnFZcUw0YlRMYkdBZ0Rjamd1T2FIbUpDMUZQVVJLNUh0RSt [...]
+    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBcFVJbHlpQkdPUEZYMEUwZkFINC9DYkl2RHNuOXdoYW1LaStHMHkyeGdJQTNJNExqCm1oNWlRdFJUMUVTdVI3UlBwM01vL3ozWXFZYzZqbE12MXJpRDVIK0s2dkdTQnJXODB3L1RLb1doN3BSRi9Vam8KK3FXdWl4cWo5MU1YeWpDWHZYRTlqRUxISnVSZWN3bTNyVGhBTUxPS2dmUTl4YjBtZzh5VVZKS3czOUlmWm1pWgpTOE5iRGdPMVpEL3hLUUE2MHh4SDV5dEhHYmE4R3V4cDJHaW81c0dQZFlEK0JZN2FuU1Z1aVpyd01kcFZLZmZUCmJuQVQzQWI1Z1Y2Nzg0VFVNMkJDeUtkYUI3WnQvTEJucUhJUWZpZHlYV1Vjby9IZzRXUTFLbHV1S2dKekY [...]
diff --git a/app/horus/core/horuser/metrics.go b/app/horus/core/horuser/metrics.go
index 62c71883..b1d39ec4 100644
--- a/app/horus/core/horuser/metrics.go
+++ b/app/horus/core/horuser/metrics.go
@@ -17,7 +17,9 @@ package horuser
 
 import (
 	"fmt"
+	"github.com/apache/dubbo-kubernetes/app/horus/base/db"
 	"github.com/prometheus/client_golang/prometheus"
+	"k8s.io/klog/v2"
 	"strings"
 )
 
@@ -79,6 +81,56 @@ func (h *Horuser) Collect(ch chan<- prometheus.Metric) {
 	downtimeKey := fmt.Sprintf("node downtime,%s", buttons[h.cc.NodeDownTime.Enabled])
 	info[downtimeKey] = kFunc(h.cc.NodeDownTime.KubeMultiple)
 
+	nodeFunc := func() {
+		nodes, err := db.GetNode()
+		if err != nil {
+			klog.Errorf("horus metrics collect db get node err:%v", err)
+			return
+		}
+		if len(nodes) == 0 {
+			klog.Infof("horus metrics collect db zero err:%v", err)
+			return
+		}
+		for _, v := range nodes {
+			v := v
+			ct := v.CreateTime.Local().Format("2006-01-02 15:04:05")
+			ut := v.UpdateTime.Local().Format("2006-01-02 15:04:05")
+			p := prometheus.MustNewConstMetric(NodeInfo,
+				prometheus.GaugeValue, 1,
+				v.NodeName,
+				v.NodeIP,
+				v.Sn,
+				v.ClusterName,
+				v.ModuleName,
+				v.Reason,
+				fmt.Sprintf("%d", v.Restart),
+				fmt.Sprintf("%d", v.Repair),
+				v.RepairTicketUrl,
+				v.FirstDate,
+				ct,
+				ut,
+				v.RecoveryQL,
+				fmt.Sprintf("%d", v.RecoveryMark),
+			)
+
+			fmt.Println("NodeName:", v.NodeName)
+			fmt.Println("NodeIP:", v.NodeIP)
+			fmt.Println("Sn:", v.Sn)
+			fmt.Println("ClusterName:", v.ClusterName)
+			fmt.Println("ModuleName:", v.ModuleName)
+			fmt.Println("Reason:", v.Reason)
+			fmt.Println("Restart:", v.Restart)
+			fmt.Println("Repair:", v.Repair)
+			fmt.Println("RepairTicketUrl:", v.RepairTicketUrl)
+			fmt.Println("FirstDate:", v.FirstDate)
+			fmt.Println("CreateTime:", ct)
+			fmt.Println("UpdateTime:", ut)
+
+			ch <- p
+		}
+	}
+	nodeFunc()
+
 	for k, clusterName := range info {
 		s := strings.Split(k, ",")
 		feature, enabled := s[0], s[1]
@@ -103,4 +155,5 @@ func (h *Horuser) Collect(ch chan<- prometheus.Metric) {
 func (h *Horuser) Describe(ch chan<- *prometheus.Desc) {
 	ch <- FeatureInfo
 	ch <- MultipleInfo
+	ch <- NodeInfo
 }