86 lines
3.1 KiB
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()
|
|
}
|