优化节点列表

This commit is contained in:
GoEdgeLab
2022-04-07 18:31:38 +08:00
parent 63d070f7e0
commit cc1e806cee
7 changed files with 329 additions and 33 deletions

View File

@@ -6,7 +6,9 @@ import (
"context"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/types"
)
type NodeValueService struct {
@@ -60,7 +62,7 @@ func (this *NodeValueService) ListNodeValues(ctx context.Context, req *pb.ListNo
if err != nil {
return nil, err
}
pbValues := []*pb.NodeValue{}
var pbValues = []*pb.NodeValue{}
for _, value := range values {
pbValues = append(pbValues, &pb.NodeValue{
ValueJSON: value.Value,
@@ -70,3 +72,80 @@ func (this *NodeValueService) ListNodeValues(ctx context.Context, req *pb.ListNo
return &pb.ListNodeValuesResponse{NodeValues: pbValues}, nil
}
// SumAllNodeValueStats 读取所有节点的最新数据
func (this *NodeValueService) SumAllNodeValueStats(ctx context.Context, req *pb.SumAllNodeValueStatsRequest) (*pb.SumAllNodeValueStatsResponse, error) {
_, err := this.ValidateAdmin(ctx, 0)
if err != nil {
return nil, err
}
var tx = this.NullTx()
var result = &pb.SumAllNodeValueStatsResponse{}
// traffic
{
total, _, _, err := models.SharedNodeValueDAO.SumAllNodeValues(tx, nodeconfigs.NodeRoleNode, nodeconfigs.NodeValueItemTrafficOut, "total", 1, nodeconfigs.NodeValueDurationUnitMinute)
if err != nil {
return nil, err
}
result.TotalTrafficBytesPerSecond = types.Int64(total) / 60
}
// cpu
{
_, avg, max, err := models.SharedNodeValueDAO.SumAllNodeValues(tx, nodeconfigs.NodeRoleNode, nodeconfigs.NodeValueItemCPU, "usage", 1, nodeconfigs.NodeValueDurationUnitMinute)
if err != nil {
return nil, err
}
result.AvgCPUUsage = types.Float32(avg)
result.MaxCPUUsage = types.Float32(max)
}
{
total, _, _, err := models.SharedNodeValueDAO.SumAllNodeValues(tx, nodeconfigs.NodeRoleNode, nodeconfigs.NodeValueItemCPU, "cores", 1, nodeconfigs.NodeValueDurationUnitMinute)
if err != nil {
return nil, err
}
result.TotalCPUCores = types.Int32(total)
}
// memory
{
_, avg, max, err := models.SharedNodeValueDAO.SumAllNodeValues(tx, nodeconfigs.NodeRoleNode, nodeconfigs.NodeValueItemMemory, "usage", 1, nodeconfigs.NodeValueDurationUnitMinute)
if err != nil {
return nil, err
}
result.AvgMemoryUsage = types.Float32(avg)
result.MaxMemoryUsage = types.Float32(max)
}
{
total, _, _, err := models.SharedNodeValueDAO.SumAllNodeValues(tx, nodeconfigs.NodeRoleNode, nodeconfigs.NodeValueItemMemory, "total", 1, nodeconfigs.NodeValueDurationUnitMinute)
if err != nil {
return nil, err
}
result.TotalMemoryBytes = types.Int64(total)
}
// load
{
_, avg, max, err := models.SharedNodeValueDAO.SumAllNodeValues(tx, nodeconfigs.NodeRoleNode, nodeconfigs.NodeValueItemLoad, "load1m", 1, nodeconfigs.NodeValueDurationUnitMinute)
if err != nil {
return nil, err
}
result.AvgLoad1Min = types.Float32(avg)
result.MaxLoad1Min = types.Float32(max)
}
{
_, avg, _, err := models.SharedNodeValueDAO.SumAllNodeValues(tx, nodeconfigs.NodeRoleNode, nodeconfigs.NodeValueItemLoad, "load5m", 1, nodeconfigs.NodeValueDurationUnitMinute)
if err != nil {
return nil, err
}
result.AvgLoad5Min = types.Float32(avg)
}
return result, nil
}