mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-05 01:20:25 +08:00
增加服务带宽统计
This commit is contained in:
@@ -691,7 +691,6 @@ func (this *MetricStatDAO) Clean(tx *dbs.Tx) error {
|
|||||||
Table(table).
|
Table(table).
|
||||||
Attr("itemId", item.Id).
|
Attr("itemId", item.Id).
|
||||||
Lte("createdDay", expiresDay).
|
Lte("createdDay", expiresDay).
|
||||||
UseIndex("createdDay").
|
|
||||||
Limit(10_000). // 一次性不要删除太多,防止阻塞其他操作
|
Limit(10_000). // 一次性不要删除太多,防止阻塞其他操作
|
||||||
Delete()
|
Delete()
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -237,7 +237,6 @@ func (this *MetricSumStatDAO) Clean(tx *dbs.Tx) error {
|
|||||||
Attr("itemId", item.Id).
|
Attr("itemId", item.Id).
|
||||||
Where("(createdDay IS NULL OR createdDay<:day)").
|
Where("(createdDay IS NULL OR createdDay<:day)").
|
||||||
Param("day", expiresDay).
|
Param("day", expiresDay).
|
||||||
UseIndex("createdDay").
|
|
||||||
Limit(10_000). // 一次性不要删除太多,防止阻塞其他操作
|
Limit(10_000). // 一次性不要删除太多,防止阻塞其他操作
|
||||||
Delete()
|
Delete()
|
||||||
return err
|
return err
|
||||||
|
|||||||
128
internal/db/models/stats/server_bandwidth_stat_dao.go
Normal file
128
internal/db/models/stats/server_bandwidth_stat_dao.go
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
package stats
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/TeaOSLab/EdgeAPI/internal/errors"
|
||||||
|
"github.com/TeaOSLab/EdgeAPI/internal/goman"
|
||||||
|
"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
"github.com/iwind/TeaGo/Tea"
|
||||||
|
"github.com/iwind/TeaGo/dbs"
|
||||||
|
"github.com/iwind/TeaGo/maps"
|
||||||
|
"github.com/iwind/TeaGo/rands"
|
||||||
|
"github.com/iwind/TeaGo/types"
|
||||||
|
timeutil "github.com/iwind/TeaGo/utils/time"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ServerBandwidthStatDAO dbs.DAO
|
||||||
|
|
||||||
|
const (
|
||||||
|
ServerBandwidthStatTablePartials = 20 // 分表数量
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
dbs.OnReadyDone(func() {
|
||||||
|
// 清理数据任务
|
||||||
|
var ticker = time.NewTicker(time.Duration(rands.Int(24, 48)) * time.Hour)
|
||||||
|
goman.New(func() {
|
||||||
|
for range ticker.C {
|
||||||
|
err := SharedServerBandwidthStatDAO.Clean(nil)
|
||||||
|
if err != nil {
|
||||||
|
remotelogs.Error("SharedServerBandwidthStatDAO", "clean expired data failed: "+err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewServerBandwidthStatDAO() *ServerBandwidthStatDAO {
|
||||||
|
return dbs.NewDAO(&ServerBandwidthStatDAO{
|
||||||
|
DAOObject: dbs.DAOObject{
|
||||||
|
DB: Tea.Env,
|
||||||
|
Table: "edgeServerBandwidthStats",
|
||||||
|
Model: new(ServerBandwidthStat),
|
||||||
|
PkName: "id",
|
||||||
|
},
|
||||||
|
}).(*ServerBandwidthStatDAO)
|
||||||
|
}
|
||||||
|
|
||||||
|
var SharedServerBandwidthStatDAO *ServerBandwidthStatDAO
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
dbs.OnReady(func() {
|
||||||
|
SharedServerBandwidthStatDAO = NewServerBandwidthStatDAO()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateServerBandwidth 写入数据
|
||||||
|
func (this *ServerBandwidthStatDAO) UpdateServerBandwidth(tx *dbs.Tx, serverId int64, day string, timeAt string, bytes int64) error {
|
||||||
|
if serverId <= 0 {
|
||||||
|
return errors.New("invalid server id '" + types.String(serverId) + "'")
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.Query(tx).
|
||||||
|
Table(this.partialTable(serverId)).
|
||||||
|
Param("bytes", bytes).
|
||||||
|
InsertOrUpdateQuickly(maps.Map{
|
||||||
|
"serverId": serverId,
|
||||||
|
"day": day,
|
||||||
|
"timeAt": timeAt,
|
||||||
|
"bytes": bytes,
|
||||||
|
}, maps.Map{
|
||||||
|
"bytes": dbs.SQL("bytes+:bytes"),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindServerStats 查找某个时间段的带宽统计
|
||||||
|
// 参数:
|
||||||
|
// - day YYYYMMDD
|
||||||
|
// - timeAt HHII
|
||||||
|
func (this *ServerBandwidthStatDAO) FindServerStats(tx *dbs.Tx, serverId int64, day string, timeFrom string, timeTo string) (result []*ServerBandwidthStat, err error) {
|
||||||
|
_, err = this.Query(tx).
|
||||||
|
Table(this.partialTable(serverId)).
|
||||||
|
Attr("serverId", serverId).
|
||||||
|
Attr("day", day).
|
||||||
|
Between("timeAt", timeFrom, timeTo).
|
||||||
|
Slice(&result).
|
||||||
|
FindAll()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean 清理过期数据
|
||||||
|
func (this *ServerBandwidthStatDAO) Clean(tx *dbs.Tx) error {
|
||||||
|
var day = timeutil.Format("Ymd", time.Now().AddDate(0, 0, -62)) // 保留大约2个月的数据
|
||||||
|
return this.runBatch(func(table string, locker *sync.Mutex) error {
|
||||||
|
_, err := this.Query(tx).
|
||||||
|
Table(table).
|
||||||
|
Lt("day", day).
|
||||||
|
Delete()
|
||||||
|
return err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量执行
|
||||||
|
func (this *ServerBandwidthStatDAO) runBatch(f func(table string, locker *sync.Mutex) error) error {
|
||||||
|
var locker = &sync.Mutex{}
|
||||||
|
var wg = sync.WaitGroup{}
|
||||||
|
wg.Add(ServerBandwidthStatTablePartials)
|
||||||
|
var resultErr error
|
||||||
|
for i := 0; i < ServerBandwidthStatTablePartials; i++ {
|
||||||
|
var table = this.partialTable(int64(i))
|
||||||
|
go func(table string) {
|
||||||
|
defer wg.Done()
|
||||||
|
|
||||||
|
err := f(table, locker)
|
||||||
|
if err != nil {
|
||||||
|
resultErr = err
|
||||||
|
}
|
||||||
|
}(table)
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
return resultErr
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取分区表
|
||||||
|
func (this *ServerBandwidthStatDAO) partialTable(serverId int64) string {
|
||||||
|
return this.Table + "_" + types.String(serverId%int64(ServerBandwidthStatTablePartials))
|
||||||
|
}
|
||||||
48
internal/db/models/stats/server_bandwidth_stat_dao_test.go
Normal file
48
internal/db/models/stats/server_bandwidth_stat_dao_test.go
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
package stats_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/TeaOSLab/EdgeAPI/internal/db/models/stats"
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
_ "github.com/iwind/TeaGo/bootstrap"
|
||||||
|
"github.com/iwind/TeaGo/dbs"
|
||||||
|
"github.com/iwind/TeaGo/rands"
|
||||||
|
timeutil "github.com/iwind/TeaGo/utils/time"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestServerBandwidthStatDAO_UpdateServerBandwidth(t *testing.T) {
|
||||||
|
var dao = stats.NewServerBandwidthStatDAO()
|
||||||
|
var tx *dbs.Tx
|
||||||
|
err := dao.UpdateServerBandwidth(tx, 1, timeutil.Format("Ymd"), timeutil.Format("Hi"), 1024)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
t.Log("ok")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSeverBandwidthStatDAO_InsertManyStats(t *testing.T) {
|
||||||
|
var dao = stats.NewServerBandwidthStatDAO()
|
||||||
|
var tx *dbs.Tx
|
||||||
|
for i := 0; i < 1_000_000; i++ {
|
||||||
|
var day = timeutil.Format("Ymd", time.Now().AddDate(0, 0, -rands.Int(0, 200)))
|
||||||
|
var minute = fmt.Sprintf("%02d%02d", rands.Int(0, 23), rands.Int(0, 59))
|
||||||
|
err := dao.UpdateServerBandwidth(tx, 1, day, minute, 1024)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
t.Log("ok")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestServerBandwidthStatDAO_Clean(t *testing.T) {
|
||||||
|
var dao = stats.NewServerBandwidthStatDAO()
|
||||||
|
var tx *dbs.Tx
|
||||||
|
var before = time.Now()
|
||||||
|
err := dao.Clean(tx)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
t.Log("ok", time.Since(before).Seconds()*1000, "ms")
|
||||||
|
}
|
||||||
22
internal/db/models/stats/server_bandwidth_stat_model.go
Normal file
22
internal/db/models/stats/server_bandwidth_stat_model.go
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package stats
|
||||||
|
|
||||||
|
// ServerBandwidthStat 服务峰值带宽统计
|
||||||
|
type ServerBandwidthStat struct {
|
||||||
|
Id uint64 `field:"id"` // ID
|
||||||
|
ServerId uint64 `field:"serverId"` // 服务ID
|
||||||
|
Day string `field:"day"` // 日期YYYYMMDD
|
||||||
|
TimeAt string `field:"timeAt"` // 时间点HHMM
|
||||||
|
Bytes uint64 `field:"bytes"` // 带宽字节
|
||||||
|
}
|
||||||
|
|
||||||
|
type ServerBandwidthStatOperator struct {
|
||||||
|
Id interface{} // ID
|
||||||
|
ServerId interface{} // 服务ID
|
||||||
|
Day interface{} // 日期YYYYMMDD
|
||||||
|
TimeAt interface{} // 时间点HHMM
|
||||||
|
Bytes interface{} // 带宽字节
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewServerBandwidthStatOperator() *ServerBandwidthStatOperator {
|
||||||
|
return &ServerBandwidthStatOperator{}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
package stats
|
||||||
@@ -14,579 +14,585 @@ import (
|
|||||||
// 注册服务
|
// 注册服务
|
||||||
func (this *APINode) registerServices(server *grpc.Server) {
|
func (this *APINode) registerServices(server *grpc.Server) {
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.APITokenService{}).(*services.APITokenService)
|
var instance = this.serviceInstance(&services.APITokenService{}).(*services.APITokenService)
|
||||||
pb.RegisterAPITokenServiceServer(server, instance)
|
pb.RegisterAPITokenServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.AdminService{}).(*services.AdminService)
|
var instance = this.serviceInstance(&services.AdminService{}).(*services.AdminService)
|
||||||
pb.RegisterAdminServiceServer(server, instance)
|
pb.RegisterAdminServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeGrantService{}).(*services.NodeGrantService)
|
var instance = this.serviceInstance(&services.NodeGrantService{}).(*services.NodeGrantService)
|
||||||
pb.RegisterNodeGrantServiceServer(server, instance)
|
pb.RegisterNodeGrantServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerService{}).(*services.ServerService)
|
var instance = this.serviceInstance(&services.ServerService{}).(*services.ServerService)
|
||||||
pb.RegisterServerServiceServer(server, instance)
|
pb.RegisterServerServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeService{}).(*services.NodeService)
|
var instance = this.serviceInstance(&services.NodeService{}).(*services.NodeService)
|
||||||
pb.RegisterNodeServiceServer(server, instance)
|
pb.RegisterNodeServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeClusterService{}).(*services.NodeClusterService)
|
var instance = this.serviceInstance(&services.NodeClusterService{}).(*services.NodeClusterService)
|
||||||
pb.RegisterNodeClusterServiceServer(server, instance)
|
pb.RegisterNodeClusterServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeIPAddressService{}).(*services.NodeIPAddressService)
|
var instance = this.serviceInstance(&services.NodeIPAddressService{}).(*services.NodeIPAddressService)
|
||||||
pb.RegisterNodeIPAddressServiceServer(server, instance)
|
pb.RegisterNodeIPAddressServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeIPAddressLogService{}).(*services.NodeIPAddressLogService)
|
var instance = this.serviceInstance(&services.NodeIPAddressLogService{}).(*services.NodeIPAddressLogService)
|
||||||
pb.RegisterNodeIPAddressLogServiceServer(server, instance)
|
pb.RegisterNodeIPAddressLogServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeIPAddressThresholdService{}).(*services.NodeIPAddressThresholdService)
|
var instance = this.serviceInstance(&services.NodeIPAddressThresholdService{}).(*services.NodeIPAddressThresholdService)
|
||||||
pb.RegisterNodeIPAddressThresholdServiceServer(server, instance)
|
pb.RegisterNodeIPAddressThresholdServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.APINodeService{}).(*services.APINodeService)
|
var instance = this.serviceInstance(&services.APINodeService{}).(*services.APINodeService)
|
||||||
pb.RegisterAPINodeServiceServer(server, instance)
|
pb.RegisterAPINodeServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.APIMethodStatService{}).(*services.APIMethodStatService)
|
var instance = this.serviceInstance(&services.APIMethodStatService{}).(*services.APIMethodStatService)
|
||||||
pb.RegisterAPIMethodStatServiceServer(server, instance)
|
pb.RegisterAPIMethodStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.OriginService{}).(*services.OriginService)
|
var instance = this.serviceInstance(&services.OriginService{}).(*services.OriginService)
|
||||||
pb.RegisterOriginServiceServer(server, instance)
|
pb.RegisterOriginServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPWebService{}).(*services.HTTPWebService)
|
var instance = this.serviceInstance(&services.HTTPWebService{}).(*services.HTTPWebService)
|
||||||
pb.RegisterHTTPWebServiceServer(server, instance)
|
pb.RegisterHTTPWebServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ReverseProxyService{}).(*services.ReverseProxyService)
|
var instance = this.serviceInstance(&services.ReverseProxyService{}).(*services.ReverseProxyService)
|
||||||
pb.RegisterReverseProxyServiceServer(server, instance)
|
pb.RegisterReverseProxyServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPGzipService{}).(*services.HTTPGzipService)
|
var instance = this.serviceInstance(&services.HTTPGzipService{}).(*services.HTTPGzipService)
|
||||||
pb.RegisterHTTPGzipServiceServer(server, instance)
|
pb.RegisterHTTPGzipServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPHeaderPolicyService{}).(*services.HTTPHeaderPolicyService)
|
var instance = this.serviceInstance(&services.HTTPHeaderPolicyService{}).(*services.HTTPHeaderPolicyService)
|
||||||
pb.RegisterHTTPHeaderPolicyServiceServer(server, instance)
|
pb.RegisterHTTPHeaderPolicyServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPHeaderService{}).(*services.HTTPHeaderService)
|
var instance = this.serviceInstance(&services.HTTPHeaderService{}).(*services.HTTPHeaderService)
|
||||||
pb.RegisterHTTPHeaderServiceServer(server, instance)
|
pb.RegisterHTTPHeaderServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPPageService{}).(*services.HTTPPageService)
|
var instance = this.serviceInstance(&services.HTTPPageService{}).(*services.HTTPPageService)
|
||||||
pb.RegisterHTTPPageServiceServer(server, instance)
|
pb.RegisterHTTPPageServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPAccessLogPolicyService{}).(*services.HTTPAccessLogPolicyService)
|
var instance = this.serviceInstance(&services.HTTPAccessLogPolicyService{}).(*services.HTTPAccessLogPolicyService)
|
||||||
pb.RegisterHTTPAccessLogPolicyServiceServer(server, instance)
|
pb.RegisterHTTPAccessLogPolicyServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPCachePolicyService{}).(*services.HTTPCachePolicyService)
|
var instance = this.serviceInstance(&services.HTTPCachePolicyService{}).(*services.HTTPCachePolicyService)
|
||||||
pb.RegisterHTTPCachePolicyServiceServer(server, instance)
|
pb.RegisterHTTPCachePolicyServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPFirewallPolicyService{}).(*services.HTTPFirewallPolicyService)
|
var instance = this.serviceInstance(&services.HTTPFirewallPolicyService{}).(*services.HTTPFirewallPolicyService)
|
||||||
pb.RegisterHTTPFirewallPolicyServiceServer(server, instance)
|
pb.RegisterHTTPFirewallPolicyServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.FirewallService{}).(*services.FirewallService)
|
var instance = this.serviceInstance(&services.FirewallService{}).(*services.FirewallService)
|
||||||
pb.RegisterFirewallServiceServer(server, instance)
|
pb.RegisterFirewallServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPLocationService{}).(*services.HTTPLocationService)
|
var instance = this.serviceInstance(&services.HTTPLocationService{}).(*services.HTTPLocationService)
|
||||||
pb.RegisterHTTPLocationServiceServer(server, instance)
|
pb.RegisterHTTPLocationServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPWebsocketService{}).(*services.HTTPWebsocketService)
|
var instance = this.serviceInstance(&services.HTTPWebsocketService{}).(*services.HTTPWebsocketService)
|
||||||
pb.RegisterHTTPWebsocketServiceServer(server, instance)
|
pb.RegisterHTTPWebsocketServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPRewriteRuleService{}).(*services.HTTPRewriteRuleService)
|
var instance = this.serviceInstance(&services.HTTPRewriteRuleService{}).(*services.HTTPRewriteRuleService)
|
||||||
pb.RegisterHTTPRewriteRuleServiceServer(server, instance)
|
pb.RegisterHTTPRewriteRuleServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.SSLCertService{}).(*services.SSLCertService)
|
var instance = this.serviceInstance(&services.SSLCertService{}).(*services.SSLCertService)
|
||||||
pb.RegisterSSLCertServiceServer(server, instance)
|
pb.RegisterSSLCertServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.SSLPolicyService{}).(*services.SSLPolicyService)
|
var instance = this.serviceInstance(&services.SSLPolicyService{}).(*services.SSLPolicyService)
|
||||||
pb.RegisterSSLPolicyServiceServer(server, instance)
|
pb.RegisterSSLPolicyServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.SysSettingService{}).(*services.SysSettingService)
|
var instance = this.serviceInstance(&services.SysSettingService{}).(*services.SysSettingService)
|
||||||
pb.RegisterSysSettingServiceServer(server, instance)
|
pb.RegisterSysSettingServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPFirewallRuleGroupService{}).(*services.HTTPFirewallRuleGroupService)
|
var instance = this.serviceInstance(&services.HTTPFirewallRuleGroupService{}).(*services.HTTPFirewallRuleGroupService)
|
||||||
pb.RegisterHTTPFirewallRuleGroupServiceServer(server, instance)
|
pb.RegisterHTTPFirewallRuleGroupServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPFirewallRuleSetService{}).(*services.HTTPFirewallRuleSetService)
|
var instance = this.serviceInstance(&services.HTTPFirewallRuleSetService{}).(*services.HTTPFirewallRuleSetService)
|
||||||
pb.RegisterHTTPFirewallRuleSetServiceServer(server, instance)
|
pb.RegisterHTTPFirewallRuleSetServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.DBNodeService{}).(*services.DBNodeService)
|
var instance = this.serviceInstance(&services.DBNodeService{}).(*services.DBNodeService)
|
||||||
pb.RegisterDBNodeServiceServer(server, instance)
|
pb.RegisterDBNodeServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeLogService{}).(*services.NodeLogService)
|
var instance = this.serviceInstance(&services.NodeLogService{}).(*services.NodeLogService)
|
||||||
pb.RegisterNodeLogServiceServer(server, instance)
|
pb.RegisterNodeLogServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeLoginService{}).(*services.NodeLoginService)
|
var instance = this.serviceInstance(&services.NodeLoginService{}).(*services.NodeLoginService)
|
||||||
pb.RegisterNodeLoginServiceServer(server, instance)
|
pb.RegisterNodeLoginServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPAccessLogService{}).(*services.HTTPAccessLogService)
|
var instance = this.serviceInstance(&services.HTTPAccessLogService{}).(*services.HTTPAccessLogService)
|
||||||
pb.RegisterHTTPAccessLogServiceServer(server, instance)
|
pb.RegisterHTTPAccessLogServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.MessageService{}).(*services.MessageService)
|
var instance = this.serviceInstance(&services.MessageService{}).(*services.MessageService)
|
||||||
pb.RegisterMessageServiceServer(server, instance)
|
pb.RegisterMessageServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.MessageRecipientService{}).(*services.MessageRecipientService)
|
var instance = this.serviceInstance(&services.MessageRecipientService{}).(*services.MessageRecipientService)
|
||||||
pb.RegisterMessageRecipientServiceServer(server, instance)
|
pb.RegisterMessageRecipientServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.MessageReceiverService{}).(*services.MessageReceiverService)
|
var instance = this.serviceInstance(&services.MessageReceiverService{}).(*services.MessageReceiverService)
|
||||||
pb.RegisterMessageReceiverServiceServer(server, instance)
|
pb.RegisterMessageReceiverServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.MessageMediaService{}).(*services.MessageMediaService)
|
var instance = this.serviceInstance(&services.MessageMediaService{}).(*services.MessageMediaService)
|
||||||
pb.RegisterMessageMediaServiceServer(server, instance)
|
pb.RegisterMessageMediaServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.MessageRecipientGroupService{}).(*services.MessageRecipientGroupService)
|
var instance = this.serviceInstance(&services.MessageRecipientGroupService{}).(*services.MessageRecipientGroupService)
|
||||||
pb.RegisterMessageRecipientGroupServiceServer(server, instance)
|
pb.RegisterMessageRecipientGroupServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.MessageMediaInstanceService{}).(*services.MessageMediaInstanceService)
|
var instance = this.serviceInstance(&services.MessageMediaInstanceService{}).(*services.MessageMediaInstanceService)
|
||||||
pb.RegisterMessageMediaInstanceServiceServer(server, instance)
|
pb.RegisterMessageMediaInstanceServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.MessageTaskService{}).(*services.MessageTaskService)
|
var instance = this.serviceInstance(&services.MessageTaskService{}).(*services.MessageTaskService)
|
||||||
pb.RegisterMessageTaskServiceServer(server, instance)
|
pb.RegisterMessageTaskServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.MessageTaskLogService{}).(*services.MessageTaskLogService)
|
var instance = this.serviceInstance(&services.MessageTaskLogService{}).(*services.MessageTaskLogService)
|
||||||
pb.RegisterMessageTaskLogServiceServer(server, instance)
|
pb.RegisterMessageTaskLogServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeGroupService{}).(*services.NodeGroupService)
|
var instance = this.serviceInstance(&services.NodeGroupService{}).(*services.NodeGroupService)
|
||||||
pb.RegisterNodeGroupServiceServer(server, instance)
|
pb.RegisterNodeGroupServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeRegionService{}).(*services.NodeRegionService)
|
var instance = this.serviceInstance(&services.NodeRegionService{}).(*services.NodeRegionService)
|
||||||
pb.RegisterNodeRegionServiceServer(server, instance)
|
pb.RegisterNodeRegionServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodePriceItemService{}).(*services.NodePriceItemService)
|
var instance = this.serviceInstance(&services.NodePriceItemService{}).(*services.NodePriceItemService)
|
||||||
pb.RegisterNodePriceItemServiceServer(server, instance)
|
pb.RegisterNodePriceItemServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerGroupService{}).(*services.ServerGroupService)
|
var instance = this.serviceInstance(&services.ServerGroupService{}).(*services.ServerGroupService)
|
||||||
pb.RegisterServerGroupServiceServer(server, instance)
|
pb.RegisterServerGroupServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.IPLibraryService{}).(*services.IPLibraryService)
|
var instance = this.serviceInstance(&services.IPLibraryService{}).(*services.IPLibraryService)
|
||||||
pb.RegisterIPLibraryServiceServer(server, instance)
|
pb.RegisterIPLibraryServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.FileChunkService{}).(*services.FileChunkService)
|
var instance = this.serviceInstance(&services.FileChunkService{}).(*services.FileChunkService)
|
||||||
pb.RegisterFileChunkServiceServer(server, instance)
|
pb.RegisterFileChunkServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.FileService{}).(*services.FileService)
|
var instance = this.serviceInstance(&services.FileService{}).(*services.FileService)
|
||||||
pb.RegisterFileServiceServer(server, instance)
|
pb.RegisterFileServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.RegionCountryService{}).(*services.RegionCountryService)
|
var instance = this.serviceInstance(&services.RegionCountryService{}).(*services.RegionCountryService)
|
||||||
pb.RegisterRegionCountryServiceServer(server, instance)
|
pb.RegisterRegionCountryServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.RegionProvinceService{}).(*services.RegionProvinceService)
|
var instance = this.serviceInstance(&services.RegionProvinceService{}).(*services.RegionProvinceService)
|
||||||
pb.RegisterRegionProvinceServiceServer(server, instance)
|
pb.RegisterRegionProvinceServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.RegionCityService{}).(*services.RegionCityService)
|
var instance = this.serviceInstance(&services.RegionCityService{}).(*services.RegionCityService)
|
||||||
pb.RegisterRegionCityServiceServer(server, instance)
|
pb.RegisterRegionCityServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.RegionProviderService{}).(*services.RegionProviderService)
|
var instance = this.serviceInstance(&services.RegionProviderService{}).(*services.RegionProviderService)
|
||||||
pb.RegisterRegionProviderServiceServer(server, instance)
|
pb.RegisterRegionProviderServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.IPListService{}).(*services.IPListService)
|
var instance = this.serviceInstance(&services.IPListService{}).(*services.IPListService)
|
||||||
pb.RegisterIPListServiceServer(server, instance)
|
pb.RegisterIPListServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.IPItemService{}).(*services.IPItemService)
|
var instance = this.serviceInstance(&services.IPItemService{}).(*services.IPItemService)
|
||||||
pb.RegisterIPItemServiceServer(server, instance)
|
pb.RegisterIPItemServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.LogService{}).(*services.LogService)
|
var instance = this.serviceInstance(&services.LogService{}).(*services.LogService)
|
||||||
pb.RegisterLogServiceServer(server, instance)
|
pb.RegisterLogServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.DNSProviderService{}).(*services.DNSProviderService)
|
var instance = this.serviceInstance(&services.DNSProviderService{}).(*services.DNSProviderService)
|
||||||
pb.RegisterDNSProviderServiceServer(server, instance)
|
pb.RegisterDNSProviderServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.DNSDomainService{}).(*services.DNSDomainService)
|
var instance = this.serviceInstance(&services.DNSDomainService{}).(*services.DNSDomainService)
|
||||||
pb.RegisterDNSDomainServiceServer(server, instance)
|
pb.RegisterDNSDomainServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.DNSService{}).(*services.DNSService)
|
var instance = this.serviceInstance(&services.DNSService{}).(*services.DNSService)
|
||||||
pb.RegisterDNSServiceServer(server, instance)
|
pb.RegisterDNSServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ACMEUserService{}).(*services.ACMEUserService)
|
var instance = this.serviceInstance(&services.ACMEUserService{}).(*services.ACMEUserService)
|
||||||
pb.RegisterACMEUserServiceServer(server, instance)
|
pb.RegisterACMEUserServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ACMETaskService{}).(*services.ACMETaskService)
|
var instance = this.serviceInstance(&services.ACMETaskService{}).(*services.ACMETaskService)
|
||||||
pb.RegisterACMETaskServiceServer(server, instance)
|
pb.RegisterACMETaskServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ACMEAuthenticationService{}).(*services.ACMEAuthenticationService)
|
var instance = this.serviceInstance(&services.ACMEAuthenticationService{}).(*services.ACMEAuthenticationService)
|
||||||
pb.RegisterACMEAuthenticationServiceServer(server, instance)
|
pb.RegisterACMEAuthenticationServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ACMEProviderService{}).(*services.ACMEProviderService)
|
var instance = this.serviceInstance(&services.ACMEProviderService{}).(*services.ACMEProviderService)
|
||||||
pb.RegisterACMEProviderServiceServer(server, instance)
|
pb.RegisterACMEProviderServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ACMEProviderAccountService{}).(*services.ACMEProviderAccountService)
|
var instance = this.serviceInstance(&services.ACMEProviderAccountService{}).(*services.ACMEProviderAccountService)
|
||||||
pb.RegisterACMEProviderAccountServiceServer(server, instance)
|
pb.RegisterACMEProviderAccountServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.UserService{}).(*services.UserService)
|
var instance = this.serviceInstance(&services.UserService{}).(*services.UserService)
|
||||||
pb.RegisterUserServiceServer(server, instance)
|
pb.RegisterUserServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerDailyStatService{}).(*services.ServerDailyStatService)
|
var instance = this.serviceInstance(&services.ServerDailyStatService{}).(*services.ServerDailyStatService)
|
||||||
pb.RegisterServerDailyStatServiceServer(server, instance)
|
pb.RegisterServerDailyStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.UserBillService{}).(*services.UserBillService)
|
var instance = this.serviceInstance(&services.UserBillService{}).(*services.UserBillService)
|
||||||
pb.RegisterUserBillServiceServer(server, instance)
|
pb.RegisterUserBillServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerBillService{}).(*services.ServerBillService)
|
var instance = this.serviceInstance(&services.ServerBillService{}).(*services.ServerBillService)
|
||||||
pb.RegisterServerBillServiceServer(server, instance)
|
pb.RegisterServerBillServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.UserNodeService{}).(*services.UserNodeService)
|
var instance = this.serviceInstance(&services.UserNodeService{}).(*services.UserNodeService)
|
||||||
pb.RegisterUserNodeServiceServer(server, instance)
|
pb.RegisterUserNodeServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.LoginService{}).(*services.LoginService)
|
var instance = this.serviceInstance(&services.LoginService{}).(*services.LoginService)
|
||||||
pb.RegisterLoginServiceServer(server, instance)
|
pb.RegisterLoginServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.UserAccessKeyService{}).(*services.UserAccessKeyService)
|
var instance = this.serviceInstance(&services.UserAccessKeyService{}).(*services.UserAccessKeyService)
|
||||||
pb.RegisterUserAccessKeyServiceServer(server, instance)
|
pb.RegisterUserAccessKeyServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.SysLockerService{}).(*services.SysLockerService)
|
var instance = this.serviceInstance(&services.SysLockerService{}).(*services.SysLockerService)
|
||||||
pb.RegisterSysLockerServiceServer(server, instance)
|
pb.RegisterSysLockerServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeTaskService{}).(*services.NodeTaskService)
|
var instance = this.serviceInstance(&services.NodeTaskService{}).(*services.NodeTaskService)
|
||||||
pb.RegisterNodeTaskServiceServer(server, instance)
|
pb.RegisterNodeTaskServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeValueService{}).(*services.NodeValueService)
|
var instance = this.serviceInstance(&services.NodeValueService{}).(*services.NodeValueService)
|
||||||
pb.RegisterNodeValueServiceServer(server, instance)
|
pb.RegisterNodeValueServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.DBService{}).(*services.DBService)
|
var instance = this.serviceInstance(&services.DBService{}).(*services.DBService)
|
||||||
pb.RegisterDBServiceServer(server, instance)
|
pb.RegisterDBServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerRegionCityMonthlyStatService{}).(*services.ServerRegionCityMonthlyStatService)
|
var instance = this.serviceInstance(&services.ServerRegionCityMonthlyStatService{}).(*services.ServerRegionCityMonthlyStatService)
|
||||||
pb.RegisterServerRegionCityMonthlyStatServiceServer(server, instance)
|
pb.RegisterServerRegionCityMonthlyStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerRegionCountryMonthlyStatService{}).(*services.ServerRegionCountryMonthlyStatService)
|
var instance = this.serviceInstance(&services.ServerRegionCountryMonthlyStatService{}).(*services.ServerRegionCountryMonthlyStatService)
|
||||||
pb.RegisterServerRegionCountryMonthlyStatServiceServer(server, instance)
|
pb.RegisterServerRegionCountryMonthlyStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerRegionProvinceMonthlyStatService{}).(*services.ServerRegionProvinceMonthlyStatService)
|
var instance = this.serviceInstance(&services.ServerRegionProvinceMonthlyStatService{}).(*services.ServerRegionProvinceMonthlyStatService)
|
||||||
pb.RegisterServerRegionProvinceMonthlyStatServiceServer(server, instance)
|
pb.RegisterServerRegionProvinceMonthlyStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerRegionProviderMonthlyStatService{}).(*services.ServerRegionProviderMonthlyStatService)
|
var instance = this.serviceInstance(&services.ServerRegionProviderMonthlyStatService{}).(*services.ServerRegionProviderMonthlyStatService)
|
||||||
pb.RegisterServerRegionProviderMonthlyStatServiceServer(server, instance)
|
pb.RegisterServerRegionProviderMonthlyStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerClientSystemMonthlyStatService{}).(*services.ServerClientSystemMonthlyStatService)
|
var instance = this.serviceInstance(&services.ServerClientSystemMonthlyStatService{}).(*services.ServerClientSystemMonthlyStatService)
|
||||||
pb.RegisterServerClientSystemMonthlyStatServiceServer(server, instance)
|
pb.RegisterServerClientSystemMonthlyStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerClientBrowserMonthlyStatService{}).(*services.ServerClientBrowserMonthlyStatService)
|
var instance = this.serviceInstance(&services.ServerClientBrowserMonthlyStatService{}).(*services.ServerClientBrowserMonthlyStatService)
|
||||||
pb.RegisterServerClientBrowserMonthlyStatServiceServer(server, instance)
|
pb.RegisterServerClientBrowserMonthlyStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerHTTPFirewallDailyStatService{}).(*services.ServerHTTPFirewallDailyStatService)
|
var instance = this.serviceInstance(&services.ServerHTTPFirewallDailyStatService{}).(*services.ServerHTTPFirewallDailyStatService)
|
||||||
pb.RegisterServerHTTPFirewallDailyStatServiceServer(server, instance)
|
pb.RegisterServerHTTPFirewallDailyStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.DNSTaskService{}).(*services.DNSTaskService)
|
var instance = this.serviceInstance(&services.DNSTaskService{}).(*services.DNSTaskService)
|
||||||
pb.RegisterDNSTaskServiceServer(server, instance)
|
pb.RegisterDNSTaskServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeClusterFirewallActionService{}).(*services.NodeClusterFirewallActionService)
|
var instance = this.serviceInstance(&services.NodeClusterFirewallActionService{}).(*services.NodeClusterFirewallActionService)
|
||||||
pb.RegisterNodeClusterFirewallActionServiceServer(server, instance)
|
pb.RegisterNodeClusterFirewallActionServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.MonitorNodeService{}).(*services.MonitorNodeService)
|
var instance = this.serviceInstance(&services.MonitorNodeService{}).(*services.MonitorNodeService)
|
||||||
pb.RegisterMonitorNodeServiceServer(server, instance)
|
pb.RegisterMonitorNodeServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.AuthorityNodeService{}).(*services.AuthorityNodeService)
|
var instance = this.serviceInstance(&services.AuthorityNodeService{}).(*services.AuthorityNodeService)
|
||||||
pb.RegisterAuthorityNodeServiceServer(server, instance)
|
pb.RegisterAuthorityNodeServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.LatestItemService{}).(*services.LatestItemService)
|
var instance = this.serviceInstance(&services.LatestItemService{}).(*services.LatestItemService)
|
||||||
pb.RegisterLatestItemServiceServer(server, instance)
|
pb.RegisterLatestItemServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeThresholdService{}).(*services.NodeThresholdService)
|
var instance = this.serviceInstance(&services.NodeThresholdService{}).(*services.NodeThresholdService)
|
||||||
pb.RegisterNodeThresholdServiceServer(server, instance)
|
pb.RegisterNodeThresholdServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPFastcgiService{}).(*services.HTTPFastcgiService)
|
var instance = this.serviceInstance(&services.HTTPFastcgiService{}).(*services.HTTPFastcgiService)
|
||||||
pb.RegisterHTTPFastcgiServiceServer(server, instance)
|
pb.RegisterHTTPFastcgiServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&nameservers.NSClusterService{}).(*nameservers.NSClusterService)
|
var instance = this.serviceInstance(&nameservers.NSClusterService{}).(*nameservers.NSClusterService)
|
||||||
pb.RegisterNSClusterServiceServer(server, instance)
|
pb.RegisterNSClusterServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&nameservers.NSNodeService{}).(*nameservers.NSNodeService)
|
var instance = this.serviceInstance(&nameservers.NSNodeService{}).(*nameservers.NSNodeService)
|
||||||
pb.RegisterNSNodeServiceServer(server, instance)
|
pb.RegisterNSNodeServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&nameservers.NSDomainService{}).(*nameservers.NSDomainService)
|
var instance = this.serviceInstance(&nameservers.NSDomainService{}).(*nameservers.NSDomainService)
|
||||||
pb.RegisterNSDomainServiceServer(server, instance)
|
pb.RegisterNSDomainServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&nameservers.NSRecordService{}).(*nameservers.NSRecordService)
|
var instance = this.serviceInstance(&nameservers.NSRecordService{}).(*nameservers.NSRecordService)
|
||||||
pb.RegisterNSRecordServiceServer(server, instance)
|
pb.RegisterNSRecordServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&nameservers.NSRouteService{}).(*nameservers.NSRouteService)
|
var instance = this.serviceInstance(&nameservers.NSRouteService{}).(*nameservers.NSRouteService)
|
||||||
pb.RegisterNSRouteServiceServer(server, instance)
|
pb.RegisterNSRouteServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&nameservers.NSKeyService{}).(*nameservers.NSKeyService)
|
var instance = this.serviceInstance(&nameservers.NSKeyService{}).(*nameservers.NSKeyService)
|
||||||
pb.RegisterNSKeyServiceServer(server, instance)
|
pb.RegisterNSKeyServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&nameservers.NSAccessLogService{}).(*nameservers.NSAccessLogService)
|
var instance = this.serviceInstance(&nameservers.NSAccessLogService{}).(*nameservers.NSAccessLogService)
|
||||||
pb.RegisterNSAccessLogServiceServer(server, instance)
|
pb.RegisterNSAccessLogServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&nameservers.NSRecordHourlyStatService{}).(*nameservers.NSRecordHourlyStatService)
|
var instance = this.serviceInstance(&nameservers.NSRecordHourlyStatService{}).(*nameservers.NSRecordHourlyStatService)
|
||||||
pb.RegisterNSRecordHourlyStatServiceServer(server, instance)
|
pb.RegisterNSRecordHourlyStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&nameservers.NSQuestionOptionService{}).(*nameservers.NSQuestionOptionService)
|
var instance = this.serviceInstance(&nameservers.NSQuestionOptionService{}).(*nameservers.NSQuestionOptionService)
|
||||||
pb.RegisterNSQuestionOptionServiceServer(server, instance)
|
pb.RegisterNSQuestionOptionServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&nameservers.NSService{}).(*nameservers.NSService)
|
var instance = this.serviceInstance(&nameservers.NSService{}).(*nameservers.NSService)
|
||||||
pb.RegisterNSServiceServer(server, instance)
|
pb.RegisterNSServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPAuthPolicyService{}).(*services.HTTPAuthPolicyService)
|
var instance = this.serviceInstance(&services.HTTPAuthPolicyService{}).(*services.HTTPAuthPolicyService)
|
||||||
pb.RegisterHTTPAuthPolicyServiceServer(server, instance)
|
pb.RegisterHTTPAuthPolicyServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.MetricItemService{}).(*services.MetricItemService)
|
var instance = this.serviceInstance(&services.MetricItemService{}).(*services.MetricItemService)
|
||||||
pb.RegisterMetricItemServiceServer(server, instance)
|
pb.RegisterMetricItemServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.NodeClusterMetricItemService{}).(*services.NodeClusterMetricItemService)
|
var instance = this.serviceInstance(&services.NodeClusterMetricItemService{}).(*services.NodeClusterMetricItemService)
|
||||||
pb.RegisterNodeClusterMetricItemServiceServer(server, instance)
|
pb.RegisterNodeClusterMetricItemServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.MetricStatService{}).(*services.MetricStatService)
|
var instance = this.serviceInstance(&services.MetricStatService{}).(*services.MetricStatService)
|
||||||
pb.RegisterMetricStatServiceServer(server, instance)
|
pb.RegisterMetricStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.MetricChartService{}).(*services.MetricChartService)
|
var instance = this.serviceInstance(&services.MetricChartService{}).(*services.MetricChartService)
|
||||||
pb.RegisterMetricChartServiceServer(server, instance)
|
pb.RegisterMetricChartServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerStatBoardService{}).(*services.ServerStatBoardService)
|
var instance = this.serviceInstance(&services.ServerStatBoardService{}).(*services.ServerStatBoardService)
|
||||||
pb.RegisterServerStatBoardServiceServer(server, instance)
|
pb.RegisterServerStatBoardServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerStatBoardChartService{}).(*services.ServerStatBoardChartService)
|
var instance = this.serviceInstance(&services.ServerStatBoardChartService{}).(*services.ServerStatBoardChartService)
|
||||||
pb.RegisterServerStatBoardChartServiceServer(server, instance)
|
pb.RegisterServerStatBoardChartServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.PlanService{}).(*services.PlanService)
|
var instance = this.serviceInstance(&services.PlanService{}).(*services.PlanService)
|
||||||
pb.RegisterPlanServiceServer(server, instance)
|
pb.RegisterPlanServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.UserPlanService{}).(*services.UserPlanService)
|
var instance = this.serviceInstance(&services.UserPlanService{}).(*services.UserPlanService)
|
||||||
pb.RegisterUserPlanServiceServer(server, instance)
|
pb.RegisterUserPlanServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.ServerDomainHourlyStatService{}).(*services.ServerDomainHourlyStatService)
|
var instance = this.serviceInstance(&services.ServerDomainHourlyStatService{}).(*services.ServerDomainHourlyStatService)
|
||||||
pb.RegisterServerDomainHourlyStatServiceServer(server, instance)
|
pb.RegisterServerDomainHourlyStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.TrafficDailyStatService{}).(*services.TrafficDailyStatService)
|
var instance = this.serviceInstance(&services.TrafficDailyStatService{}).(*services.TrafficDailyStatService)
|
||||||
pb.RegisterTrafficDailyStatServiceServer(server, instance)
|
pb.RegisterTrafficDailyStatServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPCacheTaskKeyService{}).(*services.HTTPCacheTaskKeyService)
|
var instance = this.serviceInstance(&services.HTTPCacheTaskKeyService{}).(*services.HTTPCacheTaskKeyService)
|
||||||
pb.RegisterHTTPCacheTaskKeyServiceServer(server, instance)
|
pb.RegisterHTTPCacheTaskKeyServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
instance := this.serviceInstance(&services.HTTPCacheTaskService{}).(*services.HTTPCacheTaskService)
|
var instance = this.serviceInstance(&services.HTTPCacheTaskService{}).(*services.HTTPCacheTaskService)
|
||||||
pb.RegisterHTTPCacheTaskServiceServer(server, instance)
|
pb.RegisterHTTPCacheTaskServiceServer(server, instance)
|
||||||
this.rest(instance)
|
this.rest(instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
var instance = this.serviceInstance(&services.ServerBandwidthStatService{}).(*services.ServerBandwidthStatService)
|
||||||
|
pb.RegisterServerBandwidthStatServiceServer(server, instance)
|
||||||
|
this.rest(instance)
|
||||||
|
}
|
||||||
|
|
||||||
APINodeServicesRegister(this, server)
|
APINodeServicesRegister(this, server)
|
||||||
|
|
||||||
// TODO check service names
|
// TODO check service names
|
||||||
for serviceName := range server.GetServiceInfo() {
|
for serviceName := range server.GetServiceInfo() {
|
||||||
index := strings.LastIndex(serviceName, ".")
|
var index = strings.LastIndex(serviceName, ".")
|
||||||
if index >= 0 {
|
if index >= 0 {
|
||||||
serviceName = serviceName[index+1:]
|
serviceName = serviceName[index+1:]
|
||||||
}
|
}
|
||||||
@@ -602,7 +608,7 @@ func (this *APINode) rest(instance interface{}) {
|
|||||||
defer this.serviceInstanceLocker.Unlock()
|
defer this.serviceInstanceLocker.Unlock()
|
||||||
|
|
||||||
var name = reflect.TypeOf(instance).String()
|
var name = reflect.TypeOf(instance).String()
|
||||||
index := strings.LastIndex(name, ".")
|
var index = strings.LastIndex(name, ".")
|
||||||
if index >= 0 {
|
if index >= 0 {
|
||||||
name = name[index+1:]
|
name = name[index+1:]
|
||||||
}
|
}
|
||||||
@@ -618,7 +624,7 @@ func (this *APINode) serviceInstance(instance interface{}) interface{} {
|
|||||||
this.serviceInstanceLocker.Lock()
|
this.serviceInstanceLocker.Lock()
|
||||||
defer this.serviceInstanceLocker.Unlock()
|
defer this.serviceInstanceLocker.Unlock()
|
||||||
|
|
||||||
typeName := reflect.TypeOf(instance).String()
|
var typeName = reflect.TypeOf(instance).String()
|
||||||
result, ok := this.serviceInstanceMap[typeName]
|
result, ok := this.serviceInstanceMap[typeName]
|
||||||
if ok {
|
if ok {
|
||||||
return result
|
return result
|
||||||
|
|||||||
80
internal/rpc/services/service_server_bandwidth_stat.go
Normal file
80
internal/rpc/services/service_server_bandwidth_stat.go
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
||||||
|
|
||||||
|
package services
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/TeaOSLab/EdgeAPI/internal/db/models/stats"
|
||||||
|
"github.com/TeaOSLab/EdgeAPI/internal/goman"
|
||||||
|
"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
|
"github.com/iwind/TeaGo/Tea"
|
||||||
|
"github.com/iwind/TeaGo/dbs"
|
||||||
|
"github.com/iwind/TeaGo/types"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
var serverBandwidthStatsMap = map[string]*pb.ServerBandwidthStat{} // key => bandwidth
|
||||||
|
var serverBandwidthStatsLocker = &sync.Mutex{}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
var ticker = time.NewTicker(5 * time.Minute)
|
||||||
|
if Tea.IsTesting() {
|
||||||
|
ticker = time.NewTicker(1 * time.Minute)
|
||||||
|
}
|
||||||
|
|
||||||
|
dbs.OnReadyDone(func() {
|
||||||
|
goman.New(func() {
|
||||||
|
for range ticker.C {
|
||||||
|
func() {
|
||||||
|
var tx *dbs.Tx
|
||||||
|
|
||||||
|
serverBandwidthStatsLocker.Lock()
|
||||||
|
var m = serverBandwidthStatsMap
|
||||||
|
serverBandwidthStatsMap = map[string]*pb.ServerBandwidthStat{}
|
||||||
|
serverBandwidthStatsLocker.Unlock()
|
||||||
|
|
||||||
|
for _, stat := range m {
|
||||||
|
err := stats.SharedServerBandwidthStatDAO.UpdateServerBandwidth(tx, stat.ServerId, stat.Day, stat.TimeAt, stat.Bytes)
|
||||||
|
if err != nil {
|
||||||
|
remotelogs.Error("ServerBandwidthStatService", "dump bandwidth stats failed: "+err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
type ServerBandwidthStatService struct {
|
||||||
|
BaseService
|
||||||
|
}
|
||||||
|
|
||||||
|
// UploadServerBandwidthStats 上传带宽统计
|
||||||
|
func (this *ServerBandwidthStatService) UploadServerBandwidthStats(ctx context.Context, req *pb.UploadServerBandwidthStatsRequest) (*pb.RPCSuccess, error) {
|
||||||
|
_, err := this.ValidateNode(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, stat := range req.ServerBandwidthStats {
|
||||||
|
var key = types.String(stat.ServerId) + "@" + stat.Day + "@" + stat.TimeAt
|
||||||
|
serverBandwidthStatsLocker.Lock()
|
||||||
|
oldStat, ok := serverBandwidthStatsMap[key]
|
||||||
|
if ok {
|
||||||
|
oldStat.Bytes += stat.Bytes
|
||||||
|
} else {
|
||||||
|
serverBandwidthStatsMap[key] = &pb.ServerBandwidthStat{
|
||||||
|
Id: 0,
|
||||||
|
ServerId: stat.ServerId,
|
||||||
|
Day: stat.Day,
|
||||||
|
TimeAt: stat.TimeAt,
|
||||||
|
Bytes: stat.Bytes,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
serverBandwidthStatsLocker.Unlock()
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.Success()
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/TeaOSLab/EdgeAPI/internal/db/models/stats"
|
"github.com/TeaOSLab/EdgeAPI/internal/db/models/stats"
|
||||||
"github.com/TeaOSLab/EdgeAPI/internal/errors"
|
"github.com/TeaOSLab/EdgeAPI/internal/errors"
|
||||||
"github.com/TeaOSLab/EdgeAPI/internal/rpc/tasks"
|
"github.com/TeaOSLab/EdgeAPI/internal/rpc/tasks"
|
||||||
|
"github.com/TeaOSLab/EdgeAPI/internal/utils"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
|
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
@@ -84,7 +85,7 @@ func (this *ServerStatBoardService) ComposeServerStatNodeClusterBoard(ctx contex
|
|||||||
result.CountServers = countServers
|
result.CountServers = countServers
|
||||||
|
|
||||||
// 按日流量统计
|
// 按日流量统计
|
||||||
dayFrom := timeutil.Format("Ymd", time.Now().AddDate(0, 0, -14))
|
var dayFrom = timeutil.Format("Ymd", time.Now().AddDate(0, 0, -14))
|
||||||
dailyTrafficStats, err := stats.SharedNodeClusterTrafficDailyStatDAO.FindDailyStats(tx, req.NodeClusterId, dayFrom, timeutil.Format("Ymd"))
|
dailyTrafficStats, err := stats.SharedNodeClusterTrafficDailyStatDAO.FindDailyStats(tx, req.NodeClusterId, dayFrom, timeutil.Format("Ymd"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -102,8 +103,8 @@ func (this *ServerStatBoardService) ComposeServerStatNodeClusterBoard(ctx contex
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 小时流量统计
|
// 小时流量统计
|
||||||
hourFrom := timeutil.Format("YmdH", time.Now().Add(-23*time.Hour))
|
var hourFrom = timeutil.Format("YmdH", time.Now().Add(-23*time.Hour))
|
||||||
hourTo := timeutil.Format("YmdH")
|
var hourTo = timeutil.Format("YmdH")
|
||||||
hourlyTrafficStats, err := stats.SharedNodeTrafficHourlyStatDAO.FindHourlyStatsWithClusterId(tx, req.NodeClusterId, hourFrom, hourTo)
|
hourlyTrafficStats, err := stats.SharedNodeTrafficHourlyStatDAO.FindHourlyStatsWithClusterId(tx, req.NodeClusterId, hourFrom, hourTo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -304,7 +305,7 @@ func (this *ServerStatBoardService) ComposeServerStatNodeBoard(ctx context.Conte
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 按日流量统计
|
// 按日流量统计
|
||||||
dayFrom := timeutil.Format("Ymd", time.Now().AddDate(0, 0, -14))
|
var dayFrom = timeutil.Format("Ymd", time.Now().AddDate(0, 0, -14))
|
||||||
dailyTrafficStats, err := stats.SharedNodeTrafficDailyStatDAO.FindDailyStats(tx, "node", req.NodeId, dayFrom, timeutil.Format("Ymd"))
|
dailyTrafficStats, err := stats.SharedNodeTrafficDailyStatDAO.FindDailyStats(tx, "node", req.NodeId, dayFrom, timeutil.Format("Ymd"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -322,8 +323,8 @@ func (this *ServerStatBoardService) ComposeServerStatNodeBoard(ctx context.Conte
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 小时流量统计
|
// 小时流量统计
|
||||||
hourFrom := timeutil.Format("YmdH", time.Now().Add(-23*time.Hour))
|
var hourFrom = timeutil.Format("YmdH", time.Now().Add(-23*time.Hour))
|
||||||
hourTo := timeutil.Format("YmdH")
|
var hourTo = timeutil.Format("YmdH")
|
||||||
hourlyTrafficStats, err := stats.SharedNodeTrafficHourlyStatDAO.FindHourlyStatsWithNodeId(tx, "node", req.NodeId, hourFrom, hourTo)
|
hourlyTrafficStats, err := stats.SharedNodeTrafficHourlyStatDAO.FindHourlyStatsWithNodeId(tx, "node", req.NodeId, hourFrom, hourTo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -407,8 +408,45 @@ func (this *ServerStatBoardService) ComposeServerStatBoard(ctx context.Context,
|
|||||||
var result = &pb.ComposeServerStatBoardResponse{}
|
var result = &pb.ComposeServerStatBoardResponse{}
|
||||||
var tx = this.NullTx()
|
var tx = this.NullTx()
|
||||||
|
|
||||||
|
// 带宽统计
|
||||||
|
{
|
||||||
|
var bandwidthMinutes = utils.RangeMinutes(time.Now(), 12, 5)
|
||||||
|
var bandwidthStatMap = map[string]*pb.ServerBandwidthStat{}
|
||||||
|
for _, r := range utils.GroupMinuteRanges(bandwidthMinutes) {
|
||||||
|
bandwidthStats, err := stats.SharedServerBandwidthStatDAO.FindServerStats(tx, req.ServerId, r.Day, r.MinuteFrom, r.MinuteTo)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for _, stat := range bandwidthStats {
|
||||||
|
bandwidthStatMap[stat.Day+"@"+stat.TimeAt] = &pb.ServerBandwidthStat{
|
||||||
|
Id: int64(stat.Id),
|
||||||
|
ServerId: int64(stat.ServerId),
|
||||||
|
Day: stat.Day,
|
||||||
|
TimeAt: stat.TimeAt,
|
||||||
|
Bytes: int64(stat.Bytes),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var pbBandwidthStats = []*pb.ServerBandwidthStat{}
|
||||||
|
for _, minute := range bandwidthMinutes {
|
||||||
|
stat, ok := bandwidthStatMap[minute.Day+"@"+minute.Minute]
|
||||||
|
if ok {
|
||||||
|
pbBandwidthStats = append(pbBandwidthStats, stat)
|
||||||
|
} else {
|
||||||
|
pbBandwidthStats = append(pbBandwidthStats, &pb.ServerBandwidthStat{
|
||||||
|
Id: 0,
|
||||||
|
ServerId: req.ServerId,
|
||||||
|
Day: minute.Day,
|
||||||
|
TimeAt: minute.Minute,
|
||||||
|
Bytes: 0,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result.ServerBandwidthStats = pbBandwidthStats
|
||||||
|
}
|
||||||
|
|
||||||
// 按日流量统计
|
// 按日流量统计
|
||||||
dayFrom := timeutil.Format("Ymd", time.Now().AddDate(0, 0, -14))
|
var dayFrom = timeutil.Format("Ymd", time.Now().AddDate(0, 0, -14))
|
||||||
dailyTrafficStats, err := models.SharedServerDailyStatDAO.FindDailyStats(tx, req.ServerId, dayFrom, timeutil.Format("Ymd"))
|
dailyTrafficStats, err := models.SharedServerDailyStatDAO.FindDailyStats(tx, req.ServerId, dayFrom, timeutil.Format("Ymd"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -426,8 +464,8 @@ func (this *ServerStatBoardService) ComposeServerStatBoard(ctx context.Context,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 小时流量统计
|
// 小时流量统计
|
||||||
hourFrom := timeutil.Format("YmdH", time.Now().Add(-23*time.Hour))
|
var hourFrom = timeutil.Format("YmdH", time.Now().Add(-23*time.Hour))
|
||||||
hourTo := timeutil.Format("YmdH")
|
var hourTo = timeutil.Format("YmdH")
|
||||||
hourlyTrafficStats, err := models.SharedServerDailyStatDAO.FindHourlyStats(tx, req.ServerId, hourFrom, hourTo)
|
hourlyTrafficStats, err := models.SharedServerDailyStatDAO.FindHourlyStats(tx, req.ServerId, hourFrom, hourTo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -9,6 +9,19 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 分钟时间点
|
||||||
|
type timeMinute struct {
|
||||||
|
Day string
|
||||||
|
Minute string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分钟时间范围
|
||||||
|
type timeMinuteRange struct {
|
||||||
|
Day string
|
||||||
|
MinuteFrom string
|
||||||
|
MinuteTo string
|
||||||
|
}
|
||||||
|
|
||||||
// RangeDays 计算日期之间的所有日期,格式为YYYYMMDD
|
// RangeDays 计算日期之间的所有日期,格式为YYYYMMDD
|
||||||
func RangeDays(dayFrom string, dayTo string) ([]string, error) {
|
func RangeDays(dayFrom string, dayTo string) ([]string, error) {
|
||||||
ok, err := regexp.MatchString(`^\d{8}$`, dayFrom)
|
ok, err := regexp.MatchString(`^\d{8}$`, dayFrom)
|
||||||
@@ -79,15 +92,15 @@ func RangeMonths(dayFrom string, dayTo string) ([]string, error) {
|
|||||||
dayFrom, dayTo = dayTo, dayFrom
|
dayFrom, dayTo = dayTo, dayFrom
|
||||||
}
|
}
|
||||||
|
|
||||||
result := []string{dayFrom[:6]}
|
var result = []string{dayFrom[:6]}
|
||||||
|
|
||||||
year := types.Int(dayFrom[:4])
|
var year = types.Int(dayFrom[:4])
|
||||||
month := types.Int(dayFrom[4:6])
|
var month = types.Int(dayFrom[4:6])
|
||||||
day := types.Int(dayFrom[6:])
|
var day = types.Int(dayFrom[6:])
|
||||||
t := time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.Local)
|
var t = time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.Local)
|
||||||
for {
|
for {
|
||||||
t = t.AddDate(0, 0, 20)
|
t = t.AddDate(0, 0, 20)
|
||||||
newDay := timeutil.Format("Ymd", t)
|
var newDay = timeutil.Format("Ymd", t)
|
||||||
if newDay <= dayTo {
|
if newDay <= dayTo {
|
||||||
var monthString = newDay[:6]
|
var monthString = newDay[:6]
|
||||||
if !lists.ContainsString(result, monthString) {
|
if !lists.ContainsString(result, monthString) {
|
||||||
@@ -129,17 +142,17 @@ func RangeHours(hourFrom string, hourTo string) ([]string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 不能超过N天
|
// 不能超过N天
|
||||||
maxHours := 100 - 1 // -1 是去掉默认加入的dayFrom
|
var maxHours = 100 - 1 // -1 是去掉默认加入的dayFrom
|
||||||
result := []string{hourFrom}
|
var result = []string{hourFrom}
|
||||||
|
|
||||||
year := types.Int(hourFrom[:4])
|
var year = types.Int(hourFrom[:4])
|
||||||
month := types.Int(hourFrom[4:6])
|
var month = types.Int(hourFrom[4:6])
|
||||||
day := types.Int(hourFrom[6:8])
|
var day = types.Int(hourFrom[6:8])
|
||||||
hour := types.Int(hourFrom[8:])
|
var hour = types.Int(hourFrom[8:])
|
||||||
t := time.Date(year, time.Month(month), day, hour, 0, 0, 0, time.Local)
|
var t = time.Date(year, time.Month(month), day, hour, 0, 0, 0, time.Local)
|
||||||
for {
|
for {
|
||||||
t = t.Add(1 * time.Hour)
|
t = t.Add(1 * time.Hour)
|
||||||
newHour := timeutil.Format("YmdH", t)
|
var newHour = timeutil.Format("YmdH", t)
|
||||||
if newHour <= hourTo {
|
if newHour <= hourTo {
|
||||||
result = append(result, newHour)
|
result = append(result, newHour)
|
||||||
} else {
|
} else {
|
||||||
@@ -154,3 +167,56 @@ func RangeHours(hourFrom string, hourTo string) ([]string, error) {
|
|||||||
|
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RangeMinutes 计算若干个时间点,返回结果为 [ [day1, minute1], [day2, minute2] ... ]
|
||||||
|
func RangeMinutes(toTime time.Time, count int, everyMinutes int64) []timeMinute {
|
||||||
|
var everySeconds = everyMinutes * 60
|
||||||
|
if everySeconds <= 0 {
|
||||||
|
everySeconds = 300
|
||||||
|
}
|
||||||
|
var result = []timeMinute{}
|
||||||
|
var fromTime = time.Unix(toTime.Unix()-everySeconds*int64(count-1), 0)
|
||||||
|
for {
|
||||||
|
var timestamp = fromTime.Unix() / everySeconds * everySeconds
|
||||||
|
result = append(result, timeMinute{
|
||||||
|
Day: timeutil.FormatTime("Ymd", timestamp),
|
||||||
|
Minute: timeutil.FormatTime("Hi", timestamp),
|
||||||
|
})
|
||||||
|
fromTime = time.Unix(fromTime.Unix()+everySeconds, 0)
|
||||||
|
|
||||||
|
count--
|
||||||
|
if count <= 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
// GroupMinuteRanges 将时间点分组
|
||||||
|
func GroupMinuteRanges(minutes []timeMinute) []timeMinuteRange {
|
||||||
|
var result = []*timeMinuteRange{}
|
||||||
|
var lastDay = ""
|
||||||
|
var lastRange *timeMinuteRange
|
||||||
|
for _, minute := range minutes {
|
||||||
|
if minute.Day != lastDay {
|
||||||
|
lastDay = minute.Day
|
||||||
|
lastRange = &timeMinuteRange{
|
||||||
|
Day: minute.Day,
|
||||||
|
MinuteFrom: minute.Minute,
|
||||||
|
MinuteTo: minute.Minute,
|
||||||
|
}
|
||||||
|
result = append(result, lastRange)
|
||||||
|
} else {
|
||||||
|
if lastRange != nil {
|
||||||
|
lastRange.MinuteTo = minute.Minute
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var finalResult = []timeMinuteRange{}
|
||||||
|
for _, minutePtr := range result {
|
||||||
|
finalResult = append(finalResult, *minutePtr)
|
||||||
|
}
|
||||||
|
return finalResult
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
package utils
|
package utils_test
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"github.com/TeaOSLab/EdgeAPI/internal/utils"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
func TestRangeDays(t *testing.T) {
|
func TestRangeDays(t *testing.T) {
|
||||||
days, err := RangeDays("20210101", "20210115")
|
days, err := utils.RangeDays("20210101", "20210115")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -11,7 +15,7 @@ func TestRangeDays(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestRangeMonth(t *testing.T) {
|
func TestRangeMonth(t *testing.T) {
|
||||||
days, err := RangeMonths("20200101", "20210115")
|
days, err := utils.RangeMonths("20200101", "20210115")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -20,7 +24,7 @@ func TestRangeMonth(t *testing.T) {
|
|||||||
|
|
||||||
func TestRangeHours(t *testing.T) {
|
func TestRangeHours(t *testing.T) {
|
||||||
{
|
{
|
||||||
hours, err := RangeHours("2021010100", "2021010123")
|
hours, err := utils.RangeHours("2021010100", "2021010123")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -28,10 +32,49 @@ func TestRangeHours(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
hours, err := RangeHours("2021010105", "2021010112")
|
hours, err := utils.RangeHours("2021010105", "2021010112")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
t.Log(hours)
|
t.Log(hours)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRangeMinutes(t *testing.T) {
|
||||||
|
{
|
||||||
|
var minutes = utils.RangeMinutes(time.Now(), 5, 5)
|
||||||
|
t.Log(minutes)
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
var minutes = utils.RangeMinutes(time.Now(), 5, 3)
|
||||||
|
t.Log(minutes)
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
var now = time.Now()
|
||||||
|
var hour = now.Hour()
|
||||||
|
var minute = now.Minute()
|
||||||
|
now = now.Add(-time.Duration(hour) * time.Hour)
|
||||||
|
now = now.Add(-time.Duration(minute-7) * time.Minute) // 后一天的 00:07 开始往前计算
|
||||||
|
var minutes = utils.RangeMinutes(now, 5, 5)
|
||||||
|
t.Log(minutes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGroupMinuteRanges(t *testing.T) {
|
||||||
|
{
|
||||||
|
var minutes = utils.GroupMinuteRanges(utils.RangeMinutes(time.Now(), 5, 5))
|
||||||
|
t.Log(minutes)
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
var now = time.Now()
|
||||||
|
var hour = now.Hour()
|
||||||
|
var minute = now.Minute()
|
||||||
|
now = now.Add(-time.Duration(hour) * time.Hour)
|
||||||
|
now = now.Add(-time.Duration(minute-7) * time.Minute) // 后一天的 00:07 开始往前计算
|
||||||
|
var minutes = utils.GroupMinuteRanges(utils.RangeMinutes(now, 5, 5))
|
||||||
|
t.Log(minutes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user