商业版WAF看板增加地图

This commit is contained in:
GoEdgeLab
2021-12-05 19:38:32 +08:00
parent 27a3659872
commit 85a3e351bf
3 changed files with 50 additions and 8 deletions

View File

@@ -94,8 +94,10 @@ func (this *ServerRegionCountryDailyStatDAO) ListServerStats(tx *dbs.Tx, serverI
query.Desc("countRequests")
case "attackBytes":
query.Desc("attackBytes")
query.Gt("attackBytes", 0)
case "countAttackRequests":
query.Desc("countAttackRequests")
query.Gt("countAttackRequests", 0)
}
_, err = query.FindAll()
@@ -119,21 +121,30 @@ func (this *ServerRegionCountryDailyStatDAO) ListSumStats(tx *dbs.Tx, day string
query.Desc("countRequests")
case "attackBytes":
query.Desc("attackBytes")
query.Gt("attackBytes", 0)
case "countAttackRequests":
query.Desc("countAttackRequests")
query.Gt("countAttackRequests", 0)
}
_, err = query.FindAll()
return
}
// SumDailyBytes 计算总流量
// SumDailyTotalBytes 计算总流量
func (this *ServerRegionCountryDailyStatDAO) SumDailyTotalBytes(tx *dbs.Tx, day string) (int64, error) {
return this.Query(tx).
Attr("day", day).
SumInt64("bytes", 0)
}
// SumDailyTotalAttackRequests 计算总攻击次数
func (this *ServerRegionCountryDailyStatDAO) SumDailyTotalAttackRequests(tx *dbs.Tx, day string) (int64, error) {
return this.Query(tx).
Attr("day", day).
SumInt64("countAttackRequests", 0)
}
// Clean 清理统计数据
func (this *ServerRegionCountryDailyStatDAO) Clean(tx *dbs.Tx) error {
// 只保留7天的

View File

@@ -736,14 +736,14 @@ func (this *AdminService) ComposeAdminDashboard(ctx context.Context, req *pb.Com
}
}
// 流量排行
// 地区流量排行
if isPlus {
totalBytes, err := stats.SharedServerRegionCountryDailyStatDAO.SumDailyTotalBytes(tx, timeutil.Format("Ymd"))
totalCountryBytes, err := stats.SharedServerRegionCountryDailyStatDAO.SumDailyTotalBytes(tx, timeutil.Format("Ymd"))
if err != nil {
return nil, err
}
if totalBytes > 0 {
if totalCountryBytes > 0 {
topCountryStats, err := stats.SharedServerRegionCountryDailyStatDAO.ListSumStats(tx, timeutil.Format("Ymd"), "bytes", 0, 100)
if err != nil {
return nil, err
@@ -755,10 +755,12 @@ func (this *AdminService) ComposeAdminDashboard(ctx context.Context, req *pb.Com
return nil, err
}
result.TopCountryStats = append(result.TopCountryStats, &pb.ComposeAdminDashboardResponse_CountryStat{
CountryName: countryName,
Bytes: int64(stat.Bytes),
CountRequests: int64(stat.CountRequests),
Percent: float32(stat.Bytes*100) / float32(totalBytes),
CountryName: countryName,
Bytes: int64(stat.Bytes),
CountRequests: int64(stat.CountRequests),
AttackBytes: int64(stat.AttackBytes),
CountAttackRequests: int64(stat.CountAttackRequests),
Percent: float32(stat.Bytes*100) / float32(totalCountryBytes),
})
}
}

View File

@@ -5,6 +5,7 @@ package services
import (
"context"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/db/models/regions"
"github.com/TeaOSLab/EdgeAPI/internal/db/models/stats"
"github.com/TeaOSLab/EdgeAPI/internal/utils"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
@@ -215,6 +216,34 @@ func (this *FirewallService) ComposeFirewallGlobalBoard(ctx context.Context, req
})
}
// 地区流量排行
totalCountryRequests, err := stats.SharedServerRegionCountryDailyStatDAO.SumDailyTotalAttackRequests(tx, timeutil.Format("Ymd"))
if err != nil {
return nil, err
}
if totalCountryRequests > 0 {
topCountryStats, err := stats.SharedServerRegionCountryDailyStatDAO.ListSumStats(tx, timeutil.Format("Ymd"), "countAttackRequests", 0, 100)
if err != nil {
return nil, err
}
for _, stat := range topCountryStats {
countryName, err := regions.SharedRegionCountryDAO.FindRegionCountryName(tx, int64(stat.CountryId))
if err != nil {
return nil, err
}
result.TopCountryStats = append(result.TopCountryStats, &pb.ComposeFirewallGlobalBoardResponse_CountryStat{
CountryName: countryName,
Bytes: int64(stat.Bytes),
CountRequests: int64(stat.CountRequests),
AttackBytes: int64(stat.AttackBytes),
CountAttackRequests: int64(stat.CountAttackRequests),
Percent: float32(stat.CountAttackRequests*100) / float32(totalCountryRequests),
})
}
}
return result, nil
}