增加统计指标自动清理

This commit is contained in:
刘祥超
2021-12-03 10:57:40 +08:00
parent 851e982ab9
commit 35f48e4f5d
4 changed files with 69 additions and 27 deletions

View File

@@ -4,11 +4,30 @@ import (
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
"github.com/iwind/TeaGo/Tea" "github.com/iwind/TeaGo/Tea"
"github.com/iwind/TeaGo/dbs" "github.com/iwind/TeaGo/dbs"
"github.com/iwind/TeaGo/logs"
"github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/maps"
"github.com/iwind/TeaGo/rands"
timeutil "github.com/iwind/TeaGo/utils/time"
"time"
) )
type MetricSumStatDAO dbs.DAO type MetricSumStatDAO dbs.DAO
func init() {
dbs.OnReadyDone(func() {
// 清理数据任务
var ticker = time.NewTicker(time.Duration(rands.Int(24, 48)) * time.Hour)
go func() {
for range ticker.C {
err := SharedMetricSumStatDAO.Clean(nil, 30) // 只保留30天
if err != nil {
logs.Println("SharedMetricSumStatDAO: clean expired data failed: " + err.Error())
}
}
}()
})
}
func NewMetricSumStatDAO() *MetricSumStatDAO { func NewMetricSumStatDAO() *MetricSumStatDAO {
return dbs.NewDAO(&MetricSumStatDAO{ return dbs.NewDAO(&MetricSumStatDAO{
DAOObject: dbs.DAOObject{ DAOObject: dbs.DAOObject{
@@ -40,6 +59,7 @@ func (this *MetricSumStatDAO) UpdateSum(tx *dbs.Tx, clusterId int64, nodeId int6
"time": time, "time": time,
"count": count, "count": count,
"total": total, "total": total,
"createdDay": timeutil.Format("Ymd"),
}, maps.Map{ }, maps.Map{
"count": count, "count": count,
"total": total, "total": total,
@@ -134,3 +154,15 @@ func (this *MetricSumStatDAO) FindNodeSum(tx *dbs.Tx, nodeId int64, time string,
} }
return int64(one.(*MetricSumStat).Count), float32(one.(*MetricSumStat).Total), nil return int64(one.(*MetricSumStat).Count), float32(one.(*MetricSumStat).Total), nil
} }
// Clean 清理数据
func (this *MetricSumStatDAO) Clean(tx *dbs.Tx, days int64) error {
_, err := this.Query(tx).
Where("(createdDay IS NULL OR createdDay<:day)").
Param("day", timeutil.FormatTime("Ymd", time.Now().Unix()-days*86400)).
Delete()
if err != nil {
return err
}
return nil
}

View File

@@ -3,4 +3,12 @@ package models
import ( import (
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
_ "github.com/iwind/TeaGo/bootstrap" _ "github.com/iwind/TeaGo/bootstrap"
"testing"
) )
func TestMetricSumStatDAO_Clean(t *testing.T) {
err := NewMetricSumStatDAO().Clean(nil, 20)
if err != nil {
t.Fatal(err)
}
}

View File

@@ -11,6 +11,7 @@ type MetricSumStat struct {
Total float64 `field:"total"` // 总和 Total float64 `field:"total"` // 总和
Time string `field:"time"` // 分钟值YYYYMMDDHHII Time string `field:"time"` // 分钟值YYYYMMDDHHII
Version uint32 `field:"version"` // 版本号 Version uint32 `field:"version"` // 版本号
CreatedDay string `field:"createdDay"` // 创建日期YYYYMMDD
} }
type MetricSumStatOperator struct { type MetricSumStatOperator struct {
@@ -23,6 +24,7 @@ type MetricSumStatOperator struct {
Total interface{} // 总和 Total interface{} // 总和
Time interface{} // 分钟值YYYYMMDDHHII Time interface{} // 分钟值YYYYMMDDHHII
Version interface{} // 版本号 Version interface{} // 版本号
CreatedDay interface{} // 创建日期YYYYMMDD
} }
func NewMetricSumStatOperator() *MetricSumStatOperator { func NewMetricSumStatOperator() *MetricSumStatOperator {

View File

@@ -100,7 +100,7 @@ func TestServerDAO_CheckPortIsUsing(t *testing.T) {
// t.Log("isUsing:", isUsing) // t.Log("isUsing:", isUsing)
//} //}
{ {
isUsing, err := SharedServerDAO.CheckTCPPortIsUsing(tx, 18, 3306, 0, "tcp") isUsing, err := SharedServerDAO.CheckPortIsUsing(tx, 18, "tcp", 3306, 0, "")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }