You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.0 KiB
123 lines
3.0 KiB
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"` |
|
}
|
|
|