mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2025-11-03 04:10:25 +08:00
161 lines
5.9 KiB
Go
161 lines
5.9 KiB
Go
// Copyright 2021 GoEdge CDN goedge.cdn@gmail.com. All rights reserved.
|
||
|
||
package nodeconfigs
|
||
|
||
import "github.com/iwind/TeaGo/maps"
|
||
|
||
type IPAddressThresholdItem = string
|
||
|
||
const (
|
||
IPAddressThresholdItemNodeAvgRequests IPAddressThresholdItem = "nodeAvgRequests" // 个
|
||
IPAddressThresholdItemNodeAvgTrafficOut IPAddressThresholdItem = "nodeAvgTrafficOut" // 节点下行流量 M
|
||
IPAddressThresholdItemNodeAvgTrafficIn IPAddressThresholdItem = "nodeAvgTrafficIn" // 节点上行流量 M
|
||
IPAddressThresholdItemNodeHealthCheck IPAddressThresholdItem = "nodeHealthCheck" // 节点健康检查结果
|
||
IPAddressThresholdItemGroupAvgRequests IPAddressThresholdItem = "groupAvgRequests" // 个
|
||
IPAddressThresholdItemGroupAvgTrafficIn IPAddressThresholdItem = "groupAvgTrafficIn" // 分组上行流量 M
|
||
IPAddressThresholdItemGroupAvgTrafficOut IPAddressThresholdItem = "groupAvgTrafficOut" // 分组下行流量 M
|
||
IPAddressThresholdItemClusterAvgRequests IPAddressThresholdItem = "clusterAvgRequests" // 个
|
||
IPAddressThresholdItemClusterAvgTrafficIn IPAddressThresholdItem = "clusterAvgTrafficIn" // 集群上行流量 M
|
||
IPAddressThresholdItemClusterAvgTrafficOut IPAddressThresholdItem = "clusterAvgTrafficOut" // 集群下行流量 M
|
||
IPAddressThresholdItemConnectivity IPAddressThresholdItem = "connectivity" // 0-100
|
||
)
|
||
|
||
// FindAllIPAddressThresholdItems IP相关阈值项目
|
||
func FindAllIPAddressThresholdItems() []maps.Map {
|
||
return []maps.Map{
|
||
{
|
||
"name": "节点平均请求数",
|
||
"code": IPAddressThresholdItemNodeAvgRequests,
|
||
"description": "当前节点在单位时间内接收到的平均请求数。",
|
||
"unit": "个",
|
||
},
|
||
{
|
||
"name": "节点平均下行流量",
|
||
"code": IPAddressThresholdItemNodeAvgTrafficOut,
|
||
"description": "当前节点在单位时间内发送的下行流量。",
|
||
"unit": "M",
|
||
},
|
||
{
|
||
"name": "节点平均上行流量",
|
||
"code": IPAddressThresholdItemNodeAvgTrafficIn,
|
||
"description": "当前节点在单位时间内接收的上行流量。",
|
||
"unit": "M",
|
||
},
|
||
{
|
||
"name": "节点健康检查结果",
|
||
"code": IPAddressThresholdItemNodeHealthCheck,
|
||
"description": "当前节点健康检查结果。",
|
||
"unit": "",
|
||
},
|
||
|
||
{
|
||
"name": "IP连通性",
|
||
"code": IPAddressThresholdItemConnectivity,
|
||
"description": "通过区域监控得到的当前IP地址的连通性数值,取值在0和100之间。",
|
||
"unit": "%",
|
||
},
|
||
|
||
{
|
||
"name": "分组平均请求数",
|
||
"code": IPAddressThresholdItemGroupAvgRequests,
|
||
"description": "当前节点所在分组在单位时间内接收到的平均请求数。",
|
||
"unit": "个",
|
||
},
|
||
{
|
||
"name": "分组平均下行流量",
|
||
"code": IPAddressThresholdItemGroupAvgTrafficOut,
|
||
"description": "当前节点所在分组在单位时间内发送的下行流量。",
|
||
"unit": "M",
|
||
},
|
||
{
|
||
"name": "分组平均上行流量",
|
||
"code": IPAddressThresholdItemGroupAvgTrafficIn,
|
||
"description": "当前节点所在分组在单位时间内接收的上行流量。",
|
||
"unit": "M",
|
||
},
|
||
|
||
{
|
||
"name": "集群平均请求数",
|
||
"code": IPAddressThresholdItemClusterAvgRequests,
|
||
"description": "当前节点所在集群在单位时间内接收到的平均请求数。",
|
||
"unit": "个",
|
||
},
|
||
{
|
||
"name": "集群平均下行流量",
|
||
"code": IPAddressThresholdItemClusterAvgTrafficOut,
|
||
"description": "当前节点所在集群在单位时间内发送的下行流量。",
|
||
"unit": "M",
|
||
},
|
||
{
|
||
"name": "集群平均上行流量",
|
||
"code": IPAddressThresholdItemClusterAvgTrafficIn,
|
||
"description": "当前节点所在集群在单位时间内接收的上行流量。",
|
||
"unit": "M",
|
||
},
|
||
}
|
||
}
|
||
|
||
// IPAddressThresholdConfig 阈值列表
|
||
type IPAddressThresholdConfig struct {
|
||
Id int64 `json:"id"`
|
||
Items []*IPAddressThresholdItemConfig `json:"items"`
|
||
Actions []*IPAddressThresholdActionConfig `json:"actions"`
|
||
}
|
||
|
||
// IPAddressThresholdItemConfig 阈值项目
|
||
type IPAddressThresholdItemConfig struct {
|
||
Item IPAddressThresholdItem `json:"item"`
|
||
Operator NodeValueOperator `json:"operator"`
|
||
Value float64 `json:"value"`
|
||
Duration int `json:"duration"`
|
||
DurationUnit NodeValueDurationUnit `json:"durationUnit"`
|
||
Options maps.Map `json:"options"` // 附加选项
|
||
}
|
||
|
||
type IPAddressThresholdActionConfig struct {
|
||
Action string `json:"action"`
|
||
Options maps.Map `json:"options"`
|
||
}
|
||
|
||
// IPAddressThresholdAction 动作
|
||
type IPAddressThresholdAction = string
|
||
|
||
const (
|
||
IPAddressThresholdActionUp IPAddressThresholdAction = "up" // 上线
|
||
IPAddressThresholdActionDown IPAddressThresholdAction = "down" // 下线
|
||
IPAddressThresholdActionNotify IPAddressThresholdAction = "notify" // 通知
|
||
IPAddressThresholdActionSwitch IPAddressThresholdAction = "switch" // 切换到备用IP
|
||
IPAddressThresholdActionWebHook IPAddressThresholdAction = "webHook" // 调用外部Webhook
|
||
)
|
||
|
||
// FindAllIPAddressThresholdActions IP相关阈值动作
|
||
func FindAllIPAddressThresholdActions() []maps.Map {
|
||
return []maps.Map{
|
||
{
|
||
"name": "上线",
|
||
"code": IPAddressThresholdActionUp,
|
||
"description": "上线当前IP。",
|
||
},
|
||
{
|
||
"name": "下线",
|
||
"code": IPAddressThresholdActionDown,
|
||
"description": "下线当前IP。",
|
||
},
|
||
{
|
||
"name": "通知",
|
||
"code": IPAddressThresholdActionNotify,
|
||
"description": "发送已达到阈值通知。",
|
||
},
|
||
{
|
||
"name": "切换",
|
||
"code": IPAddressThresholdActionSwitch,
|
||
"description": "在DNS中记录中将IP切换到指定的备用IP。",
|
||
},
|
||
{
|
||
"name": "WebHook",
|
||
"code": IPAddressThresholdActionWebHook,
|
||
"description": "调用外部的WebHook。",
|
||
},
|
||
}
|
||
}
|