Files
waf-platform/EdgeAdmin/internal/web/actions/default/dashboard/boards/values.go

86 lines
3.1 KiB
Go

// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package boards
import (
"fmt"
"github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/maps"
timeutil "github.com/iwind/TeaGo/utils/time"
"time"
)
type ValuesAction struct {
actionutils.ParentAction
}
func (this *ValuesAction) RunPost(params struct{}) {
resp, err := this.RPC().NodeValueRPC().SumAllNodeValueStats(this.AdminContext(), &pb.SumAllNodeValueStatsRequest{})
if err != nil {
this.ErrorPage(err)
return
}
var resultBytes = resp.TotalTrafficBytesPerSecond
// 当天流量统计
trafficDailyStatResp, err := this.RPC().TrafficDailyStatRPC().FindTrafficDailyStatWithDay(this.AdminContext(), &pb.FindTrafficDailyStatWithDayRequest{Day: timeutil.Format("Ymd")})
if err != nil {
this.ErrorPage(err)
return
}
var todayTrafficBytes int64 = 0
var todayTrafficFormat = "0B"
if trafficDailyStatResp.TrafficDailyStat != nil {
todayTrafficBytes = trafficDailyStatResp.TrafficDailyStat.Bytes
todayTrafficFormat = numberutils.FormatBytes(todayTrafficBytes)
}
// 昨天同期流量
yesterdayTrafficResp, err := this.RPC().TrafficDailyStatRPC().FindTrafficDailyStatWithDay(this.AdminContext(), &pb.FindTrafficDailyStatWithDayRequest{
Day: timeutil.Format("Ymd", time.Now().AddDate(0, 0, -1)),
Minute: timeutil.Format("His"),
})
if err != nil {
this.ErrorPage(err)
return
}
var yesterdayPercentFormat = ""
if yesterdayTrafficResp.TrafficDailyStat != nil {
var yesterdayTrafficBytes = yesterdayTrafficResp.TrafficDailyStat.Bytes
if yesterdayTrafficBytes > 0 {
var percent = float64((todayTrafficBytes-yesterdayTrafficBytes)*100) / float64(yesterdayTrafficBytes)
if percent > 0.01 {
yesterdayPercentFormat = "+" + fmt.Sprintf("%.2f", percent)
} else if percent < 0.01 {
yesterdayPercentFormat = fmt.Sprintf("%.2f", percent)
}
}
}
this.Data["stat"] = maps.Map{
"totalTrafficBytesPerSecond": resultBytes,
"totalTrafficPerSecondFormat": numberutils.FormatBits(resultBytes * 8),
"avgCPUUsage": resp.AvgCPUUsage * 100,
"avgCPUUsageFormat": fmt.Sprintf("%.2f", resp.AvgCPUUsage*100),
"maxCPUUsage": resp.MaxCPUUsage * 100,
"totalCPUCores": resp.TotalCPUCores,
"avgMemoryUsage": resp.AvgMemoryUsage * 100,
"avgMemoryUsageFormat": fmt.Sprintf("%.2f", resp.AvgMemoryUsage*100),
"maxMemoryUsage": resp.MaxMemoryUsage * 100,
"totalMemoryBytes": resp.TotalMemoryBytes,
"totalMemoryFormat": numberutils.FormatBytes(resp.TotalMemoryBytes),
"avgLoad1min": resp.AvgLoad1Min,
"avgLoad1minFormat": fmt.Sprintf("%.2f", resp.AvgLoad1Min),
"maxLoad1min": resp.MaxLoad1Min,
"avgLoad5min": resp.AvgLoad5Min,
"avgLoad5minFormat": fmt.Sprintf("%.2f", resp.AvgLoad5Min),
"todayTrafficFormat": todayTrafficFormat,
"yesterdayPercentFormat": yesterdayPercentFormat,
}
this.Success()
}