From 56574ea3d9b2527ff4d52a0172e581246a8ae2b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Wed, 15 Mar 2023 17:02:09 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=82=E7=82=B9=E7=9C=8B=E6=9D=BF=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=AD=E5=A2=9E=E5=8A=A0=E5=BD=93=E6=9C=88=E3=80=81?= =?UTF-8?q?=E6=98=A8=E6=97=A5=E3=80=81=E4=BB=8A=E6=97=A5=E6=B5=81=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../node_cluster_traffic_daily_stat_dao.go | 4 +-- .../stats/node_traffic_daily_stat_dao.go | 15 +++++++++++ .../rpc/services/service_server_stat_board.go | 25 ++++++++++++++++--- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/internal/db/models/stats/node_cluster_traffic_daily_stat_dao.go b/internal/db/models/stats/node_cluster_traffic_daily_stat_dao.go index 27a827be..44ce3bf9 100644 --- a/internal/db/models/stats/node_cluster_traffic_daily_stat_dao.go +++ b/internal/db/models/stats/node_cluster_traffic_daily_stat_dao.go @@ -114,8 +114,8 @@ func (this *NodeClusterTrafficDailyStatDAO) FindDailyStats(tx *dbs.Tx, clusterId return result, nil } -// SumDailyStats 计算当月总流量 -func (this *NodeClusterTrafficDailyStatDAO) SumDailyStats(tx *dbs.Tx, clusterId int64, dayFrom string, dayTo string) (*NodeClusterTrafficDailyStat, error) { +// SumDailyStat 计算当月总流量 +func (this *NodeClusterTrafficDailyStatDAO) SumDailyStat(tx *dbs.Tx, clusterId int64, dayFrom string, dayTo string) (*NodeClusterTrafficDailyStat, error) { one, err := this.Query(tx). Result("SUM(bytes) AS bytes", "SUM(cachedBytes) AS cachedBytes", "SUM(countRequests) AS countRequests", "SUM(countCachedRequests) AS countCachedRequests", "SUM(countAttackRequests) AS countAttackRequests", "SUM(attackBytes) AS attackBytes"). Attr("clusterId", clusterId). diff --git a/internal/db/models/stats/node_traffic_daily_stat_dao.go b/internal/db/models/stats/node_traffic_daily_stat_dao.go index 59fc0940..07b5ebce 100644 --- a/internal/db/models/stats/node_traffic_daily_stat_dao.go +++ b/internal/db/models/stats/node_traffic_daily_stat_dao.go @@ -117,6 +117,21 @@ func (this *NodeTrafficDailyStatDAO) FindDailyStats(tx *dbs.Tx, role string, nod return result, nil } +// SumDailyStat 计算日期之间的总和 +func (this *NodeTrafficDailyStatDAO) SumDailyStat(tx *dbs.Tx, role string, nodeId int64, dayFrom string, dayTo string) (*NodeTrafficDailyStat, error) { + one, err := this.Query(tx). + Result("SUM(bytes) AS bytes", "SUM(cachedBytes) AS cachedBytes", "SUM(countRequests) AS countRequests", "SUM(countCachedRequests) AS countCachedRequests", "SUM(countAttackRequests) AS countAttackRequests", "SUM(attackBytes) AS attackBytes"). + Attr("nodeId", nodeId). + Attr("role", role). + Between("day", dayFrom, dayTo). + Find() + if err != nil || one == nil { + return nil, err + } + + return one.(*NodeTrafficDailyStat), nil +} + // Clean 清理历史数据 func (this *NodeTrafficDailyStatDAO) Clean(tx *dbs.Tx, days int) error { var day = timeutil.Format("Ymd", time.Now().AddDate(0, 0, -days)) diff --git a/internal/rpc/services/service_server_stat_board.go b/internal/rpc/services/service_server_stat_board.go index ad42abc6..87aca776 100644 --- a/internal/rpc/services/service_server_stat_board.go +++ b/internal/rpc/services/service_server_stat_board.go @@ -86,15 +86,13 @@ func (this *ServerStatBoardService) ComposeServerStatNodeClusterBoard(ctx contex result.CountServers = countServers // 当月总流量 - monthlyTrafficStat, err := stats.SharedNodeClusterTrafficDailyStatDAO.SumDailyStats(tx, req.NodeClusterId, timeutil.Format("Ym01"), timeutil.Format("Ym31")) + monthlyTrafficStat, err := stats.SharedNodeClusterTrafficDailyStatDAO.SumDailyStat(tx, req.NodeClusterId, timeutil.Format("Ym01"), timeutil.Format("Ym31")) if err != nil { return nil, err } - var monthlyTrafficBytes int64 if monthlyTrafficStat != nil { - monthlyTrafficBytes = int64(monthlyTrafficStat.Bytes) + result.MonthlyTrafficBytes = int64(monthlyTrafficStat.Bytes) } - result.MonthlyTrafficBytes = monthlyTrafficBytes // 按日流量统计 var dayFrom = timeutil.Format("Ymd", time.Now().AddDate(0, 0, -14)) @@ -326,13 +324,30 @@ func (this *ServerStatBoardService) ComposeServerStatNodeBoard(ctx context.Conte } } + // 当月总流量 + monthlyTrafficStat, err := stats.SharedNodeTrafficDailyStatDAO.SumDailyStat(tx, nodeconfigs.NodeRoleNode, req.NodeId, timeutil.Format("Ym01"), timeutil.Format("Ym31")) + if err != nil { + return nil, err + } + if monthlyTrafficStat != nil { + result.MonthlyTrafficBytes = int64(monthlyTrafficStat.Bytes) + } + // 按日流量统计 var dayFrom = timeutil.Format("Ymd", time.Now().AddDate(0, 0, -14)) dailyTrafficStats, err := stats.SharedNodeTrafficDailyStatDAO.FindDailyStats(tx, "node", req.NodeId, dayFrom, timeutil.Format("Ymd")) if err != nil { return nil, err } + var dailyTrafficBytes int64 + var lastDailyTrafficBytes int64 for _, stat := range dailyTrafficStats { + if stat.Day == timeutil.Format("Ymd") { // 当天 + dailyTrafficBytes = int64(stat.Bytes) + } else if stat.Day == timeutil.Format("Ymd", time.Now().AddDate(0, 0, -1)) { // 昨天 + lastDailyTrafficBytes = int64(stat.Bytes) + } + result.DailyTrafficStats = append(result.DailyTrafficStats, &pb.ComposeServerStatNodeBoardResponse_DailyTrafficStat{ Day: stat.Day, Bytes: int64(stat.Bytes), @@ -343,6 +358,8 @@ func (this *ServerStatBoardService) ComposeServerStatNodeBoard(ctx context.Conte AttackBytes: int64(stat.AttackBytes), }) } + result.DailyTrafficBytes = dailyTrafficBytes + result.LastDailyTrafficBytes = lastDailyTrafficBytes // 小时流量统计 var hourFrom = timeutil.Format("YmdH", time.Now().Add(-23*time.Hour))