124 lines
3.0 KiB
Go
124 lines
3.0 KiB
Go
|
package monitor
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"go-common/app/admin/main/videoup/model/archive"
|
||
|
"go-common/app/admin/main/videoup/model/manager"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
// RedisPrefix 参数:business。
|
||
|
BusPrefix = "monitor_stats_%d_"
|
||
|
// SuffixVideo 视频停留统计。参数:state
|
||
|
SuffixVideo = "%d"
|
||
|
// SuffixArc 稿件停留统计。参数:round。参数:state。
|
||
|
SuffixArc = "%d_%d"
|
||
|
RulesKey = "monitor_rules"
|
||
|
RuleIDIncKey = "monitor_rule_inc_id"
|
||
|
|
||
|
BusVideo int8 = 1
|
||
|
BusArc int8 = 2
|
||
|
|
||
|
RuleStateOK = 1
|
||
|
RuleStateDisable = 0
|
||
|
|
||
|
NotifyTypeEmail = 1
|
||
|
NotityTypeSms = 2
|
||
|
|
||
|
CompGT = ">"
|
||
|
CompLT = "<"
|
||
|
CompGET = ">="
|
||
|
CompLET = "<="
|
||
|
CompNE = "!="
|
||
|
CompE = "="
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
// RedisKeyConf 监控业务的Redis Key配置
|
||
|
RedisKeyConf = map[int8]*KeyConf{
|
||
|
BusVideo: {
|
||
|
KeyFormat: fmt.Sprintf(BusPrefix, BusVideo) + SuffixVideo,
|
||
|
KFields: map[string][]int64{
|
||
|
"state": {
|
||
|
int64(archive.VideoStatusSubmit),
|
||
|
int64(archive.VideoStatusWait),
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
BusArc: {
|
||
|
KeyFormat: fmt.Sprintf(BusPrefix, BusArc) + SuffixArc,
|
||
|
KFields: map[string][]int64{
|
||
|
"round": {
|
||
|
int64(archive.RoundAuditSecond),
|
||
|
int64(archive.RoundAuditThird),
|
||
|
int64(archive.RoundReviewFlow),
|
||
|
int64(archive.RoundReviewFirst),
|
||
|
int64(archive.RoundReviewFirstWaitTrigger),
|
||
|
int64(archive.RoundReviewSecond),
|
||
|
int64(archive.RoundTriggerClick),
|
||
|
},
|
||
|
"state": {
|
||
|
int64(archive.StateForbidFixed),
|
||
|
int64(archive.StateForbidWait),
|
||
|
int64(archive.StateOpen),
|
||
|
int64(archive.StateOrange),
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
)
|
||
|
|
||
|
type KeyConf struct {
|
||
|
KeyFormat string
|
||
|
KFields map[string][]int64
|
||
|
}
|
||
|
|
||
|
type RuleResultParams struct {
|
||
|
Type int8 `form:"type" validate:"required"`
|
||
|
Business int8 `form:"business" validate:"required"`
|
||
|
//STime utils.FormatTime `form:"stime"`
|
||
|
//ETime utils.FormatTime `form:"etime"`
|
||
|
}
|
||
|
type RuleResultData struct {
|
||
|
Rule *Rule `json:"rule"`
|
||
|
User *manager.User `json:"user"`
|
||
|
Stats *Stats `json:"stats"`
|
||
|
}
|
||
|
|
||
|
// Rule 监控规则信息
|
||
|
type Rule struct {
|
||
|
ID int64 `json:"id"`
|
||
|
Type int8 `json:"type"`
|
||
|
Business int8 `json:"business"`
|
||
|
Name string `json:"name"`
|
||
|
State int8 `json:"state"`
|
||
|
STime string `json:"s_time"`
|
||
|
ETime string `json:"e_time"`
|
||
|
RuleConf *RuleConf `json:"rule_conf"`
|
||
|
UID int64 `json:"uid"`
|
||
|
CTime string `json:"ctime"`
|
||
|
}
|
||
|
|
||
|
// RuleConf 监控方案配置结构体
|
||
|
type RuleConf struct {
|
||
|
Name string `json:"name"`
|
||
|
MoniCdt map[string]struct { //监控方案的监控条件
|
||
|
Comp string `json:"comparison"`
|
||
|
Value int64 `json:"value"`
|
||
|
} `json:"moni_cdt"`
|
||
|
NotifyCdt map[string]struct { //达到发送通知的条件
|
||
|
Comp string `json:"comparison"`
|
||
|
Value int64 `json:"value"`
|
||
|
} `json:"notify_cdt"`
|
||
|
Notify struct { //通知类型配置
|
||
|
Way int8 `json:"way"`
|
||
|
Member []string `json:"member"`
|
||
|
} `json:"notify"`
|
||
|
}
|
||
|
|
||
|
type Stats struct {
|
||
|
TotalCount int `json:"total_count"`
|
||
|
MoniCount int `json:"moni_count"`
|
||
|
MaxTime int `json:"max_time"`
|
||
|
}
|