You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2023/03/23 05:23:17 UTC

[dubbo-admin] branch refactor-with-go updated: monitor -- cluster overview (#1053)

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

liujun pushed a commit to branch refactor-with-go
in repository https://gitbox.apache.org/repos/asf/dubbo-admin.git


The following commit(s) were added to refs/heads/refactor-with-go by this push:
     new ad77fc60 monitor -- cluster overview (#1053)
ad77fc60 is described below

commit ad77fc60659ed32b8db86862ba51a4218d754f17
Author: 无言独上机房 <88...@users.noreply.github.com>
AuthorDate: Thu Mar 23 13:23:08 2023 +0800

    monitor -- cluster overview (#1053)
---
 pkg/admin/services/prometheus_service_impl.go | 56 ++++++++++++++++++++++++++-
 1 file changed, 55 insertions(+), 1 deletion(-)

diff --git a/pkg/admin/services/prometheus_service_impl.go b/pkg/admin/services/prometheus_service_impl.go
index 9d272014..0e570c6a 100644
--- a/pkg/admin/services/prometheus_service_impl.go
+++ b/pkg/admin/services/prometheus_service_impl.go
@@ -19,6 +19,7 @@ import (
 	"context"
 	"fmt"
 	"net/http"
+	"strconv"
 	"time"
 
 	"github.com/prometheus/client_golang/api"
@@ -31,10 +32,63 @@ import (
 	"github.com/apache/dubbo-admin/pkg/monitor/prometheus"
 )
 
+var (
+	providerService ProviderService = &ProviderServiceImpl{}
+	consumerService ConsumerService = &ConsumerServiceImpl{}
+)
+
 type PrometheusServiceImpl struct{}
 
 func (p *PrometheusServiceImpl) ClusterMetrics() ([]model.Response, error) {
-	return nil, nil
+	res := make([]model.Response, 5)
+	applications, err := providerService.FindApplications()
+	appNum := 0
+	if err != nil {
+		logger.Sugar().Errorf("Error find applications: %v\n", err)
+		res[0].Status = http.StatusInternalServerError
+		res[0].Data = ""
+	} else {
+		appNum = len(applications)
+		res[0].Status = http.StatusOK
+		res[0].Data = strconv.Itoa(appNum)
+	}
+	services, err := providerService.FindServices()
+	svc := 0
+	if err != nil {
+		logger.Sugar().Errorf("Error find services: %v\n", err)
+		res[1].Status = http.StatusInternalServerError
+		res[1].Data = ""
+	} else {
+		svc = len(services)
+		res[1].Status = http.StatusOK
+		res[1].Data = strconv.Itoa(svc)
+	}
+	providers, err := providerService.FindService(constant.IP, constant.AnyValue)
+	pro := 0
+	if err != nil {
+		logger.Sugar().Errorf("Error find providers: %v\n", err)
+		res[2].Status = http.StatusInternalServerError
+		res[2].Data = ""
+	} else {
+		pro = len(providers)
+		res[2].Status = http.StatusOK
+		res[2].Data = strconv.Itoa(pro)
+	}
+	consumers, err := consumerService.FindAll()
+	con := 0
+	if err != nil {
+		logger.Sugar().Errorf("Error find consumers: %v\n", err)
+		res[3].Status = http.StatusInternalServerError
+		res[3].Data = ""
+	} else {
+		con = len(consumers)
+		res[3].Status = http.StatusOK
+		res[3].Data = strconv.Itoa(con)
+	}
+	allInstance := pro + con
+	res[5].Status = http.StatusOK
+	res[5].Data = strconv.Itoa(allInstance)
+	return res, nil
 }
 
 func (p *PrometheusServiceImpl) FlowMetrics() ([]model.Response, error) {