feat:增加qps

This commit is contained in:
samwaf
2023-12-28 18:03:10 +08:00
parent 5d1606b646
commit 78cd087d2c
6 changed files with 39 additions and 15 deletions
+2
View File
@@ -27,6 +27,8 @@ var (
GWAF_RUNTIME_NEW_VERSION string = "" //最新版本号
GWAF_RUNTIME_NEW_VERSION_DESC string = "" //最新版本描述
GWAF_RUNTIME_QPS uint64 = 0 //当前qps
/**
遥测数据
*/
@@ -177,11 +177,17 @@ export default {
upTrend: '0%',
leftType: 'echarts-line',
})
that.panelList.push({
/* that.panelList.push({
title: '今天正常IP(个)',
number: that.wafstat_data.NormalIpCountOfToday,
upTrend: '0%',
leftType: 'echarts-line',
})*/
that.panelList.push({
title: '当前QPS',
number: that.wafstat_data.CurrentQps,
upTrend: '0%',
leftType: 'echarts-line',
})
}
})
+10
View File
@@ -27,6 +27,7 @@ import (
"os/signal"
"runtime"
"strconv"
"sync/atomic"
"syscall"
"time"
)
@@ -136,6 +137,15 @@ func (m *wafSystenService) run() {
s := gocron.NewScheduler(timezone)
global.GWAF_LAST_UPDATE_TIME = time.Now()
// 每1秒执行qps清空
s.Every(1).Seconds().Do(func() {
// 清零计数器
atomic.StoreUint64(&global.GWAF_RUNTIME_QPS, 0)
// 输出清零后的计数
//newCount := atomic.LoadUint64(&requestCount)
})
// 每10秒执行一次
s.Every(10).Seconds().Do(func() {
if global.GWAF_SWITCH_TASK_COUNTER == false {
+15 -14
View File
@@ -3,20 +3,21 @@ package response
import "SamWaf/model"
type WafStat struct {
AttackCountOfToday int64 //今日攻击数量
VisitCountOfToday int64 //今天访问数量
AttackCountOfYesterday int64 //昨日攻击数量
VisitCountOfYesterday int64 //昨日访问数量
AttackCountOfLastWeekToday int64 //上周攻击数量
VisitCountOfLastWeekToday int64 //上周访问数量
NormalIpCountOfToday int64 //今日正常IP数量
IllegalIpCountOfToday int64 //今日非法IP数量
NormalCountryCountOfToday int64 //今日正常国家数量
IllegalCountryCountOfToday int64 //今日非法国家数量
NormalProvinceCountOfToday int64 //今日正常省份数量
IllegalProvinceCountOfToday int64 //今日非法省份数量
NormalCityCountOfToday int64 //今日正常城市数量
IllegalCityCountOfToday int64 //今日非法城市数量
AttackCountOfToday int64 //今日攻击数量
VisitCountOfToday int64 //今天访问数量
AttackCountOfYesterday int64 //昨日攻击数量
VisitCountOfYesterday int64 //昨日访问数量
AttackCountOfLastWeekToday int64 //上周攻击数量
VisitCountOfLastWeekToday int64 //上周访问数量
NormalIpCountOfToday int64 //今日正常IP数量
IllegalIpCountOfToday int64 //今日非法IP数量
NormalCountryCountOfToday int64 //今日正常国家数量
IllegalCountryCountOfToday int64 //今日非法国家数量
NormalProvinceCountOfToday int64 //今日正常省份数量
IllegalProvinceCountOfToday int64 //今日非法省份数量
NormalCityCountOfToday int64 //今日正常城市数量
IllegalCityCountOfToday int64 //今日非法城市数量
CurrentQps uint64 //当前QPS
}
type WafStatRange struct {
AttackCountOfRange map[int]int64 //区间攻击数量
+3
View File
@@ -13,6 +13,7 @@ import (
"github.com/shirou/gopsutil/net"
"runtime"
"strconv"
"sync/atomic"
"time"
)
@@ -62,6 +63,7 @@ func (receiver *WafStatService) StatHomeSumDayApi() (response2.WafStat, error) {
IllegalProvinceCountOfToday: 0,
NormalCityCountOfToday: 0,
IllegalCityCountOfToday: 0,
CurrentQps: atomic.LoadUint64(&global.GWAF_RUNTIME_QPS),
},
nil
}
@@ -190,6 +192,7 @@ func (receiver *WafStatService) StatHomeRumtimeSysinfo() []response2.WafNameValu
data = append(data, response2.WafNameValue{Name: "软件版本", Value: fmt.Sprintf("%v", global.GWAF_RELEASE_VERSION_NAME)})
data = append(data, response2.WafNameValue{Name: "软件版本Code", Value: fmt.Sprintf("%v", global.GWAF_RELEASE_VERSION)})
data = append(data, response2.WafNameValue{Name: "当前QPS", Value: fmt.Sprintf("%v", atomic.LoadUint64(&global.GWAF_RUNTIME_QPS))})
return data
}
+2
View File
@@ -40,6 +40,7 @@ import (
"os"
"strconv"
"strings"
"sync/atomic"
"time"
)
@@ -62,6 +63,7 @@ func (waf *WafEngine) Error() string {
return fmt.Sprintf(fs)
}
func (waf *WafEngine) ServeHTTP(w http.ResponseWriter, r *http.Request) {
atomic.AddUint64(&global.GWAF_RUNTIME_QPS, 1) // 原子增加计数器
host := r.Host
if !strings.Contains(host, ":") {
host = host + ":80"