|
- package core
-
- import (
- "context"
- "github.com/prometheus/common/model"
- "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/tracker"
- "strconv"
-
- "gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
- "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
-
- "github.com/zeromicro/go-zero/core/logx"
- )
-
- type CenterResourcesLogic struct {
- logx.Logger
- ctx context.Context
- svcCtx *svc.ServiceContext
- }
-
- func NewCenterResourcesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CenterResourcesLogic {
- return &CenterResourcesLogic{
- Logger: logx.WithContext(ctx),
- ctx: ctx,
- svcCtx: svcCtx,
- }
- }
-
- func (l *CenterResourcesLogic) CenterResources() (resp *types.CenterResourcesResp, err error) {
- resp = &types.CenterResourcesResp{}
- rawData, err := l.svcCtx.PromClient.GetRawData("center_top3", tracker.AdapterOption{})
- if err != nil {
- return nil, err
- }
- var centersIndex []*types.CenterIndex
- data := rawData.(model.Vector)
- for _, d := range data {
- for _, v := range d.Metric {
- num, err := strconv.ParseInt(string(v), 10, 64)
- if err != nil {
- return nil, err
- }
- centersIndex = append(centersIndex, &types.CenterIndex{Id: num})
- }
- }
- for _, centerIndex := range centersIndex {
- // Query the types of resource centers
- l.svcCtx.DbEngin.Raw("select name,type as CenterType from t_adapter where id = ?", centerIndex.Id).Scan(¢erIndex)
- var clustersName string
- l.svcCtx.DbEngin.Raw("SELECT GROUP_CONCAT(name SEPARATOR '|' ) as clustersName from t_cluster where adapter_id = ?", centerIndex.Id).Scan(&clustersName)
- cpuRawData, err := l.svcCtx.PromClient.GetRawData("center_cpu_utilisation", tracker.AdapterOption{AdapterId: centerIndex.Id, ClustersName: clustersName})
- cpuData := cpuRawData.(model.Vector)
- if err != nil {
- return nil, err
- }
- centerIndex.Cpu = cpuData[0].Value.String()
- memoryRawData, err := l.svcCtx.PromClient.GetRawData("center_memory_utilisation", tracker.AdapterOption{AdapterId: centerIndex.Id, ClustersName: clustersName})
- if err != nil {
- return nil, err
- }
- memoryData := memoryRawData.(model.Vector)
-
- centerIndex.Memory = memoryData[0].Value.String()
- diskRawData, err := l.svcCtx.PromClient.GetRawData("center_disk_utilisation", tracker.AdapterOption{AdapterId: centerIndex.Id, ClustersName: clustersName})
- if err != nil {
- return nil, err
- }
- diskData := diskRawData.(model.Vector)
- centerIndex.Storage = diskData[0].Value.String()
- resp.CentersIndex = append(resp.CentersIndex, *centerIndex)
- }
- return resp, nil
- }
|