rename severity to priority

This commit is contained in:
liugq 2022-07-12 16:35:20 +08:00
parent a7cc47ec0b
commit 62d10346cc
6 changed files with 20 additions and 22 deletions

View File

@ -24,9 +24,9 @@ type ConditionItem struct {
//MetricName string `json:"metric"` //MetricName string `json:"metric"`
MinimumPeriodMatch int `json:"minimum_period_match"` MinimumPeriodMatch int `json:"minimum_period_match"`
Operator string `json:"operator"` Operator string `json:"operator"`
Values []string `json:"values"` Values []string `json:"values"`
Severity string `json:"severity"` Priority string `json:"priority"`
Expression string `json:"expression,omitempty"` Expression string `json:"expression,omitempty"`
} }
func (cond *ConditionItem) GenerateConditionExpression()(conditionExpression string, err error){ func (cond *ConditionItem) GenerateConditionExpression()(conditionExpression string, err error){
@ -68,9 +68,7 @@ type ConditionResultItem struct {
RelationValues map[string]interface{} `json:"relation_values"` RelationValues map[string]interface{} `json:"relation_values"`
} }
type Severity string var PriorityWeights = map[string]int{
var SeverityWeights = map[string]int{
"info": 1, "info": 1,
"low": 2, "low": 2,
"medium": 3, "medium": 3,

View File

@ -55,7 +55,7 @@ func TestCreateRule( t *testing.T) {
//Conditions: Condition{ //Conditions: Condition{
// Operator: "any", // Operator: "any",
// Items: []ConditionItem{ // Items: []ConditionItem{
// { MinimumPeriodMatch: 1, Operator: "gte", Values: []string{"1"}, Severity: "error", AlertMessage: "集群健康状态为 Red"}, // { MinimumPeriodMatch: 1, Operator: "gte", Values: []string{"1"}, Priority: "error", AlertMessage: "集群健康状态为 Red"},
// }, // },
//}, //},
@ -71,7 +71,7 @@ func TestCreateRule( t *testing.T) {
Conditions: Condition{ Conditions: Condition{
Operator: "any", Operator: "any",
Items: []ConditionItem{ Items: []ConditionItem{
{MinimumPeriodMatch: 1, Operator: "lte", Values: []string{"76"}, Severity: "error", Message: "磁盘可用率小于10%"}, {MinimumPeriodMatch: 1, Operator: "lte", Values: []string{"76"}, Priority: "error", Message: "磁盘可用率小于10%"},
}, },
}, },

View File

@ -152,7 +152,7 @@ func (h *AlertAPI) getAlertStats(w http.ResponseWriter, req *http.Request, ps ht
} }
} }
} }
for severity, _ := range alerting.SeverityWeights { for severity, _ := range alerting.PriorityWeights {
if _, ok := severityAlerts[severity]; !ok { if _, ok := severityAlerts[severity]; !ok {
severityAlerts[severity] = 0 severityAlerts[severity] = 0
} }

View File

@ -865,7 +865,7 @@ func getRuleMetricData( rule *alerting.Rule, filterParam *alerting.FilterParam)
// Conditions: alerting.Condition{ // Conditions: alerting.Condition{
// Operator: "any", // Operator: "any",
// Items: []alerting.ConditionItem{ // Items: []alerting.ConditionItem{
// {MinimumPeriodMatch: 5, Operator: "gte", Values: []string{"90"}, Severity: "error", AlertMessage: "cpu使用率大于90%"}, // {MinimumPeriodMatch: 5, Operator: "gte", Values: []string{"90"}, Priority: "error", AlertMessage: "cpu使用率大于90%"},
// }, // },
// }, // },
// //

View File

@ -513,7 +513,7 @@ func (engine *Engine) CheckCondition(rule *alerting.Rule)(*alerting.ConditionRes
for idx, targetData := range targetMetricData { for idx, targetData := range targetMetricData {
if idx == 0 { if idx == 0 {
sort.Slice(rule.Conditions.Items, func(i, j int) bool { sort.Slice(rule.Conditions.Items, func(i, j int) bool {
return alerting.SeverityWeights[rule.Conditions.Items[i].Severity] > alerting.SeverityWeights[rule.Conditions.Items[j].Severity] return alerting.PriorityWeights[rule.Conditions.Items[i].Priority] > alerting.PriorityWeights[rule.Conditions.Items[j].Priority]
}) })
} }
LoopCondition: LoopCondition:
@ -669,11 +669,11 @@ func (engine *Engine) Do(rule *alerting.Rule) error {
alertItem.State = alerting.AlertStateAlerting alertItem.State = alerting.AlertStateAlerting
var ( var (
severity = conditionResults[0].ConditionItem.Severity severity = conditionResults[0].ConditionItem.Priority
) )
for _, conditionResult := range conditionResults { for _, conditionResult := range conditionResults {
if alerting.SeverityWeights[severity] < alerting.SeverityWeights[conditionResult.ConditionItem.Severity] { if alerting.PriorityWeights[severity] < alerting.PriorityWeights[conditionResult.ConditionItem.Priority] {
severity = conditionResult.ConditionItem.Severity severity = conditionResult.ConditionItem.Priority
} }
} }
paramsCtx = newParameterCtx(rule, checkResults, util.MapStr{ paramsCtx = newParameterCtx(rule, checkResults, util.MapStr{
@ -826,9 +826,9 @@ func newParameterCtx(rule *alerting.Rule, checkResults *alerting.ConditionResult
severity string severity string
) )
if len(checkResults.ResultItems) > 0 { if len(checkResults.ResultItems) > 0 {
severity = checkResults.ResultItems[0].ConditionItem.Severity severity = checkResults.ResultItems[0].ConditionItem.Priority
sort.Slice(checkResults.ResultItems, func(i, j int) bool { sort.Slice(checkResults.ResultItems, func(i, j int) bool {
if alerting.SeverityWeights[checkResults.ResultItems[i].ConditionItem.Severity] > alerting.SeverityWeights[checkResults.ResultItems[j].ConditionItem.Severity] { if alerting.PriorityWeights[checkResults.ResultItems[i].ConditionItem.Priority] > alerting.PriorityWeights[checkResults.ResultItems[j].ConditionItem.Priority] {
return true return true
} }
return false return false
@ -851,7 +851,7 @@ func newParameterCtx(rule *alerting.Rule, checkResults *alerting.ConditionResult
} }
conditionParams = append(conditionParams, util.MapStr{ conditionParams = append(conditionParams, util.MapStr{
alerting2.ParamThreshold: resultItem.ConditionItem.Values, alerting2.ParamThreshold: resultItem.ConditionItem.Values,
alerting2.Severity: resultItem.ConditionItem.Severity, alerting2.Severity: resultItem.ConditionItem.Priority,
alerting2.ParamGroupValues: resultItem.GroupValues, alerting2.ParamGroupValues: resultItem.GroupValues,
alerting2.ParamIssueTimestamp: resultItem.IssueTimestamp, alerting2.ParamIssueTimestamp: resultItem.IssueTimestamp,
alerting2.ParamResultValue: resultItem.ResultValue, alerting2.ParamResultValue: resultItem.ResultValue,

View File

@ -65,8 +65,8 @@ func TestEngine( t *testing.T) {
Conditions: alerting.Condition{ Conditions: alerting.Condition{
Operator: "any", Operator: "any",
Items: []alerting.ConditionItem{ Items: []alerting.ConditionItem{
{MinimumPeriodMatch: 1, Operator: "lte", Values: []string{"10"}, Severity: "error"}, {MinimumPeriodMatch: 1, Operator: "lte", Values: []string{"10"}, Priority: "error"},
{MinimumPeriodMatch: 1, Operator: "lte", Values: []string{"20"}, Severity: "warning"}, {MinimumPeriodMatch: 1, Operator: "lte", Values: []string{"20"}, Priority: "warning"},
}, },
}, },
@ -107,7 +107,7 @@ func TestEngine( t *testing.T) {
// t.Fatal(err) // t.Fatal(err)
//} //}
sort.Slice(rule.Conditions.Items, func(i, j int) bool { sort.Slice(rule.Conditions.Items, func(i, j int) bool {
return alerting.SeverityWeights[rule.Conditions.Items[i].Severity] > alerting.SeverityWeights[rule.Conditions.Items[j].Severity] return alerting.PriorityWeights[rule.Conditions.Items[i].Priority] > alerting.PriorityWeights[rule.Conditions.Items[j].Priority]
}) })
fmt.Println(rule.Conditions.Items) fmt.Println(rule.Conditions.Items)
@ -152,7 +152,7 @@ func TestGeneratePercentilesAggQuery(t *testing.T) {
// Conditions: alerting.Condition{ // Conditions: alerting.Condition{
// Operator: "any", // Operator: "any",
// Items: []alerting.ConditionItem{ // Items: []alerting.ConditionItem{
// {MinimumPeriodMatch: 5, Operator: "gte", Values: []string{"90"}, Severity: "error", AlertMessage: "cpu使用率大于90%"}, // {MinimumPeriodMatch: 5, Operator: "gte", Values: []string{"90"}, Priority: "error", AlertMessage: "cpu使用率大于90%"},
// }, // },
// }, // },
// //
@ -212,7 +212,7 @@ func TestGeneratePercentilesAggQuery(t *testing.T) {
Conditions: alerting.Condition{ Conditions: alerting.Condition{
Operator: "any", Operator: "any",
Items: []alerting.ConditionItem{ Items: []alerting.ConditionItem{
{MinimumPeriodMatch: 1, Operator: "gte", Values: []string{"10"}, Severity: "warning"}, {MinimumPeriodMatch: 1, Operator: "gte", Values: []string{"10"}, Priority: "warning"},
}, },
}, },