Files
EdgeCommon/pkg/nodeconfigs/node_value_thresholds.go

154 lines
5.6 KiB
Go
Raw Normal View History

2021-09-12 20:21:27 +08:00
// Copyright 2021 Liuxiangchao iwind.liu@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
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
2021-09-12 20:21:27 +08:00
)
2021-09-14 15:27:59 +08:00
// FindAllIPAddressThresholdItems IP相关阈值项目
func FindAllIPAddressThresholdItems() []maps.Map {
return []maps.Map{
{
"name": "节点平均请求数",
2021-09-14 15:27:59 +08:00
"code": IPAddressThresholdItemNodeAvgRequests,
"description": "当前节点在单位时间内接收到的平均请求数。",
"unit": "个",
},
{
"name": "节点平均下行流量",
2021-09-14 15:27:59 +08:00
"code": IPAddressThresholdItemNodeAvgTrafficOut,
"description": "当前节点在单位时间内发送的下行流量。",
"unit": "M",
},
{
"name": "节点平均上行流量",
2021-09-14 15:27:59 +08:00
"code": IPAddressThresholdItemNodeAvgTrafficIn,
"description": "当前节点在单位时间内接收的上行流量。",
"unit": "M",
},
{
"name": "IP连通性",
2021-09-14 15:27:59 +08:00
"code": IPAddressThresholdItemConnectivity,
"description": "通过区域监控得到的当前IP地址的连通性数值取值在0和100之间。",
"unit": "%",
},
{
"name": "分组平均请求数",
2021-09-14 15:27:59 +08:00
"code": IPAddressThresholdItemGroupAvgRequests,
"description": "当前节点所在分组在单位时间内接收到的平均请求数。",
"unit": "个",
},
{
"name": "分组平均下行流量",
2021-09-14 15:27:59 +08:00
"code": IPAddressThresholdItemGroupAvgTrafficOut,
"description": "当前节点所在分组在单位时间内发送的下行流量。",
"unit": "M",
},
{
"name": "分组平均上行流量",
2021-09-14 15:27:59 +08:00
"code": IPAddressThresholdItemGroupAvgTrafficIn,
"description": "当前节点所在分组在单位时间内接收的上行流量。",
"unit": "M",
},
{
"name": "集群平均请求数",
2021-09-14 15:27:59 +08:00
"code": IPAddressThresholdItemClusterAvgRequests,
"description": "当前节点所在集群在单位时间内接收到的平均请求数。",
"unit": "个",
},
{
"name": "集群平均下行流量",
2021-09-14 15:27:59 +08:00
"code": IPAddressThresholdItemClusterAvgTrafficOut,
"description": "当前节点所在集群在单位时间内发送的下行流量。",
"unit": "M",
},
{
"name": "集群平均上行流量",
2021-09-14 15:27:59 +08:00
"code": IPAddressThresholdItemClusterAvgTrafficIn,
"description": "当前节点所在集群在单位时间内接收的上行流量。",
"unit": "M",
},
}
}
2021-09-12 20:21:27 +08:00
// NodeValueThresholdConfig 阈值列表
type NodeValueThresholdConfig struct {
Id int64 `json:"id"`
Items []*NodeValueThresholdItemConfig `json:"items"`
Actions []*NodeValueThresholdActionConfig `json:"actions"`
}
// NodeValueThresholdItemConfig 阈值项目
type NodeValueThresholdItemConfig struct {
Item NodeValueItem `json:"item"`
Operator NodeValueOperator `json:"operator"`
Value float64 `json:"value"`
Duration int `json:"duration"`
DurationUnit NodeValueDurationUnit `json:"durationUnit"`
Options maps.Map `json:"options"` // 附加选项
}
type NodeValueThresholdActionConfig struct {
Action string `json:"action"`
Options maps.Map `json:"options"`
}
2021-09-14 15:27:59 +08:00
// IPAddressThresholdAction 动作
type IPAddressThresholdAction = string
2021-09-12 20:21:27 +08:00
const (
2021-09-14 15:27:59 +08:00
IPAddressThresholdActionUp IPAddressThresholdAction = "up" // 上线
IPAddressThresholdActionDown IPAddressThresholdAction = "down" // 下线
IPAddressThresholdActionNotify IPAddressThresholdAction = "notify" // 通知
IPAddressThresholdActionSwitch IPAddressThresholdAction = "switch" // 切换到备用IP
IPAddressThresholdActionWebHook IPAddressThresholdAction = "webHook" // 调用外部Webhook
2021-09-12 20:21:27 +08:00
)
2021-09-14 15:27:59 +08:00
// 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。",
},
}
}